Denne API oversætter tekst som job i en kø med ét målsprog pr. job. Indsend tekst, gem det returnerede job-ID, og hent jobbet, indtil behandlingen er færdig. Send alle anmodninger over HTTPS med legitimationsoplysninger til din konto, enten HTTP Basic-legitimationsoplysninger som vist i eksemplerne eller et API-token som beskrevet under Godkendelse. Opbevar legitimationsoplysninger på din server.
Endpoints
De to API-værter https://api.multi.tel og kompatibilitetsværten https://api.multitel.net deler de samme kontotilknyttede job, idempotensnøgler, grænser og fakturering. De adskiller sig med hensyn til svarstruktur, så brug konsekvent én vært med en parser, der passer til den.
| Handling | Metode og sti |
|---|---|
| Tjenesteoplysninger | GET /v3/translate |
| Indsend et job | POST /v3/translate |
| Beregn et estimat uden at oprette et job | POST /v3/translate/estimate |
| Hent et job | GET /v3/translate/JOB_ID |
| Betal for et job, der afventer betaling | POST /v3/translate/JOB_ID/settle |
| Forbrug | GET /v3/translate/usage |
På api.multi.tel er alle stier også tilgængelige med præfikset /v1/translate i stedet for /v3/translate. På api.multitel.net skal du bruge stierne /v3/translate.
Svaret med tjenesteoplysninger angiver enabled, paidEnabled, mode (batch), realtime (false), maxSourceCharacters (20000), cpuLanguages og ratesNanosPerCharacter. cpuLanguages angiver de grundsprogkoder, der accepteres til standardoversættelse. ratesNanosPerCharacter angiver den konfigurerede pris pr. kodepunkt i kildeteksten for hver motor, i milliarddele af en amerikansk dollar: en værdi på 5000 betyder $5 pr. million kodepunkter. Svaret angiver ikke, om udvidet oversættelse er tilgængelig i øjeblikket; et estimat for udvidet oversættelse returnerer 503, når den ikke er det. Det er gratis at hente oplysningerne.
Oversæt tekst
Send JSON med Content-Type: application/json til POST https://api.multi.tel/v3/translate. Hvert job har ét målsprog, så indsend et separat job for hvert målsprog.
| Felt | Betydning |
|---|---|
text | Påkrævet. Kildetekst på 1 til 20,000 Unicode-kodepunkter, inklusive blanktegn og linjeskift, som ikke kun består af blanktegn. Visse emoji og bogstaver med accenter skrevet med kombinationstegn indeholder mere end ét kodepunkt. Længden i byte er ikke målet, og teksten normaliseres ikke før optællingen. Længere tekst afvises med 400 på denne vært. |
source_language | Lokalitetskode for kildesproget. Påkrævet for cpu: uden den returnerer anmodningen 422 translation_language_pair_unavailable. Valgfri for enhanced; hvis den udelades, er sourceLocale i jobbet og resultatet tomt, og kontrollen for samme sprog nedenfor anvendes ikke. Det anbefales at angive den. Udelad hele feltet, hvis du vil udelade den; denne vært afviser en tom streng. |
target_language | Påkrævet lokalitetskode for målsproget, f.eks. es eller fr-CA. |
engine | Påkrævet: cpu for standardoversættelse eller enhanced for udvidet oversættelse. |
Lokalitetskoder er BCP 47-tags på 2 til 63 bogstaver, cifre og bindestreger. De kanoniseres, så en-us registreres som en-US. Ugyldige tags samt und, mul eller zxx returnerer 400 invalid_translation_language. Tilgængelighed for standardoversættelse kontrolleres efter grundsprog, og nb og nn tæller som no. Et regionalt målsprog som fr-CA accepteres og registreres, men standardresultatet følger grundsproget og afspejler ikke nødvendigvis regionen.
Hold anmodningens body inden for 128 KiB på denne vært. Send tekst som UTF-8 i stedet for at escape hvert ikke-ASCII-tegn som en \u-sekvens, hvilket kan få en anmodning på 20,000 tegn til at overskride grænsen.
Bodyen accepterer kun disse fire felter. Alle andre egenskaber afvises med 400 invalid_translation_request, herunder idempotency_key, ejer-ID’er, flag for gratis behandling og segmentarrays.
Idempotens og genbrug
Hver indsendelse kræver en Idempotency-Key-header på 1 til 190 tegn. Brug ASCII-bogstaver, cifre, -, _, . og :, uden indledende eller afsluttende mellemrum; en manglende nøgle eller en nøgle på 191 tegn eller mere afvises med 400. Nøgler er afgrænset til din konto og til oversættelse på tværs af begge værter og alle kontoens legitimationsoplysninger.
- Den samme nøgle med samme tekst, kanoniserede sprog og motor returnerer det eksisterende job med HTTP 200 og
duplicate: true, uden en ny opkrævning. - Den samme nøgle med en anden tekst, andre sprog eller en anden motor returnerer 409
idempotency_conflict. Den samme nøgle returnerer også 409, hvis behandlingsversionen er ændret, siden jobbet blev oprettet. Hent i så fald det oprindelige job via dets ID i stedet for at indsende det igen. - En ny nøgle med samme tekst, kanoniserede sprog og motor returnerer det eksisterende job med HTTP 200 og
duplicate: true, uden en ny behandlingsopkrævning, hvis der findes et job med dette indhold og den aktuelle behandlingsversion, som er i kø, kører, er fuldført eller afventer betaling. Et genbrugt job, der afventer betaling, skal stadig betales. Mislykkede job genbruges ikke: der oprettes et nyt job, som faktureres, når det fuldføres.
API_USER="your-api-username"
API_PASSWORD="your-api-password"
curl --fail-with-body --silent --show-error --user "$API_USER:$API_PASSWORD" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: translation-example-001" \
--data '{"text":"Please move my appointment to Tuesday at 3 PM, not 11 AM.","source_language":"en","target_language":"es","engine":"cpu"}' \
-o translation-job.json \
https://api.multi.tel/v3/translate
node -p 'JSON.parse(require("node:fs").readFileSync("translation-job.json","utf8")).data.id'Et nyt job returnerer HTTP 202. Eksempelteksten har 57 kodepunkter, så ved $5 pr. million kodepunkter koster den $0.000285. Et forkortet svar (identifikatoren er et eksempel):
{
"status": "success",
"data": {
"id": "8b2e4c71-5d3a-4f09-a6e2-1c7f9d3b5a28",
"status": "queued",
"mode": "batch",
"realtime": false,
"engine": "cpu",
"sourceLocale": "en",
"targetLocale": "es",
"sourceCharacters": 57,
"costUsd": "0.000285000",
"costIsEstimate": true,
"pricePerMillionCharactersUsd": "5.000000000",
"progress": null
}
}En indsendelse kan også returnere 402 insufficient_balance når en forudbetalt saldo ikke kan dække jobbet sammen med dine øvrige uafsluttede job, og 429 translation_queue_full når din konto eller tjenesten har for mange uafsluttede job. Den returnerer 503 i disse tilfælde:
paid_translation_not_enabledmens betalt oversættelse er deaktiveret.translation_unavailablefor en anmodning om udvidet oversættelse, mens udvidet oversættelse er utilgængelig.translation_pricing_unavailablemens den valgte motor ikke har en konfigureret takst.
Prøv igen senere efter svar med 429 og 503, og brug den samme nøgle.
Vælg kvaliteten
Lang tekst behandles i mindre dele og samles igen. Linjeskift og mellemrum kan ændre sig, og en sætning kan miste kontekst ved en grænse mellem behandlingsdele. Behold originalteksten, og gennemgå det samlede resultat. Standardoversættelse bruger grundsproget i et regionalt tag; at et tag accepteres og registreres, garanterer ikke regional ordlyd.
Standardoversættelse kører på CPU-baserede arbejdsprocesser. Udvidet oversættelse sender tekst til den konfigurerede eksterne AI-tjeneste. Resultatet skal stadig gennemgås; tjenesten garanterer ikke, at én motor er mere nøjagtig for alle sprogpar eller teksttyper.
Standardoversættelse er et udkast, hvis kvalitet og behandlingstid varierer efter sprogpar. Udvidet oversættelse er beregnet til tekst, hvor kontekst er vigtig, men kræver stadig kontrol af vigtige navne, tal, negationer og tilsagn. Ingen af mulighederne retter fejl, som allerede findes i en oprindelig transskription, så behold originalen til sammenligning.
Brug GET /v3/translate på den samme API-vært til at kontrollere aktuel tilgængelighed, understøttede standardsprog og konfigurerede takster. En standardanmodning, hvis kilde- eller målgrundsprog ikke findes i cpuLanguages, returnerer 422 translation_language_pair_unavailable. Når source_language er angivet og har samme grundsprog som målsproget, returnerer anmodningen 409 translation_same_language i stedet for at oprette et job. Udvidet oversættelse aktiveres separat: mens den er utilgængelig, returnerer indsendelser og estimater for udvidet oversættelse 503.
Beregn et estimat først
På api.multi.tel skal du sende den samme JSON-body til POST /v3/translate/estimate. Der kræves ingen idempotensnøgle. Et estimat anvender samme validering, inklusive kontrollerne med 422 og 409, men opretter ikke et job, oversætter ikke tekst, reserverer ikke penge, kontrollerer ikke din saldo og opkræver ikke betaling fra din konto. Det returnerer HTTP 200 med estimate: true, charged: false, mode, realtime, engine, sourceCharacters, sourceLocale, targetLocale, pricePerMillionCharactersUsd og costUsd under data. For eksemplet ovenfor er costUsd lig med 0.000285000 ved standardtaksten. Mens udvidet oversættelse er utilgængelig, returnerer et estimat for udvidet oversættelse 503 service_unavailable. Estimater bruger den aktuelt konfigurerede takst. Et jobs takst fastlægges, når jobbet oprettes, og opkrævningen bruger denne takst.
Hent oversættelsen
En ny indsendelse returnerer HTTP 202, og et eksisterende eller genbrugt job returnerer HTTP 200. Gem data.id, og brug det fælles jobforløb. Jobobjektet indeholder disse felter:
id,status,engine,sourceLocaleogtargetLocale.sourceCharacters,costUsd,costIsEstimateogpricePerMillionCharactersUsd.progressogcreatedAt.modelVersion, en uigennemsigtig streng, der angiver behandlingsversionen.duplicatei svar med genbrugte job.failureCodefor mislykkede job:translation_failed,translation_timeout,input_failedellerworker_lease_lost.
Et mislykket job viser costUsd som nul.
Et fuldført job har data.result med sourceLocale (tomt, hvis intet kildesprog blev angivet), targetLocale, den oversatte text (segmenttekster samlet med linjeskift) og segments. For tekst indsendt via denne API indeholder segments én post med den oversatte text og målsproget i language. Resultater for job, der afventer betaling, tilbageholdes, indtil betalingen er gennemført.
Brug af api.multitel.net
Kompatibilitetsendpointet POST https://api.multitel.net/v3/translate accepterer de samme JSON-felter og den samme Idempotency-Key-header. Hvis headeren mangler, accepterer den også en streng i idempotency_key i JSON-bodyen. Alle andre ekstra felter afvises med 400 unsupported_translation_option. På denne vært kan den rå body være op til 256,000 byte, og tekst over 20,000 kodepunkter returnerer 413 translation_too_large i stedet for 400. En tom source_language behandles som udeladt. Et 429-svar indeholder Retry-After: 15. Denne vært returnerer også disse fejl:
- 400
json_body_requirednår bodyen mangler, er ugyldig JSON eller en JSON-skalar. Send et JSON-objekt. - 400
invalid_translation_optionsnårtext,target_languageellerenginemangler, er tom eller ikke er en streng, ellersource_languageikke er en streng. - 400
invalid_translation_textved tekst, der kun består af blanktegn. - 400
invalid_translation_engineved en ukendt motor. - 400
idempotency_key_requiredved en manglende, tom eller for lang nøgle eller en værdi, der ikke er en streng, iidempotency_key. - 400
invalid_jobved et forkert formateret job-ID.
Svar fra denne værts oversættelsestjeneste bruger svarstrukturen {"status":{"code":HTTP_STATUS},"response":{...}}, hvor status er et objekt. Hent jobbets ID fra response.id og det fuldførte resultat fra response.result. Fejl placerer koden i response.code, uden en meddelelse eller et anmodnings-ID. Godkendelsesfejl (401) returneres af værtens generelle loginkontrol og kan have en anden body, så kontrollér HTTP-status før parsing. Job deles med den primære vært, men brug den samme vært til gentagne forespørgsler, betaling og forbrug, så din parser passer til svarstrukturen. Denne vært accepterer også de samme JSON-felter på /v3/translate/estimate uden en idempotensnøgle, og estimatet findes under response.