Udviklere
API-dokumentation
Alt, hvad De behøver for at integrere Baduno Translation API: autentifikation, slutpunkter, eksempler, fejlkoder og grænser. Basis-URL for alle kald er https://www.baduno.com/api/v1 – udelukkende over HTTPS.
Basis-URLhttps://www.baduno.com/api/v1
Introduktion
Translation API oversætter tekst, HTML og struktureret JSON til op til 24 EU-officielle sprog. Forespørgsler og svar er JSON (UTF-8). Hver forespørgsel vælger et kvalitetsniveau: basic (AI), pro (AI med terminologihåndhævelse) eller review (yderligere moderspråksstikprøvekontrol, asynkront).
Til afprøvning kan De bruge den offentlige sandbox-nøgle fra kundeområdet – den opfører sig som produktion, men er begrænset til et testkvota. Produktionsnøgle får De efter kort godkendelse via Deres kundekonto.
Offentlig sandbox-nøglebd_test_sandbox_2026
Autentifikation
Hver forespørgsel bærer Deres API-nøgle i Authorization-headeren som Bearer-token. Nøgler begynder med bd_test_ (sandbox) eller bd_live_ (produktion). Behandl nøgler som adgangskoder: aldrig i frontend-kode, aldrig i repository – ved mistanke om kompromittering, tilbagekald og opret ny i kundeområdet.
Forespørgsler uden gyldig nøgle besvares af API'en med status 401. En nøgle kan til enhver tid forsynes med en månedlig grænse i ord; når grænsen er nået, svarer API'en med status 402, indtil De hæver grænsen.
Authorization: Bearer bd_live_ihr_schluesselOversæt tekst
POST/api/v1/translate
Det centrale slutpunkt oversætter en eller flere tekster til et målsprog. Feltet format styrer behandlingen: text (standard), html (markup bevares) eller json (kun strengværdier oversættes, nøgler og struktur forbliver uændret).
Svaret indeholder oversættelserne i inputrækkefølge, de tællede kildetekstord og de beregnede omkostninger i cent. Med den valgfrie header Idempotency-Key forhindrer De dobbeltbehandling ved netværksgentagelser: identiske nøgler leverer det gemte første svar.
curl https://www.baduno.com/api/v1/translate \
-H "Authorization: Bearer bd_test_sandbox_2026" \
-H "Content-Type: application/json" \
-d '{
"target": "fr",
"texts": ["Kostenloser Versand ab 50 Euro."],
"format": "text",
"tier": "basic"
}'{
"ok": true,
"target": "fr",
"tier": "basic",
"translations": ["Livraison gratuite à partir de 50 euros."],
"words": 6,
"cost_cents": 12,
"detected_source": "de"
}Parameter
target | Målsprog (ISO 639-1), f.eks. fr, it, pl. Obligatorisk felt. |
texts[] | Liste af tekster, der skal oversættes (1–50 pr. forespørgsel, samlet maks. 30.000 tegn). |
source | Kildesprog (ISO 639-1). Valgfrit – uden angivelse genkendes det. |
format | text, html eller json. Standard: text. |
tier | Kvalitetsniveau basic, pro eller review. Standard: basic. |
glossary | ID for et gemt glossar, hvis terminologi håndhæves (niveau pro og review). |
const res = await fetch("https://www.baduno.com/api/v1/translate", {
method: "POST",
headers: {
"Authorization": "Bearer " + process.env.BADUNO_API_KEY,
"Content-Type": "application/json"
},
body: JSON.stringify({ target: "it", texts: [title, description], format: "html" })
});
const { translations } = await res.json();import os, requests
r = requests.post(
"https://www.baduno.com/api/v1/translate",
headers={"Authorization": f"Bearer {os.environ['BADUNO_API_KEY']}"},
json={"target": "pl", "texts": ["Zurück zur Startseite"], "tier": "pro"},
timeout=30,
)
r.raise_for_status()
print(r.json()["translations"][0])$ch = curl_init("https://www.baduno.com/api/v1/translate");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer " . getenv("BADUNO_API_KEY"),
"Content-Type: application/json"
],
CURLOPT_POSTFIELDS => json_encode(["target" => "es", "texts" => [$text]])
]);
$out = json_decode(curl_exec($ch), true);Batch & Webhooks
POST/api/v1/batches
Til store mængder eller review-trinnet arbejder du asynkront: Batch-endepunktet accepterer op til 1.000 tekster og svarer straks med et job-ID. Når jobbet er afsluttet – ved review efter den modersproglige stikprøve – kalder API'en din registrerede webhook-URL med resultatet.
Webhook-kald er signeret med en HMAC-SHA-256-header, som du verificerer med din webhook-hemmelighed. Hvis din server ikke svarer med en 2xx-status, gentages leveringen op til fem gange med stigende interval; jobs forbliver desuden tilgængelige via GET i 30 dage.
POST /api/v1/batches → { "ok": true, "job": "job_8f2…", "status": "processing" }
GET /api/v1/batches/job_8f2… → { "ok": true, "status": "done", "results": [ … ] }Glossarer
POST/api/v1/glossaries
Ordglosser sikrer din terminologi: pr. indslag et kildebegreb og dets bindende oversættelse pr. målsprog. Uploades som CSV i kundeområdet eller via API; niveauerne pro og review anvender træffere bindende, basic bruger dem som anbefaling.
Per konto er op til 20 ordglosser med hver 5.000 indslag mulige. Ændringer har øjeblikkelig virkning på alle efterfølgende forespørgsler – versionsstyr derfor ordglosser som kode og test ændringer først med sandbox-nøglen.
Sprog
GET/api/v1/languages
Sprogendepunktet leverer de aktuelt tilgængelige mål- og kildesprog med ISO-kode og egenbetegnelse. Brug det i stedet for en fast indbygget liste – nye sprog vises der automatisk.
Forbrug
GET/api/v1/usage
Forbrugs-endepunktet viser per nøgle de oversatte ord og tilfaldne omkostninger for den aktuelle måned samt den indstillede månedlige grænse. De samme tal ser du grafisk i kundeområdet under "API & Forbrug".
Fejlkoder
Fejl kommer som JSON med felterne error (maskinlæsbar kode) og message (beskrivelse). Håndter mindst disse tilfælde:
| 401 | invalid_key | Manglende eller ugyldig API-nøgle. |
| 402 | quota_exceeded | Månedsgrænse eller saldo opbrugt – forhøj grænsen i kundeområdet. |
| 413 | payload_too_large | Forespørgsel for stor – opdel tekster (maks. 30.000 tegn per forespørgsel). |
| 422 | unsupported_language | Målsprog ikke tilgængeligt eller parameter ugyldig – detaljer i message-feltet. |
| 429 | rate_limited | Hastighedsgrænse nået – gentag med eksponentiel afstand; headeren Retry-After angiver ventetiden. |
| 500 | internal | Uventet fejl på vores side – vent kort og prøv igen; kontakt support ved gentagne fejl. |
Grænser & Fairness
Som standard gælder 60 forespørgsler pr. minut og nøgle samt 30.000 tegn pr. forespørgsel; sandbox-nøglen er yderligere begrænset til testkvoten. Højere grænser aktiverer vi efter kort gennemgang – kontakt os med din brugssituation.
Ordoptælling: Der tælles ord i kildeteksten (Unicode-ordgrænser), én gang pr. målsprog. I format html og json tælles kun oversættelige tekstknuder henholdsvis strengværdier – markup, nøgler og variabler koster intet.
Databeskyttelse
Behandling udelukkende til ydelsesopfyldelse på EU-servere; indhold anvendes ikke til træning af modeller og slettes efter 30 dage fra behandlingsloggene. Til produktionsbrug indgår vi en databehandleraftale efter art. 28 GDPR – detaljer i Trust Center.
Send ikke personoplysninger i sandkassen. Pseudonymiser testindhold eller brug syntetiske eksempler.
Ændringslog
- Juli 2026
- Start på den offentlige sandkasse: Oversættelses-, batch-, glossar-, sprog- og forbrugsendepunkt.
- Planlagt
- Selvadministration af produktionsnøgler, stilprofiler pr. mærke, oversættelseshukommelse (Translation Memory) pr. konto.
API'en er versioneret under /v1; bagudkompatible udvidelser (nye valgfrie felter, nye sprog) sker uden versionsskifte. Brydende ændringer fremstår som en ny version med mindst tolv måneders parallel drift.