소개
i18n-agent 번역 API에 오신 것을 환영합니다! 문화적 적응을 갖춘 AI 기반 번역 서비스
이 API 문서는 사용 가능한 모든 엔드포인트, 인증 방법, 요청/응답 형식 및 오류 코드에 대한 포괄적인 정보를 제공합니다.
기본 URL
| 환경 | URL |
|---|---|
| 개발 | http://localhost:8000 |
| 프로덕션 | `https://api.i18nagent.크레딧 시스템** - 사용량 기반 가격 모델 |
- 🤖 AI 기반 - 정확한 번역을 위해 고급 LLM 사용
인증
인증하려면 다음 코드를 사용하세요:
# With shell, you can just pass the correct header with each request
curl "api_endpoint_here" \
-H "Authorization: Bearer i18n_your_api_key_here"
const headers = {
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
};
fetch('api_endpoint_here', { headers })
.then(response => response.json())
.then(data => console.log(data));
import requests
headers = {
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
}
response = requests.get('api_endpoint_here', headers=headers)
print(response.json())
package main
import (
"net/http"
)
func main() {
client := &http.Client{}
req, _ := http.NewRequest("GET", "api_endpoint_here", nil)
req.Header.Add("Authorization", "Bearer i18n_your_api_key_here")
resp, _ := client.Do(req)
defer resp.Body.Close()
}
반드시
i18n_your_api_key_here를 API 키로 대체하세요.
i18n-agent API는 API 키를 사용하여 API 액세스를 허용합니다. 계정 대시보드.)에서 API 키를 얻을 수 있습니다.
API 키는 다음과 같은 헤더로 서버에 대한 모든 API 요청에 포함되어야 합니다:
Authorization: Bearer i18n_your_api_key_here
엔드포인트
크레딧
팀 크레딧 가져오기
GET /credits
인증된 팀의 현재 크레딧 잔액 가져오기
curl -X GET "https://api.i18nagent.ai/credits" \
-H "Authorization: Bearer i18n_your_api_key_here" \
-H "Content-Type: application/json"
const response = await fetch('https://api.i18nagent.ai/credits', {
method: 'GET',
headers: {
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
}
});
const data = await response.json();
console.log(data);
import requests
import json
response = requests.get(
'https://api.i18nagent.ai/credits',
headers={
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
}
)
print(response.json())
package main
import (
"bytes"
"encoding/json"
"net/http"
)
func main() {
client := &http.Client{}
req, _ := http.NewRequest("GET", "https://api.i18nagent.ai/credits", )
req.Header.Add("Authorization", "Bearer i18n_your_api_key_here")
req.Header.Add("Content-Type", "application/json")
resp, _ := client.Do(req)
defer resp.Body.Close()
}
위 명령은 다음과 같은 JSON 구조를 반환합니다:
{
"success": true,
"data": {
"teamId": "team_123",
"teamName": "My Team",
"credits": 125.5,
"userId": "user_456"
},
"metadata": {
"timestamp": "2024-01-15T12:00:00.000Z"
}
}
Response Fields
| Field | Type | Description |
|---|---|---|
| success | boolean | Whether the request was successful |
| data | object | |
| data.teamId | string | Team identifier |
| data.teamName | string | Team name |
| data.credits | number | Current credit balance |
| data.userId | string | User identifier |
| metadata | object | |
| metadata.timestamp | string | Response timestamp |
언어
지원되는 언어 목록
GET /languages
품질 등급이 있는 모든 지원 언어 목록 가져오기
curl -X GET "https://api.i18nagent.ai/languages" \
-H "Authorization: Bearer i18n_your_api_key_here" \
-H "Content-Type: application/json"
const response = await fetch('https://api.i18nagent.ai/languages', {
method: 'GET',
headers: {
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
}
});
const data = await response.json();
console.log(data);
import requests
import json
response = requests.get(
'https://api.i18nagent.ai/languages',
headers={
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
}
)
print(response.json())
package main
import (
"bytes"
"encoding/json"
"net/http"
)
func main() {
client := &http.Client{}
req, _ := http.NewRequest("GET", "https://api.i18nagent.ai/languages", )
req.Header.Add("Authorization", "Bearer i18n_your_api_key_here")
req.Header.Add("Content-Type", "application/json")
resp, _ := client.Do(req)
defer resp.Body.Close()
}
위 명령은 다음과 같은 JSON 구조를 반환합니다:
{
"languages": [
{
"code": "es",
"name": "Spanish",
"quality": "high"
}
]
}
Response Fields
| Field | Type | Description |
|---|---|---|
| languages | array |
번역 작업
번역 기록 가져오기
GET /translations
상태, 유형, 대상 언어 및 날짜 범위에 대한 선택적 필터가 있는 번역 작업의 페이지 매김된 목록 가져오기
curl -X GET "https://api.i18nagent.ai/translations" \
-H "Authorization: Bearer i18n_your_api_key_here" \
-H "Content-Type: application/json"
const response = await fetch('https://api.i18nagent.ai/translations', {
method: 'GET',
headers: {
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
}
});
const data = await response.json();
console.log(data);
import requests
import json
response = requests.get(
'https://api.i18nagent.ai/translations',
headers={
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
}
)
print(response.json())
package main
import (
"bytes"
"encoding/json"
"net/http"
)
func main() {
client := &http.Client{}
req, _ := http.NewRequest("GET", "https://api.i18nagent.ai/translations", )
req.Header.Add("Authorization", "Bearer i18n_your_api_key_here")
req.Header.Add("Content-Type", "application/json")
resp, _ := client.Do(req)
defer resp.Body.Close()
}
위 명령은 다음과 같은 JSON 구조를 반환합니다:
{
"translations": [
{
"id": "translation_job_id",
"type": "TEXT",
"fileName": "file_name_(for_file_translations)",
"fileType": "file_type_(for_file_translations)",
"targetLanguages": [
"string"
],
"status": "PENDING",
"progress": 0,
"wordCount": 0,
"creditsRequired": 0,
"createdAt": "2024-01-15T12:00:00.000Z",
"startedAt": "2024-01-15T12:00:00.000Z",
"completedAt": "2024-01-15T12:00:00.000Z",
"user": {}
}
],
"pagination": {
"page": 0,
"limit": 0,
"total": 0,
"totalPages": 0
}
}
쿼리 매개변수
| 매개변수 | 필수 | 설명 |
|---|---|---|
| page | No | Page number for pagination |
| limit | No | Number of items per page |
| status | No | Filter by translation status |
| type | No | Filter by translation type |
| targetLanguages | No | Comma-separated list of target language codes to filter by |
| fromDate | No | Filter translations created after this date |
| toDate | No | Filter translations created before this date |
Response Fields
| Field | Type | Description |
|---|---|---|
| translations | array | |
| pagination | object | |
| pagination.page | integer | |
| pagination.limit | integer | |
| pagination.total | integer | |
| pagination.totalPages | integer |
번역 세부 정보 가져오기
GET /translations/{id}
ID로 특정 번역의 세부 정보 가져오기
curl -X GET "https://api.i18nagent.ai/translations/{id}" \
-H "Authorization: Bearer i18n_your_api_key_here" \
-H "Content-Type: application/json"
const response = await fetch('https://api.i18nagent.ai/translations/{id}', {
method: 'GET',
headers: {
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
}
});
const data = await response.json();
console.log(data);
import requests
import json
response = requests.get(
'https://api.i18nagent.ai/translations/{id}',
headers={
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
}
)
print(response.json())
package main
import (
"bytes"
"encoding/json"
"net/http"
)
func main() {
client := &http.Client{}
req, _ := http.NewRequest("GET", "https://api.i18nagent.ai/translations/{id}", )
req.Header.Add("Authorization", "Bearer i18n_your_api_key_here")
req.Header.Add("Content-Type", "application/json")
resp, _ := client.Do(req)
defer resp.Body.Close()
}
위 명령은 다음과 같은 JSON 구조를 반환합니다:
{
"id": "translation_job_id",
"type": "TEXT",
"fileName": "original_file_name_(for_file_translations)",
"fileType": "file_type_(json,_yaml,_etc",
"fileSize": 0,
"targetLanguages": [
"string"
],
"context": "translation_context_or_instructions",
"wordCount": 0,
"creditsRequired": 0,
"status": "PENDING",
"progress": 0,
"errorMessage": "error_message_if_translation_failed",
"translatedFiles": {},
"createdAt": "2024-01-15T12:00:00.000Z",
"startedAt": "2024-01-15T12:00:00.000Z",
"completedAt": "2024-01-15T12:00:00.000Z",
"user": {}
}
쿼리 매개변수
| 매개변수 | 필수 | 설명 |
|---|---|---|
| id | Yes | Translation ID |
Response Fields
| Field | Type | Description |
|---|---|---|
| id | string | Translation job ID |
| type | string | Type of translation job |
| fileName | string | Original file name (for file translations) |
| fileType | string | File type (json, yaml, etc.) |
| fileSize | integer | File size in bytes |
| targetLanguages | array | Target languages for translation |
| context | string | Translation context or instructions |
| wordCount | integer | Number of words in source content |
| creditsRequired | number | Credits required for this translation |
| status | string | Current status of the translation |
| progress | integer | Progress percentage (0-100) |
| errorMessage | string | Error message if translation failed |
| translatedFiles | object | Translated file data (when completed) |
| createdAt | string | When the job was created |
| startedAt | string | When processing started |
| completedAt | string | When the job was completed |
| user | object | User who created the translation |
번역 상태 가져오기
GET /translations/{id}/status
진행률, 경과 시간, 예상 남은 시간, 체크포인트 정보, 다국어 번역의 부분 완료, 완료된 결과에 대한 사전 서명된 다운로드 URL을 포함한 상세 진행 상황 추적을 통해 번역 작업의 실시간 상태를 가져옵니다.
curl -X GET "https://api.i18nagent.ai/translations/{id}/status" \
-H "Authorization: Bearer i18n_your_api_key_here" \
-H "Content-Type: application/json"
const response = await fetch('https://api.i18nagent.ai/translations/{id}/status', {
method: 'GET',
headers: {
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
}
});
const data = await response.json();
console.log(data);
import requests
import json
response = requests.get(
'https://api.i18nagent.ai/translations/{id}/status',
headers={
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
}
)
print(response.json())
package main
import (
"bytes"
"encoding/json"
"net/http"
)
func main() {
client := &http.Client{}
req, _ := http.NewRequest("GET", "https://api.i18nagent.ai/translations/{id}/status", )
req.Header.Add("Authorization", "Bearer i18n_your_api_key_here")
req.Header.Add("Content-Type", "application/json")
resp, _ := client.Do(req)
defer resp.Body.Close()
}
위 명령은 다음과 같은 JSON 구조를 반환합니다:
{
"id": "translation_job_id",
"status": "PENDING",
"statusText": "localized_human-readable_status_message",
"progress": 0,
"elapsedTime": "120 seconds",
"estimatedTimeRemaining": "45 seconds",
"message": "Translation in progress... 65% complete",
"chunks": {
"completed": 0,
"total": 0
},
"lastCheckpointId": "opaque_checkpoint_id_for_the_last_saved_checkpoint_(can_be_used_to_resume)",
"checkpointDescription": "Localization (65% complete, chunk 60%)",
"completedLanguages": [
"es",
"fr",
"de"
],
"partialCompletionMessage": "3 language(s) completed: es, fr, de",
"downloadUrls": {},
"createdAt": "2024-01-15T12:00:00.000Z",
"startedAt": "2024-01-15T12:00:00.000Z",
"completedAt": "2024-01-15T12:00:00.000Z",
"metadata": {},
"result": {},
"error": "error_message_(only_when_failed)"
}
쿼리 파라미터
| 파라미터 | 필수 | 설명 |
|---|---|---|
| id | Yes | Translation ID |
Response Fields
| Field | Type | Description |
|---|---|---|
| id | string | Translation job ID |
| status | string | Current status |
| statusText | string | Localized human-readable status message |
| progress | integer | Progress percentage (0-100) |
| elapsedTime | string | Time elapsed since job started processing |
| estimatedTimeRemaining | string | Estimated time remaining for completion |
| message | string | Status message or error details |
| chunks | object | Batch/chunk processing progress (for large translations) |
| chunks.completed | integer | Number of chunks completed |
| chunks.total | integer | Total number of chunks |
| lastCheckpointId | string | Opaque checkpoint ID for the last saved checkpoint (can be used to resume) |
| checkpointDescription | string | Human-readable description of current checkpoint progress |
| completedLanguages | array | Array of language codes that have been completed (for multi-language translations with partial completion) |
| partialCompletionMessage | string | Message describing partial completion status |
| downloadUrls | object | Presigned download URLs for completed translations, organized by language code. Example: {"es": "https://...", "fr": "https://..."}. URLs expire after 1 hour. This is the primary method for accessing completed translation files. |
| createdAt | string | When the job was created |
| startedAt | string | When the job started processing |
| completedAt | string | When the job was completed |
| metadata | object | Additional metadata about the translation |
| result | object | Translation result (only when completed) |
| error | string | Error message (only when failed) |
번역 결과 다운로드
GET /translations/{id}/result
번역된 콘텐츠를 다운로드합니다.
curl -X GET "https://api.i18nagent.ai/translations/{id}/result" \
-H "Authorization: Bearer i18n_your_api_key_here" \
-H "Content-Type: application/json"
const response = await fetch('https://api.i18nagent.ai/translations/{id}/result', {
method: 'GET',
headers: {
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
}
});
const data = await response.json();
console.log(data);
import requests
import json
response = requests.get(
'https://api.i18nagent.ai/translations/{id}/result',
headers={
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
}
)
print(response.json())
package main
import (
"bytes"
"encoding/json"
"net/http"
)
func main() {
client := &http.Client{}
req, _ := http.NewRequest("GET", "https://api.i18nagent.ai/translations/{id}/result", )
req.Header.Add("Authorization", "Bearer i18n_your_api_key_here")
req.Header.Add("Content-Type", "application/json")
resp, _ := client.Do(req)
defer resp.Body.Close()
}
위 명령어는 다음과 같이 JSON으로 구성됩니다:
{
"translations": [
{
"original": "Hello, world!",
"translated": "¡Hola, mundo!",
"confidence": 0.98
}
],
"metadata": {
"sourceLanguage": "en",
"targetLanguage": "es",
"wordCount": 2,
"creditsUsed": 0.002,
"timestamp": "2024-01-15T12:00:00.000Z"
}
}
쿼리 파라미터
| 파라미터 | 필수 | 설명 |
|---|---|---|
| id | Yes | Translation ID |
| language | No | Language code for specific language result |
원본 파일 다운로드
GET /translations/{id}/original
원본 업로드된 파일을 다운로드합니다.
curl -X GET "https://api.i18nagent.ai/translations/{id}/original" \
-H "Authorization: Bearer i18n_your_api_key_here" \
-H "Content-Type: application/json"
const response = await fetch('https://api.i18nagent.ai/translations/{id}/original', {
method: 'GET',
headers: {
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
}
});
const data = await response.json();
console.log(data);
import requests
import json
response = requests.get(
'https://api.i18nagent.ai/translations/{id}/original',
headers={
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
}
)
print(response.json())
package main
import (
"bytes"
"encoding/json"
"net/http"
)
func main() {
client := &http.Client{}
req, _ := http.NewRequest("GET", "https://api.i18nagent.ai/translations/{id}/original", )
req.Header.Add("Authorization", "Bearer i18n_your_api_key_here")
req.Header.Add("Content-Type", "application/json")
resp, _ := client.Do(req)
defer resp.Body.Close()
}
위 명령어는 다음과 같이 JSON으로 구성됩니다:
{
"translations": [
{
"original": "Hello, world!",
"translated": "¡Hola, mundo!",
"confidence": 0.98
}
],
"metadata": {
"sourceLanguage": "en",
"targetLanguage": "es",
"wordCount": 2,
"creditsUsed": 0.002,
"timestamp": "2024-01-15T12:00:00.000Z"
}
}
쿼리 파라미터
| 파라미터 | 필수 | 설명 |
|---|---|---|
| id | Yes | Translation ID |
체크포인트에서 번역 재개
POST /translations/{id}/resume
실패했거나 중단된 번역을 특정 체크포인트에서 또는 마지막으로 성공한 체크포인트에서 자동으로 재개합니다
curl -X POST "https://api.i18nagent.ai/translations/{id}/resume" \
-H "Authorization: Bearer i18n_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"texts": [
"Hello, world!",
"Welcome to our service"
],
"targetLanguage": "es",
"targetAudience": "general",
"industry": "technology",
"sourceLanguage": "en",
"region": "Mexico",
"notes": "Keep technical terms in English, use formal tone"
}'
const response = await fetch('https://api.i18nagent.ai/translations/{id}/resume', {
method: 'POST',
headers: {
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
},
body: JSON.stringify({
"texts": [
"Hello, world!",
"Welcome to our service"
],
"targetLanguage": "es",
"targetAudience": "general",
"industry": "technology",
"sourceLanguage": "en",
"region": "Mexico",
"notes": "Keep technical terms in English, use formal tone"
})
});
const data = await response.json();
console.log(data);
import requests
import json
response = requests.post(
'https://api.i18nagent.ai/translations/{id}/resume',
headers={
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
},
json={
"texts": [
"Hello, world!",
"Welcome to our service"
],
"targetLanguage": "es",
"targetAudience": "general",
"industry": "technology",
"sourceLanguage": "en",
"region": "Mexico",
"notes": "Keep technical terms in English, use formal tone"
}
)
print(response.json())
package main
import (
"bytes"
"encoding/json"
"net/http"
)
func main() {
client := &http.Client{}
data := map[string]interface{}{
"texts": []string{"Hello, world!", "Welcome to our service"},
"targetLanguage": "es",
"targetAudience": "general",
"industry": "technology",
}
jsonData, _ := json.Marshal(data)
req, _ := http.NewRequest("POST", "https://api.i18nagent.ai/translations/{id}/resume", bytes.NewBuffer(jsonData))
req.Header.Add("Authorization", "Bearer i18n_your_api_key_here")
req.Header.Add("Content-Type", "application/json")
resp, _ := client.Do(req)
defer resp.Body.Close()
}
위 명령어는 다음과 같은 JSON 형식으로 반환합니다:
{
"success": true,
"message": "Translation resume initiated",
"id": "translation_job_id",
"checkpointId": "the_checkpoint_id_from_which_the_translation_is_resuming",
"description": "Resuming from last checkpoint",
"status": "PROCESSING"
}
쿼리 매개변수
| 매개변수 | 필수 | 설명 |
|---|---|---|
| id | Yes | Translation ID |
요청 본문 매개변수
| 매개변수 | 유형 | 필수 | 설명 |
|---|---|---|---|
| checkpointId | string | No | Opaque checkpoint ID to resume from (obtained from status endpoint). If not provided and autoDetect is true, will resume from last successful checkpoint. |
| continueToEnd | boolean | No | Whether to continue processing all remaining content after resuming (default: true) |
| autoDetect | boolean | No | Automatically detect and resume from the last successful checkpoint if checkpointId is not provided (default: true) |
Response Fields
| Field | Type | Description |
|---|---|---|
| success | boolean | Whether the resume was successfully initiated |
| message | string | Status message |
| id | string | Translation job ID |
| checkpointId | string | The checkpoint ID from which the translation is resuming |
| description | string | Human-readable description of the resume action |
| status | string | Current status of the translation after resuming |
활성 번역 작업 가져오기
GET /translations/jobs/active
현재 활성 번역 작업 목록 가져오기
curl -X GET "https://api.i18nagent.ai/translations/jobs/active" \
-H "Authorization: Bearer i18n_your_api_key_here" \
-H "Content-Type: application/json"
const response = await fetch('https://api.i18nagent.ai/translations/jobs/active', {
method: 'GET',
headers: {
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
}
});
const data = await response.json();
console.log(data);
import requests
import json
response = requests.get(
'https://api.i18nagent.ai/translations/jobs/active',
headers={
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
}
)
print(response.json())
package main
import (
"bytes"
"encoding/json"
"net/http"
)
func main() {
client := &http.Client{}
req, _ := http.NewRequest("GET", "https://api.i18nagent.ai/translations/jobs/active", )
req.Header.Add("Authorization", "Bearer i18n_your_api_key_here")
req.Header.Add("Content-Type", "application/json")
resp, _ := client.Do(req)
defer resp.Body.Close()
}
위 명령은 다음과 같은 JSON 형식으로 반환합니다:
{
"activeJobs": [
{
"id": "string",
"type": "FILE",
"fileName": "string",
"fileType": "string",
"text": "string",
"targetLanguages": [
"string"
],
"status": "PENDING",
"progress": 0,
"wordCount": 0,
"creditsRequired": 0,
"createdAt": "string",
"startedAt": "string",
"originalPreview": "string",
"user": {
"id": "string",
"name": "string",
"email": "string"
}
}
]
}
Response Fields
| Field | Type | Description |
|---|---|---|
| activeJobs | array |
번역 결과 다운로드
POST /translations/{jobId}/download
완료된 번역 결과를 다운로드합니다. 언어별로 정리된 사전 서명된 다운로드 URL을 반환합니다. URL은 24시간 후에 만료됩니다.
curl -X POST "https://api.i18nagent.ai/translations/{jobId}/download" \
-H "Authorization: Bearer i18n_your_api_key_here" \
-H "Content-Type: application/json"
const response = await fetch('https://api.i18nagent.ai/translations/{jobId}/download', {
method: 'POST',
headers: {
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
}
});
const data = await response.json();
console.log(data);
import requests
import json
response = requests.post(
'https://api.i18nagent.ai/translations/{jobId}/download',
headers={
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
}
)
print(response.json())
package main
import (
"bytes"
"encoding/json"
"net/http"
)
func main() {
client := &http.Client{}
req, _ := http.NewRequest("POST", "https://api.i18nagent.ai/translations/{jobId}/download", )
req.Header.Add("Authorization", "Bearer i18n_your_api_key_here")
req.Header.Add("Content-Type", "application/json")
resp, _ := client.Do(req)
defer resp.Body.Close()
}
위 명령은 다음과 같은 JSON 형식으로 반환합니다:
{
"jobId": "translation_job_id",
"fileName": "original_file_name",
"targetLanguages": [
"string"
],
"requestedLanguages": [
"string"
],
"downloadUrls": {},
"message": "Translation files ready for download. Use downloadUrls to access each language file.",
"expiresIn": "24 hours",
"partialFailure": true,
"failedLanguages": [
"string"
],
"errorMessage": "error_message_for_failed_languages",
"warning": "Translation completed partially. 2 of 5 language(s) failed: ja, zh-CN"
}
쿼리 매개변수
| 매개변수 | 필수 | 설명 |
|---|---|---|
| jobId | Yes | Translation job ID |
Response Fields
| Field | Type | Description |
|---|---|---|
| jobId | string | Translation job ID |
| fileName | string | Original file name |
| targetLanguages | array | Completed target languages available for download |
| requestedLanguages | array | Originally requested target languages |
| downloadUrls | object | Presigned download URLs organized by language code. Example: {"es": {"url": "https://...", "key": "..."}, "fr": {"url": "https://...", "key": "..."}} |
| message | string | Status or information message |
| expiresIn | string | Expiration time for download URLs |
| partialFailure | boolean | Indicates if some languages failed to translate |
| failedLanguages | array | Language codes that failed to translate |
| errorMessage | string | Error message for failed languages |
| warning | string | Warning message about partial completion |
특정 언어용 번역 파일 다운로드
GET /translations/{jobId}/files/{language}
특정 대상 언어용 단일 번역 파일을 다운로드합니다. 적절한 Content-Type 헤더와 함께 파일 콘텐츠를 직접 반환합니다.
curl -X GET "https://api.i18nagent.ai/translations/{jobId}/files/{language}" \
-H "Authorization: Bearer i18n_your_api_key_here" \
-H "Content-Type: application/json"
const response = await fetch('https://api.i18nagent.ai/translations/{jobId}/files/{language}', {
method: 'GET',
headers: {
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
}
});
const data = await response.json();
console.log(data);
import requests
import json
response = requests.get(
'https://api.i18nagent.ai/translations/{jobId}/files/{language}',
headers={
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
}
)
print(response.json())
package main
import (
"bytes"
"encoding/json"
"net/http"
)
func main() {
client := &http.Client{}
req, _ := http.NewRequest("GET", "https://api.i18nagent.ai/translations/{jobId}/files/{language}", )
req.Header.Add("Authorization", "Bearer i18n_your_api_key_here")
req.Header.Add("Content-Type", "application/json")
resp, _ := client.Do(req)
defer resp.Body.Close()
}
위 명령어는 다음과 같이 JSON 형식으로 구성된 데이터를 반환합니다:
"string"
쿼리 매개변수
| 매개변수 | 필수 | 설명 |
|---|---|---|
| jobId | Yes | Translation job ID |
| language | Yes | Target language code (e.g., 'es', 'fr', 'ja') |
스트리밍 진행률을 포함한 번역 생성
POST /translations/stream
실시간 진행률 업데이트를 위해 Server-Sent Events (SSE)를 사용하여 번역을 생성합니다. 텍스트 번역만 지원합니다(파일은 제외). SSE 이벤트로 실시간 진행률 업데이트를 반환합니다.
curl -X POST "https://api.i18nagent.ai/translations/stream" \
-H "Authorization: Bearer i18n_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"texts": [
"Hello, world!",
"Welcome to our service"
],
"targetLanguage": "es",
"targetAudience": "general",
"industry": "technology",
"sourceLanguage": "en",
"region": "Mexico",
"notes": "Keep technical terms in English, use formal tone"
}'
const response = await fetch('https://api.i18nagent.ai/translations/stream', {
method: 'POST',
headers: {
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
},
body: JSON.stringify({
"texts": [
"Hello, world!",
"Welcome to our service"
],
"targetLanguage": "es",
"targetAudience": "general",
"industry": "technology",
"sourceLanguage": "en",
"region": "Mexico",
"notes": "Keep technical terms in English, use formal tone"
})
});
const data = await response.json();
console.log(data);
import requests
import json
response = requests.post(
'https://api.i18nagent.ai/translations/stream',
headers={
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
},
json={
"texts": [
"Hello, world!",
"Welcome to our service"
],
"targetLanguage": "es",
"targetAudience": "general",
"industry": "technology",
"sourceLanguage": "en",
"region": "Mexico",
"notes": "Keep technical terms in English, use formal tone"
}
)
print(response.json())
package main
import (
"bytes"
"encoding/json"
"net/http"
)
func main() {
client := &http.Client{}
data := map[string]interface{}{
"texts": []string{"Hello, world!", "Welcome to our service"},
"targetLanguage": "es",
"targetAudience": "general",
"industry": "technology",
}
jsonData, _ := json.Marshal(data)
req, _ := http.NewRequest("POST", "https://api.i18nagent.ai/translations/stream", bytes.NewBuffer(jsonData))
req.Header.Add("Authorization", "Bearer i18n_your_api_key_here")
req.Header.Add("Content-Type", "application/json")
resp, _ := client.Do(req)
defer resp.Body.Close()
}
위 명령어는 다음과 같이 JSON 형식으로 반환합니다.
{
"translations": [
{
"original": "Hello, world!",
"translated": "¡Hola, mundo!",
"confidence": 0.98
}
],
"metadata": {
"sourceLanguage": "en",
"targetLanguage": "es",
"wordCount": 2,
"creditsUsed": 0.002,
"timestamp": "2024-01-15T12:00:00.000Z"
}
}
요청 본문 매개변수
| 매개변수 | 유형 | 필수 여부 | 설명 |
|---|---|---|---|
| texts | array | Yes | Array of texts to translate |
| targetLanguage | string | No | Target language code (e.g., 'es', 'fr', 'ja') - for single language translation |
| targetAudience | string | No | Target audience (e.g., 'general', 'technical', 'casual', 'formal') (default: general) |
| industry | string | No | Industry context (e.g., 'technology', 'healthcare', 'finance') (default: technology) |
| sourceLanguage | string | No | Source language code (auto-detected if not provided) |
| region | string | No | Specific region for localization (e.g., 'Spain', 'Mexico', 'Brazil') |
| targetLanguages | array | No | Array of target language codes (e.g., ['es', 'fr', 'zh-CN']) - for multi-language translation. Cannot be used together with targetLanguage. |
| context | string | No | Optional additional context or instructions for the translation (e.g., 'Keep technical terms in English', 'Use formal tone', 'Preserve brand names') |
| pseudoTranslation | boolean | No | Enable pseudo-translation mode for testing i18n implementations without AI translation and NO credit cost. Transforms text with accents, brackets, and optional CJK characters to identify untranslated strings and test UI layout. (default: false) |
| pseudoOptions | object | No | Configuration options for pseudo-translation (only used when pseudoTranslation is true) |
| skipWarnings | boolean | No | Skip source text quality warnings and proceed with translation (default: false). When false, warnings about problematic source text (e.g., hard-to-translate phrases, pluralization issues, text expansion concerns) will be returned in the response under 'validationSuggestions' field. When true, these warnings are suppressed for cleaner output. (default: false) |
번역 비용 견적 받기
POST /translations/estimate
번역에 필요한 단어 수 및 크레딧을 계산합니다
curl -X POST "https://api.i18nagent.ai/translations/estimate" \
-H "Authorization: Bearer i18n_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"texts": [
"Hello, world!",
"Welcome to our service"
],
"targetLanguage": "es",
"targetAudience": "general",
"industry": "technology",
"sourceLanguage": "en",
"region": "Mexico",
"notes": "Keep technical terms in English, use formal tone"
}'
const response = await fetch('https://api.i18nagent.ai/translations/estimate', {
method: 'POST',
headers: {
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
},
body: JSON.stringify({
"texts": [
"Hello, world!",
"Welcome to our service"
],
"targetLanguage": "es",
"targetAudience": "general",
"industry": "technology",
"sourceLanguage": "en",
"region": "Mexico",
"notes": "Keep technical terms in English, use formal tone"
})
});
const data = await response.json();
console.log(data);
import requests
import json
response = requests.post(
'https://api.i18nagent.ai/translations/estimate',
headers={
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
},
json={
"texts": [
"Hello, world!",
"Welcome to our service"
],
"targetLanguage": "es",
"targetAudience": "general",
"industry": "technology",
"sourceLanguage": "en",
"region": "Mexico",
"notes": "Keep technical terms in English, use formal tone"
}
)
print(response.json())
package main
import (
"bytes"
"encoding/json"
"net/http"
)
func main() {
client := &http.Client{}
data := map[string]interface{}{
"texts": []string{"Hello, world!", "Welcome to our service"},
"targetLanguage": "es",
"targetAudience": "general",
"industry": "technology",
}
jsonData, _ := json.Marshal(data)
req, _ := http.NewRequest("POST", "https://api.i18nagent.ai/translations/estimate", bytes.NewBuffer(jsonData))
req.Header.Add("Authorization", "Bearer i18n_your_api_key_here")
req.Header.Add("Content-Type", "application/json")
resp, _ := client.Do(req)
defer resp.Body.Close()
}
위 명령어는 다음과 같은 JSON 형식으로 반환합니다.
{
"wordCount": 0,
"creditsRequired": 0,
"fileType": "txt",
"estimatedCostUSD": 0
}
요청 본문 매개변수들
| 매개변수 | 유형 | 필수 | 설명 |
|---|---|---|---|
| content | string | Yes | Content to analyze |
| fileType | string | No | File type for content analysis (default: txt) |
Response Fields
| Field | Type | Description |
|---|---|---|
| wordCount | integer | Number of words in the content |
| creditsRequired | number | Credits required for translation |
| fileType | string | File type used for analysis |
| estimatedCostUSD | number | Estimated cost in USD |
분석
Validate source text for translation readiness
POST /analyze
Lightweight validation of source text to identify potential issues before translation. Returns validation results with error codes for programmatic access. This endpoint does NOT consume credits - it runs fast, deterministic validation without AI/LLM calls.
curl -X POST "https://api.i18nagent.ai/analyze" \
-H "Authorization: Bearer i18n_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"texts": [
"Hello, world!",
"Welcome to our service"
],
"targetLanguage": "es",
"targetAudience": "general",
"industry": "technology",
"sourceLanguage": "en",
"region": "Mexico",
"notes": "Keep technical terms in English, use formal tone"
}'
const response = await fetch('https://api.i18nagent.ai/analyze', {
method: 'POST',
headers: {
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
},
body: JSON.stringify({
"texts": [
"Hello, world!",
"Welcome to our service"
],
"targetLanguage": "es",
"targetAudience": "general",
"industry": "technology",
"sourceLanguage": "en",
"region": "Mexico",
"notes": "Keep technical terms in English, use formal tone"
})
});
const data = await response.json();
console.log(data);
import requests
import json
response = requests.post(
'https://api.i18nagent.ai/analyze',
headers={
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
},
json={
"texts": [
"Hello, world!",
"Welcome to our service"
],
"targetLanguage": "es",
"targetAudience": "general",
"industry": "technology",
"sourceLanguage": "en",
"region": "Mexico",
"notes": "Keep technical terms in English, use formal tone"
}
)
print(response.json())
package main
import (
"bytes"
"encoding/json"
"net/http"
)
func main() {
client := &http.Client{}
data := map[string]interface{}{
"texts": []string{"Hello, world!", "Welcome to our service"},
"targetLanguage": "es",
"targetAudience": "general",
"industry": "technology",
}
jsonData, _ := json.Marshal(data)
req, _ := http.NewRequest("POST", "https://api.i18nagent.ai/analyze", bytes.NewBuffer(jsonData))
req.Header.Add("Authorization", "Bearer i18n_your_api_key_here")
req.Header.Add("Content-Type", "application/json")
resp, _ := client.Do(req)
defer resp.Body.Close()
}
The above command returns JSON structured like this:
{
"success": true,
"isValid": true,
"hasWarnings": true,
"wordCount": 0,
"issues": [
{
"code": "EMPTY_CONTENT",
"severity": "info",
"message": "human-readable_description_of_the_issue",
"suggestion": "suggested_fix_for_the_issue",
"affectedCount": 0,
"examples": [
"string"
]
}
],
"totalIssues": 0,
"summary": {
"errors": 0,
"warnings": 0,
"info": 0
},
"errorCodes": {
"EMPTY_CONTENT": "string",
"ENCODING_ISSUES": "string",
"UNCLOSED_PLACEHOLDER": "string",
"NESTED_PLACEHOLDERS": "string",
"INCONSISTENT_PLACEHOLDER_FORMAT": "string",
"HARDCODED_PLURALS": "string",
"VERY_LONG_STRINGS": "string",
"INVISIBLE_CHARACTERS": "string",
"EMPTY_JSON_VALUES": "string",
"INVALID_JSON": "string",
"HARDCODED_VALUES": "string"
}
}
Request Body Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| content | string | Yes | Content to validate (text or JSON string) |
| fileType | string | No | File type hint for validation (auto-detected if not provided) (default: auto) |
Response Fields
| Field | Type | Description |
|---|---|---|
| success | boolean | Whether validation completed (same as isValid) |
| isValid | boolean | Whether content passed validation (no errors) |
| hasWarnings | boolean | Whether content has warnings (but no blocking errors) |
| wordCount | integer | Number of words in the content |
| issues | array | List of validation issues found |
| totalIssues | integer | Total number of issues found |
| summary | object | Summary counts by severity |
| summary.errors | integer | Number of error-level issues |
| summary.warnings | integer | Number of warning-level issues |
| summary.info | integer | Number of info-level issues |
| errorCodes | object | Reference enum of all possible error codes for programmatic access |
| errorCodes.EMPTY_CONTENT | string | |
| errorCodes.ENCODING_ISSUES | string | |
| errorCodes.UNCLOSED_PLACEHOLDER | string | |
| errorCodes.NESTED_PLACEHOLDERS | string | |
| errorCodes.INCONSISTENT_PLACEHOLDER_FORMAT | string | |
| errorCodes.HARDCODED_PLURALS | string | |
| errorCodes.VERY_LONG_STRINGS | string | |
| errorCodes.INVISIBLE_CHARACTERS | string | |
| errorCodes.EMPTY_JSON_VALUES | string | |
| errorCodes.INVALID_JSON | string | |
| errorCodes.HARDCODED_VALUES | string |
Namespace Translations
네임스페이스 재사용을 위한 번역 파일 업로드
POST /namespaces/{namespace}/translations/upload
기존 번역 파일을 네임스페이스에 업로드하여 향후 재사용하세요. 이를 통해 이전에 번역된 문자열을 재사용하여 비용 최적화를 할 수 있습니다. 파일이 처리되고 번역 쌍이 캐싱을 위해 추출됩니다.
curl -X POST "https://api.i18nagent.ai/namespaces/{namespace}/translations/upload" \
-H "Authorization: Bearer i18n_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"texts": [
"Hello, world!",
"Welcome to our service"
],
"targetLanguage": "es",
"targetAudience": "general",
"industry": "technology",
"sourceLanguage": "en",
"region": "Mexico",
"notes": "Keep technical terms in English, use formal tone"
}'
const response = await fetch('https://api.i18nagent.ai/namespaces/{namespace}/translations/upload', {
method: 'POST',
headers: {
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
},
body: JSON.stringify({
"texts": [
"Hello, world!",
"Welcome to our service"
],
"targetLanguage": "es",
"targetAudience": "general",
"industry": "technology",
"sourceLanguage": "en",
"region": "Mexico",
"notes": "Keep technical terms in English, use formal tone"
})
});
const data = await response.json();
console.log(data);
import requests
import json
response = requests.post(
'https://api.i18nagent.ai/namespaces/{namespace}/translations/upload',
headers={
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
},
json={
"texts": [
"Hello, world!",
"Welcome to our service"
],
"targetLanguage": "es",
"targetAudience": "general",
"industry": "technology",
"sourceLanguage": "en",
"region": "Mexico",
"notes": "Keep technical terms in English, use formal tone"
}
)
print(response.json())
package main
import (
"bytes"
"encoding/json"
"net/http"
)
func main() {
client := &http.Client{}
data := map[string]interface{}{
"texts": []string{"Hello, world!", "Welcome to our service"},
"targetLanguage": "es",
"targetAudience": "general",
"industry": "technology",
}
jsonData, _ := json.Marshal(data)
req, _ := http.NewRequest("POST", "https://api.i18nagent.ai/namespaces/{namespace}/translations/upload", bytes.NewBuffer(jsonData))
req.Header.Add("Authorization", "Bearer i18n_your_api_key_here")
req.Header.Add("Content-Type", "application/json")
resp, _ := client.Do(req)
defer resp.Body.Close()
}
위 명령은 다음과 같은 JSON 구조를 반환합니다:
{
"success": true,
"fileId": "string",
"pairsStored": 0,
"pairsUpdated": 0,
"message": "string"
}
쿼리 파라미터
| 파라미터 | 필수 | 설명 |
|---|---|---|
| namespace | Yes | Namespace identifier (3-50 chars, alphanumeric + hyphens/underscores only) |
Response Fields
| Field | Type | Description |
|---|---|---|
| success | boolean | |
| fileId | string | |
| pairsStored | integer | Number of new translation pairs stored |
| pairsUpdated | integer | Number of existing translation pairs updated |
| message | string |
네임스페이스 번역 통계 가져오기
GET /namespaces/{namespace}/translations/stats
네임스페이스에 대한 업로드된 번역 파일 및 캐시 재사용 통계 가져오기
curl -X GET "https://api.i18nagent.ai/namespaces/{namespace}/translations/stats" \
-H "Authorization: Bearer i18n_your_api_key_here" \
-H "Content-Type: application/json"
const response = await fetch('https://api.i18nagent.ai/namespaces/{namespace}/translations/stats', {
method: 'GET',
headers: {
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
}
});
const data = await response.json();
console.log(data);
import requests
import json
response = requests.get(
'https://api.i18nagent.ai/namespaces/{namespace}/translations/stats',
headers={
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
}
)
print(response.json())
package main
import (
"bytes"
"encoding/json"
"net/http"
)
func main() {
client := &http.Client{}
req, _ := http.NewRequest("GET", "https://api.i18nagent.ai/namespaces/{namespace}/translations/stats", )
req.Header.Add("Authorization", "Bearer i18n_your_api_key_here")
req.Header.Add("Content-Type", "application/json")
resp, _ := client.Do(req)
defer resp.Body.Close()
}
위 명령어는 다음과 같은 JSON 형식으로 반환합니다:
{
"namespaceId": "string",
"namespaceName": "string",
"totalFiles": 0,
"files": [
{
"id": "string",
"baseFileName": "string",
"sourceLocale": "string",
"targetLocale": "string",
"pairsExtracted": 0,
"createdAt": "2024-01-15T12:00:00.000Z"
}
],
"cacheStatistics": [
{
"sourceLocale": "string",
"targetLocale": "string",
"pairCount": 0,
"totalReuses": 0
}
]
}
쿼리 파라미터
| 파라미터 | 필수 | 설명 |
|---|---|---|
| namespace | Yes | Namespace identifier |
Response Fields
| Field | Type | Description |
|---|---|---|
| namespaceId | string | |
| namespaceName | string | |
| totalFiles | integer | |
| files | array | |
| cacheStatistics | array |
네임스페이스의 업로드된 번역 파일 목록
GET /namespaces/{namespace}/translations/files
네임스페이스에 대한 업로드된 번역 파일의 페이지 매김된 목록 가져오기
curl -X GET "https://api.i18nagent.ai/namespaces/{namespace}/translations/files" \
-H "Authorization: Bearer i18n_your_api_key_here" \
-H "Content-Type: application/json"
const response = await fetch('https://api.i18nagent.ai/namespaces/{namespace}/translations/files', {
method: 'GET',
headers: {
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
}
});
const data = await response.json();
console.log(data);
import requests
import json
response = requests.get(
'https://api.i18nagent.ai/namespaces/{namespace}/translations/files',
headers={
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
}
)
print(response.json())
package main
import (
"bytes"
"encoding/json"
"net/http"
)
func main() {
client := &http.Client{}
req, _ := http.NewRequest("GET", "https://api.i18nagent.ai/namespaces/{namespace}/translations/files", )
req.Header.Add("Authorization", "Bearer i18n_your_api_key_here")
req.Header.Add("Content-Type", "application/json")
resp, _ := client.Do(req)
defer resp.Body.Close()
}
위 명령어는 다음과 같은 JSON 구조를 반환합니다:
{
"namespaceId": "string",
"namespaceName": "string",
"totalFiles": 0,
"limit": 0,
"offset": 0,
"files": [
{
"id": "string",
"baseFileName": "string",
"originalFileName": "string",
"fileType": "string",
"fileSize": 0,
"sourceLocale": "string",
"targetLocale": "string",
"pairsExtracted": 0,
"status": "string",
"uploadedBy": "string",
"createdAt": "2024-01-15T12:00:00.000Z",
"updatedAt": "2024-01-15T12:00:00.000Z"
}
]
}
쿼리 매개변수
| 매개변수 | 필수 | 설명 |
|---|---|---|
| namespace | Yes | Namespace identifier |
| limit | No | Maximum number of files to return |
| offset | No | Number of files to skip for pagination |
Response Fields
| Field | Type | Description |
|---|---|---|
| namespaceId | string | |
| namespaceName | string | |
| totalFiles | integer | |
| limit | integer | |
| offset | integer | |
| files | array |
업로드된 번역 파일 삭제
DELETE /namespaces/{namespace}/translations/files/{fileId}
캐시에서 업로드된 번역 파일 및 모든 관련 번역 쌍을 삭제합니다.
curl -X DELETE "https://api.i18nagent.ai/namespaces/{namespace}/translations/files/{fileId}" \
-H "Authorization: Bearer i18n_your_api_key_here" \
-H "Content-Type: application/json"
const response = await fetch('https://api.i18nagent.ai/namespaces/{namespace}/translations/files/{fileId}', {
method: 'DELETE',
headers: {
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
}
});
const data = await response.json();
console.log(data);
import requests
import json
response = requests.delete(
'https://api.i18nagent.ai/namespaces/{namespace}/translations/files/{fileId}',
headers={
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
}
)
print(response.json())
package main
import (
"bytes"
"encoding/json"
"net/http"
)
func main() {
client := &http.Client{}
req, _ := http.NewRequest("DELETE", "https://api.i18nagent.ai/namespaces/{namespace}/translations/files/{fileId}", )
req.Header.Add("Authorization", "Bearer i18n_your_api_key_here")
req.Header.Add("Content-Type", "application/json")
resp, _ := client.Do(req)
defer resp.Body.Close()
}
위 명령어는 다음과 같은 JSON 구조를 반환합니다:
{
"success": true,
"fileName": "string",
"pairsDeleted": 0,
"message": "string"
}
쿼리 매개변수
| 매개변수 | 필수 | 설명 |
|---|---|---|
| namespace | Yes | Namespace identifier |
| fileId | Yes | File ID to delete |
Response Fields
| Field | Type | Description |
|---|---|---|
| success | boolean | |
| fileName | string | |
| pairsDeleted | integer | |
| message | string |
병렬 번역 파일 업로드
POST /translations/upload-parallel
번역 쌍 추출 및 캐싱을 위해 소스 및 타겟 파일을 병렬로 업로드합니다. 두 파일 모두 동일한 구조와 파일 유형을 가져야 합니다.
curl -X POST "https://api.i18nagent.ai/translations/upload-parallel" \
-H "Authorization: Bearer i18n_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"texts": [
"Hello, world!",
"Welcome to our service"
],
"targetLanguage": "es",
"targetAudience": "general",
"industry": "technology",
"sourceLanguage": "en",
"region": "Mexico",
"notes": "Keep technical terms in English, use formal tone"
}'
const response = await fetch('https://api.i18nagent.ai/translations/upload-parallel', {
method: 'POST',
headers: {
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
},
body: JSON.stringify({
"texts": [
"Hello, world!",
"Welcome to our service"
],
"targetLanguage": "es",
"targetAudience": "general",
"industry": "technology",
"sourceLanguage": "en",
"region": "Mexico",
"notes": "Keep technical terms in English, use formal tone"
})
});
const data = await response.json();
console.log(data);
import requests
import json
response = requests.post(
'https://api.i18nagent.ai/translations/upload-parallel',
headers={
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
},
json={
"texts": [
"Hello, world!",
"Welcome to our service"
],
"targetLanguage": "es",
"targetAudience": "general",
"industry": "technology",
"sourceLanguage": "en",
"region": "Mexico",
"notes": "Keep technical terms in English, use formal tone"
}
)
print(response.json())
package main
import (
"bytes"
"encoding/json"
"net/http"
)
func main() {
client := &http.Client{}
data := map[string]interface{}{
"texts": []string{"Hello, world!", "Welcome to our service"},
"targetLanguage": "es",
"targetAudience": "general",
"industry": "technology",
}
jsonData, _ := json.Marshal(data)
req, _ := http.NewRequest("POST", "https://api.i18nagent.ai/translations/upload-parallel", bytes.NewBuffer(jsonData))
req.Header.Add("Authorization", "Bearer i18n_your_api_key_here")
req.Header.Add("Content-Type", "application/json")
resp, _ := client.Do(req)
defer resp.Body.Close()
}
위 명령어는 다음과 같은 JSON 형식으로 반환됩니다.
{
"success": true,
"fileId": "string",
"pairsStored": 0,
"pairsUpdated": 0,
"message": "string"
}
Response Fields
| Field | Type | Description |
|---|---|---|
| success | boolean | |
| fileId | string | |
| pairsStored | integer | Number of new translation pairs stored |
| pairsUpdated | integer | Number of existing translation pairs updated |
| message | string |
파일들
스토리지에서 파일 다운로드
GET /files/{filePath}
로컬 스토리지(개발) 또는 S3(프로덕션)에서 파일을 제공합니다. 업로드된 파일 및 번역된 파일에 액세스하는 데 사용됩니다.
curl -X GET "https://api.i18nagent.ai/files/{filePath}" \
-H "Authorization: Bearer i18n_your_api_key_here" \
-H "Content-Type: application/json"
const response = await fetch('https://api.i18nagent.ai/files/{filePath}', {
method: 'GET',
headers: {
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
}
});
const data = await response.json();
console.log(data);
import requests
import json
response = requests.get(
'https://api.i18nagent.ai/files/{filePath}',
headers={
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
}
)
print(response.json())
package main
import (
"bytes"
"encoding/json"
"net/http"
)
func main() {
client := &http.Client{}
req, _ := http.NewRequest("GET", "https://api.i18nagent.ai/files/{filePath}", )
req.Header.Add("Authorization", "Bearer i18n_your_api_key_here")
req.Header.Add("Content-Type", "application/json")
resp, _ := client.Do(req)
defer resp.Body.Close()
}
위 명령어는 다음과 같은 JSON 형식으로 반환됩니다.
{
"error": "Detailed error message describing what went wrong",
"success": false
}
쿼리 파라미터
| 파라미터 | 필수 | 설명 |
|---|---|---|
| filePath | Yes | File path including any subdirectories (e.g., 'uploads/test-file.json' or 'translations/result.json') |
오류
i18n-agent API는 다음 오류 코드를 사용합니다:
| 오류 코드 | 의미 |
|---|---|
| 400 | Bad Request -- Your request is invalid. |
| 401 | Unauthorized -- Your API key is invalid. |
| 402 | Payment Required -- Insufficient credits in your account. |
| 403 | Forbidden -- Your API key is inactive or team not found. |
| 404 | Not Found -- The specified resource could not be found. |
| 500 | Internal Server Error -- We had a problem with our server. Try again later. |
| 503 | Service Unavailable -- We're temporarily offline for maintenance. Please try again later. |
오류 응답 형식
{
"error": "Detailed error message describing what went wrong",
"success": false
}
번역 준비 상태를 위한 콘텐츠 분석
POST /analyze
번역 전 잠재적 문제를 식별하기 위한 소스 텍스트의 경량 유효성 검사. 프로그래밍 방식 액세스를 위한 오류 코드와 함께 유효성 검사 결과를 반환합니다. 이 엔드포인트는 크레딧을 소비하지 않습니다 - AI/LLM 호출 없이 빠른 결정론적 유효성 검사를 실행합니다.
curl -X POST "https://api.i18nagent.ai/analyze" \
-H "Authorization: Bearer i18n_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"texts": [
"Hello, world!",
"Welcome to our service"
],
"targetLanguage": "es",
"targetAudience": "general",
"industry": "technology",
"sourceLanguage": "en",
"region": "Mexico",
"notes": "Keep technical terms in English, use formal tone"
}'
const response = await fetch('https://api.i18nagent.ai/analyze', {
method: 'POST',
headers: {
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
},
body: JSON.stringify({
"texts": [
"Hello, world!",
"Welcome to our service"
],
"targetLanguage": "es",
"targetAudience": "general",
"industry": "technology",
"sourceLanguage": "en",
"region": "Mexico",
"notes": "Keep technical terms in English, use formal tone"
})
});
const data = await response.json();
console.log(data);
import requests
import json
response = requests.post(
'https://api.i18nagent.ai/analyze',
headers={
'Authorization': 'Bearer i18n_your_api_key_here',
'Content-Type': 'application/json'
},
json={
"texts": [
"Hello, world!",
"Welcome to our service"
],
"targetLanguage": "es",
"targetAudience": "general",
"industry": "technology",
"sourceLanguage": "en",
"region": "Mexico",
"notes": "Keep technical terms in English, use formal tone"
}
)
print(response.json())
package main
import (
"bytes"
"encoding/json"
"net/http"
)
func main() {
client := &http.Client{}
data := map[string]interface{}{
"texts": []string{"Hello, world!", "Welcome to our service"},
"targetLanguage": "es",
"targetAudience": "general",
"industry": "technology",
}
jsonData, _ := json.Marshal(data)
req, _ := http.NewRequest("POST", "https://api.i18nagent.ai/analyze", bytes.NewBuffer(jsonData))
req.Header.Add("Authorization", "Bearer i18n_your_api_key_here")
req.Header.Add("Content-Type", "application/json")
resp, _ := client.Do(req)
defer resp.Body.Close()
}
위 명령어는 다음과 같이 JSON으로 구조화된 데이터를 반환합니다.
{
"translations": [
{
"original": "Hello, world!",
"translated": "¡Hola, mundo!",
"confidence": 0.98
}
],
"metadata": {
"sourceLanguage": "en",
"targetLanguage": "es",
"wordCount": 2,
"creditsUsed": 0.002,
"timestamp": "2024-01-15T12:00:00.000Z"
}
}
요청 본문 파라미터
| 파라미터 | 유형 | 필수 | 설명 |
|---|---|---|---|
| targetLanguage | string | 예 | 번역용 대상 언어 코드 |
| targetAudience | string | 아니요 | 대상 독자 (기본값: 일반) |
| industry | string | 아니요 | 산업 컨텍스트 (기본값: 일반) |
| sourceLanguage | string | 아니요 | 소스 언어 코드 (제공되지 않으면 자동 감지됨) |
| region | string | 아니요 | 현지화를 위한 특정 지역 |
| content | object | 예 | 분석할 콘텐츠 (텍스트, 텍스트 배열 또는 구조화된 객체) |
| fileType | string | 아니요 | 콘텐츠가 파일에서 온 경우 선택적 파일 유형 |