Frankfurter-studio til flersprogede digitale præsentationer +49 69 95209894 [email protected] Man–fre 9–17 Kundeområde →
DanskDA

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.

Header
Authorization: Bearer bd_live_ihr_schluessel

Oversæ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.

Forespørgsel · curl
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"
  }'
Svar
{
  "ok": true,
  "target": "fr",
  "tier": "basic",
  "translations": ["Livraison gratuite à partir de 50 euros."],
  "words": 6,
  "cost_cents": 12,
  "detected_source": "de"
}

Parameter

targetMå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).
sourceKildesprog (ISO 639-1). Valgfrit – uden angivelse genkendes det.
formattext, html eller json. Standard: text.
tierKvalitetsniveau basic, pro eller review. Standard: basic.
glossaryID for et gemt glossar, hvis terminologi håndhæves (niveau pro og review).
JavaScript
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();
Python
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])
PHP
$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.

Batch-Ablauf
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:

401invalid_keyManglende eller ugyldig API-nøgle.
402quota_exceededMånedsgrænse eller saldo opbrugt – forhøj grænsen i kundeområdet.
413payload_too_largeForespørgsel for stor – opdel tekster (maks. 30.000 tegn per forespørgsel).
422unsupported_languageMålsprog ikke tilgængeligt eller parameter ugyldig – detaljer i message-feltet.
429rate_limitedHastighedsgrænse nået – gentag med eksponentiel afstand; headeren Retry-After angiver ventetiden.
500internalUventet 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.

Anmod om uforpligtende tilbud

Svar inden for 24 timer på hverdage.

Tysk GmbHAmtsgericht Frankfurt am Main · HRB 111727
D-U-N-S® registreret315030052
GDPR-kompatibel behandlingHosting i Tyskland
Faste priser med skriftlig leveringsgaranti