Erstellen und verfolgen Sie Aufträge für zertifizierte Dokumentübersetzungen programmgesteuert. Eine REST-API über HTTPS, die mit einem Bearer-Token authentifiziert wird und JSON zurückgibt – mit signierten Webhooks für jedes Ereignis.
curl -X POST https://www.rapidtranslate.org/api/v1/orders \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "reference=APO-10432" \
-F "source_language=Spanish" \
-F "target_language=English (US)" \
-F "translation_type=certified" \
-F "files[]=@document.pdf"
→ {
"id": "9b1c2d3e-…",
"status": "pending",
"livemode": true
} Mit der RapidTranslate-API kann Ihre Anwendung Dokumente zur beglaubigten Übersetzung einreichen, aktuelle Status- und Preisinformationen abrufen und die fertigen Dateien erhalten – ohne dass Ihr Team unseren Bestellvorgang nutzen muss. Sie richtet sich an Unternehmen, die im Auftrag ihrer eigenen Kunden Übersetzungsaufträge erteilen.
Alle Anfragen sind zu richten an https://www.rapidtranslate.org/api/v1 über HTTPS. Anfragen und Antworten erfolgen im JSON-Format, mit Ausnahme der Auftragserstellung, bei der Dateien als multipart/form-data. Alle Beträge werden zurückerstattet als ganzzahlige Cent in USD, und alle Zeitangaben erfolgen im UTC-Format gemäß ISO-8601.
Möchten Sie sich lieber erst mit der API vertraut machen, bevor Sie Code schreiben? In unserer Postman-Sammlung sind alle Endpunkte bereits vorkonfiguriert – einschließlich Authentifizierung, Beispiel-Content-Teils und Abfrageparameter.
Postman-Sammlung herunterladen
apiKey zu einem Schlüssel aus Unternehmens-Einstellungen → API-Schlüssel.baseUrl für Ihre Umgebung – standardmäßig ist „Produktion“ eingestellt.Authentifizieren Sie jede Anfrage mit Ihrem geheimen API-Schlüssel als Bearer-Token und fordern Sie eine JSON-Antwort an. Beide Header sind erforderlich:
Autorisierung: Bearer YOUR_API_KEY
Accept: application/json Sie können Schlüssel in Ihrem Dashboard unter „Geschäftseinstellungen“ → „API-Schlüssel“ generieren und rotieren. Schlüssel werden bei der Erstellung einmalig angezeigt und in gehashter Form gespeichert – sollten Sie einen Schlüssel verlieren, rotieren Sie ihn. Jeder Schlüssel gehört zu einem Modus (Live oder Sandbox) und verfügt über einen festen Satz von Gültigkeitsbereichen.
Jeder Endpunkt erfordert eine bestimmte Funktion des Schlüssels. Ein Schlüssel, bei dem der erforderliche Geltungsbereich fehlt, gibt Folgendes zurück: 403 forbidden_scope.
| Geltungsbereich | Zuschüsse |
|---|---|
Befehle: Schreiben | Aufträge erstellen und genehmigen |
Befehle: Lesen | Bestellungen abrufen und auflisten |
Preis: lesen | Lesen Sie die Preisliste |
Der Testmodus ist eine Eigenschaft des Schlüssels, nicht Ihres Kontos. Ein Sandbox-Schlüssel wird in einer vollständig simulierten Umgebung ausgeführt; ein Live-Schlüssel gibt echte, abrechnungsfähige Bestellungen auf. Sie können beide gleichzeitig verwenden.
Sandbox-Bestellungen unterliegen denselben Validierungs- und Feldzuordnungsregeln sowie den tatsächlichen Preisen, jedoch entfallen dabei die Dateispeicherung, die OCR und die Auftragsabwicklung. Bei der Erstellung durchläuft eine Sandbox-Bestellung automatisch ihren gesamten Lebenszyklus (Bearbeitung → abgeschlossen), wobei dieselben Webhooks wie bei einer Live-Bestellung ausgelöst werden und schließlich ein statisches Beispieldokument bereitgestellt wird.
Jede Antwort und jeder Webhook enthält einen Live-Modus Flag, damit Ihre Integration eine Verzweigung erstellen kann, ohne den Schlüssel zu überprüfen:
livemode: true — echter, abrechnungsfähiger Auftraglivemode: false — Sandbox / TestbestellungDie Anzahl der Anfragen ist pro Organisation begrenzt. Das Standardkontingent beträgt 120 Anfragen pro Minute. Wird dieser Wert überschritten, wird 429 rate_limited; versuchen Sie es nach einer kurzen Wartezeit erneut. Falls Ihre Integration einen höheren Grenzwert benötigt, wenden Sie sich bitte an support@rapidtranslate.org.
Jede erfolgreiche Antwort verpackt ihre Nutzdaten in ein Daten Schlüssel. Endpunkte der Liste fügen einen Meta Block mit Paginierung.
{
"data": {
"id": "9b1c...-uuid",
"reference": "APO-10432",
"status": "processing",
"total": 11270,
"currency": "USD"
}
} {
"data": [ ... ],
"meta": {
"current_page": 1,
"per_page": 25,
"total": 134,
"last_page": 6
}
} Fehler verwenden Standard-HTTP-Statuscodes und geben einen stabilen, maschinenlesbaren Fehlercode zusammen mit einer menschlichen Nachricht. Validierungsfehler fügen ein feldbezogenes Fehler Objekt.
{
"message": "The given data was invalid.",
"error_code": "validation_failed",
"errors": {
"source_language": ["The selected source language is invalid."]
}
} | HTTP | Fehlercode | Bedeutung |
|---|---|---|
| 400 | Fehlerhafte Anfrage | Fehlerhafter Anfragetext |
| 401 | nicht authentifiziert | Fehlender, ungültiger oder widerrufener Schlüssel |
| 402 | Zahlung_fehlgeschlagen | Bestellung bestätigt, Zahlung konnte jedoch nicht eingezogen werden |
| 402 | credit_hold | Die Bestellung überschreitet Ihr Kreditlimit |
| 403 | verbotener_Geltungsbereich | „Key“ verfügt nicht über den erforderlichen Umfang |
| 403 | Konto_gesperrt | Organisation wegen unbezahlter Rechnungen suspendiert |
| 404 | not_found | Für diese Organisation liegt kein solcher Auftrag vor. |
| 409 | doppelte_Referenz | Referenz für eine andere Bestellung wiederverwendet |
| 409 | wartet nicht auf Genehmigung | Die Bestellung wartet nicht auf Ihre Genehmigung |
| 422 | Validierung fehlgeschlagen | Fehlende oder ungültige Felder |
| 429 | rate_limited | Ratenlimit überschritten |
| 500 | server_error | Unerwarteter Serverfehler |
| 503 | Verarbeitung fehlgeschlagen | Die nachgelagerte Verarbeitung (OCR / Preisermittlung) ist fehlgeschlagen |
Die Bestellung Status folgt einem stabilen Lebenszyklus. Diese fünf Werte sind auch diejenigen, die von der Status Filter aktivieren Bestellungen auflisten:
| Status | Bedeutung |
|---|---|
noch ausstehend | Erhalten; Preisgestaltung noch nicht abgeschlossen. insgesamt könnte sein null. |
zur Genehmigung ausstehend | Der Preis steht fest und wartet darauf, dass Sie den Gesamtbetrag genehmigen (nur wenn eine Genehmigung erforderlich ist). |
Verarbeitung | Genehmigt und aktiv; Übersetzung läuft. |
abgeschlossen | Fertig; die übersetzten Dokumente stehen zur Verfügung. |
abgesagt | Die Bestellung wurde storniert. |
Solange ein Auftrag in Bearbeitung ist, werden detailliertere Bezeichnungen (zum Beispiel Dem Übersetzer zugewiesen, Übersetzen, Versendet) können ebenfalls auftreten. Wenn eine Genehmigung erforderlich ist, kann in einem Auftrag kurz darauf hingewiesen werden, Zahlung_fehlgeschlagen oder credit_hold Falls eine Abbuchung nicht möglich war – legen Sie die Zahlungsmethode fest und genehmigen Sie den Vorgang erneut.
GET /Sprachen
Gibt alle unterstützten Sprachen zurück. Verwenden Sie die Name Wert wörtlich als Quellsprache / Zielsprache Bei der Erstellung einer Bestellung werden Bestellungen anhand des Sprachnamens abgeglichen, nicht anhand des Codes.
Erfordert einen authentifizierten Schlüssel.
curl https://www.rapidtranslate.org/api/v1/languages \
-H "Authorization: Bearer IHR_API-SCHLÜSSEL" \
-H "Accept: application/json" {
"data": [
{ "code": "english-uk", "name": "English (UK)", "active": true },
{ "code": "spanish", "name": "Spanish", "active": true }
]
} GET /Preise
Gibt die US-Basispreisliste in USD zurück, auf deren Grundlage Ihre Bestellungen abgerechnet werden. Die Beträge sind Dezimalzeichenfolgen. Die Preise sind gruppiert nach Übersetzung Typ (jeweils mit einem regulär und schnell pro‑Einheit Preis), Lieferung Methode und Apostille — dieselben Werte, die Sie bei der Erstellung einer Bestellung übermitteln.
Geltungsbereich: Preis: lesen
{
"data": {
"country": { "code": "US", "name": "United States" },
"currency": { "code": "USD", "symbol": "$" },
"translation": {
"certified": { "unit": "page", "regular": "27.99", "rapid": "37.99" },
"standard": { "unit": "word", "regular": "0.11", "rapid": "0.15" },
"specialized": { "unit": "page", "regular": "47.99", "rapid": "57.99" },
"naati": { "unit": "page", "regular": "42.99", "rapid": "52.99" },
"sworn": {
"unit": "page",
"note": "Sworn pricing depends on the language pair.",
"language_pairs": [
{ "languages": ["Spanish","English"], "unit": "page", "regular": "57.99", "rapid": "67.99" },
{ "languages": ["Polish","English"], "unit": "page", "regular": "46.99", "rapid": "56.99" }
]
}
},
"delivery": {
"email": "0.00", "notarized_email": "19.99",
"mail_standard": "29.99", "mail_next_day": "55.00"
},
"apostille": { "base": "79.00", "additional_document": "15.00" }
}
} Eidesstattliche Preisangabe. Der Preis für eine beglaubigte Übersetzung richtet sich nach dem Sprachpaar. Sprachpaare listet jedes für die Vereidigung in Frage kommende Paar mit seinem eigenen regulär/schnell Preis. Jede englische Variante (Englisch (US/UK/AU/CA)) wird akzeptiert, und jedes Paar funktioniert in beide Richtungen, sofern es nicht "bidirectional": false.
POST /Bestellungen
Erstellt einen Übersetzungsauftrag und lädt die Quelldateien hoch. Da dieser Endpunkt Dateien überträgt, verwendet er multipart/form-data (kein JSON). Verschachtelte Felder werden in eckigen Klammern angegeben, z. B. Kunde[Name].
Geltungsbereich: Befehle: Schreiben
| Feld | Art | Anmerkungen |
|---|---|---|
Verweis | Zeichenkette erforderlich | Ihre eigene, eindeutige Bestellnummer. Bei erneuter Verwendung wird die bestehende Bestellung zurückgegeben (siehe Idempotenz). |
Kunde[Name] | Zeichenkette erforderlich | Vollständiger Name des Endkunden. |
Kunde[E-Mail] | Zeichenkette erforderlich | E-Mail des Endkunden. |
Quellsprache | Zeichenkette erforderlich | Genauer Wortlaut Name aus Sprachen auflisten. |
Zielsprache | Zeichenkette erforderlich | Genauer Wortlaut Name aus Sprachen auflisten. |
Übersetzungstyp | Zeichenkette erforderlich | Eines von zertifiziert, Standard, spezialisiert, vereidigt, naati. |
Wende | Zeichenkette erforderlich | regulär oder schnell. |
Lieferart | Zeichenkette erforderlich | Eines von E-Mail, notariell beglaubigte E-Mail, mail_standard, Zustellung am nächsten Tag. |
Lieferung[Adresse][...] | Objekt | Erforderlich für mail_standard / Zustellung am nächsten Tag: Straße, Stadt, postal_code, Land (Zustand (optional). Land ist ein ISO-Code, z. B. US. |
Apostille [aktiviert] | boolesch | Apostille-Bearbeitung hinzufügen. Siehe die unten aufgeführten Regeln. |
Apostille [Dokumente] | Ganzzahl | Anzahl der mit einer Apostille zu versehenden Dokumente. Erforderlich, wenn diese Option aktiviert ist. |
Apostille [Zielland] | Zeichenkette | Land, für das die Apostille bestimmt ist. |
Anmerkungen | Zeichenkette | Anweisungen in Freitextform. |
Gutscheincode | Zeichenkette | Ein einzulösender Rabattcode. Offensichtlich ungültige oder nicht anwendbare Codes werden bei der Erstellung abgelehnt. 422 Validierung fehlgeschlagen; der Rabatt selbst wird erst nach der Preisermittlung für die Bestellung endgültig festgelegt (siehe Hinweis unten). |
Dateien[] | Datei[] erforderlich | 1–20 Dateien. Zulässige Dateiformate: pdf, jpg, jpeg, png, doc, docx, tiff, heic. Maximal 20 MB pro Datei. |
Verweis ist für jede Organisation einzigartig. Eine erneute Erstellung mit denselben Verweis gibt die vorhandene Bestellung zurück mit 200 anstatt ein Duplikat zu erstellen (eine neue Bestellung führt zu 201). mail_standard Versandart. Zustellung am nächsten Tag gilt nur für Adressen in den USA. curl -X POST https://www.rapidtranslate.org/api/v1/orders \
-H "Authorization: Bearer IHR_API_SCHLÜSSEL" \
-H "Accept: application/json" \
-F "reference=APO-10432" \
-F „customer[name]=Jane Doe“ \
-F „customer[email]=jane@example.com“ \
-F „source_language=Spanisch“ \
-F „target_language=Englisch (US)“ \
-F „translation_type=certified“ \
-F „turnaround=regular“ \
-F „delivery[method]=email“ \
-F „files[]=@/path/to/birth-certificate.pdf“ {
"data": {
"id": "9b1c2d3e-...-uuid",
"reference": "APO-10432",
"livemode": true,
"status": "pending",
"source_language": "Spanish",
"target_language": "English (US)",
"translation_type": "certified",
"turnaround": "regular",
"total": null,
"currency": "USD",
"created_at": "2026-08-28T10:15:00+00:00"
}
} Ein neu erstellter Auftrag beginnt wie folgt: noch ausstehend mit einem null Gesamtsumme während der Preisberechnung. Umfrage Eine Bestellung abrufen oder achten Sie auf das Bestellstatus Webhook, um die Preis- und Statusaktualisierung anzuzeigen.
Gutscheine. A Gutscheincode wird in zwei Schritten geprüft. Beim Anlegen überprüfen wir, was nicht von der Dokumentlänge abhängt – die Gültigkeit des Codes, Nutzungsbeschränkungen und für welche Übersetzungs- bzw. Dienstleistungsarten er gilt – und lehnen einen fehlerhaften Code sofort ab. Regeln, die von der Seiten- oder Wortzahl (sowie der Höhe des Rabatts selbst) abhängen, werden erst nach der Zählung des Dokuments ausgewertet, sodass der Rabatt auf der preislich insgesamt, nicht der anfängliche noch ausstehend Antwort: Sollte sich nach Feststellung der Stückzahl herausstellen, dass ein Gutschein nicht gültig ist, wird die Bestellung dennoch zum vollen Preis aufgegeben und zur Überprüfung durch unser Team gekennzeichnet.
GET /bestellungen/{id}
Ruft eine einzelne Bestellung anhand ihrer id (die bei der Erstellung zurückgegebene UUID). Gibt 404 nicht gefunden falls die Bestellung nicht zu Ihrer Organisation gehört.
Geltungsbereich: Befehle: Lesen
curl https://www.rapidtranslate.org/api/v1/orders/9b1c2d3e-...-uuid \
-H "Authorization: Bearer IHR_API_SCHLÜSSEL" \
-H "Accept: application/json" GET /Bestellungen
Gibt die Bestellungen Ihrer Organisation zurück, beginnend mit den neuesten, mit Paginierung in Meta. Alle Abfrageparameter sind optional.
Geltungsbereich: Befehle: Lesen
| Abfrage | Anmerkungen |
|---|---|
Status | Eines von noch ausstehend, zur Genehmigung ausstehend, Verarbeitung, abgeschlossen, abgesagt. |
Verweis | Nach Ihrer Referenznummer filtern. |
Quellsprache / Zielsprache | Nach Sprachbezeichnung filtern. |
created_from / created_to | Datumsbereich (einschließlich). |
sortieren | -Erstellungsdatum (Standard, neueste zuerst) oder created_at (nach Alter sortiert, älteste zuerst). |
pro Seite | 1–100. Standardmäßig wird die Standardseitengröße verwendet. |
Seite | Seitenzahl. |
curl "https://www.rapidtranslate.org/api/v1/orders?status=completed&per_page=50" \
-H "Authorization: Bearer IHR_API-SCHLÜSSEL" \
-H "Accept: application/json" POST /orders/{id}/approve
Genehmigt den berechneten Gesamtbetrag für eine Bestellung, die zur Genehmigung ausstehend, wodurch der Vorgang ausgeführt wird. Dies ist nur erforderlich, wenn für Ihr Konto vor Beginn der Arbeiten eine Genehmigung erforderlich ist. Der Aufruf ist idempotent.
Geltungsbereich: Befehle: Schreiben
curl -X POST https://www.rapidtranslate.org/api/v1/orders/9b1c2d3e-...-uuid/approve \
-H "Authorization: Bearer IHR_API-SCHLÜSSEL" \
-H "Accept: application/json" Bei Erfolg wird der aktualisierte Auftrag zurückgegeben. Wenn der Auftrag nicht zur Genehmigung ansteht, erhalten Sie 409 nicht zur Genehmigung anstehend; wenn ein Ladevorgang erforderlich ist, dieser aber fehlschlägt, erhältst du 402 Zahlung fehlgeschlagen oder 402 credit_hold.
Die festen Sätze, die bei der Erstellung eines Auftrags akzeptiert werden.
| Wert | Beschreibung |
|---|---|
zertifiziert | Beglaubigte Übersetzung (Preis pro Seite). |
Standard | Standardübersetzung (Preis pro Wort). |
spezialisiert | Fachübersetzung (pro Seite). |
vereidigt | Beglaubigte Übersetzung (pro Seite). |
naati | NAATI-zertifizierte Übersetzung (pro Seite). |
| Wert | Beschreibung |
|---|---|
regulär | Standard-Bearbeitungszeit. |
schnell | Beschleunigte Bearbeitung. |
| Wert | Adresse | Beschreibung |
|---|---|---|
E-Mail | Nein | Digitale Zustellung per E-Mail (kostenlos). |
notariell beglaubigte E-Mail | Nein | Notariell beglaubigte digitale Übermittlung. |
mail_standard | Ja | Postversand; Versand in unterstützte Länder. |
Zustellung am nächsten Tag | Ja | Zustellung am nächsten Werktag (nur für Adressen in den USA). |
Anstatt Abfragen durchzuführen, richten Sie einen Webhook-Endpunkt ein, um Ereignisse in Echtzeit zu empfangen. Legen Sie Ihre URL fest und rufen Sie Ihr Signaturgeheimnis unter „Geschäftseinstellungen“ → „Webhooks“ ab. Webhooks sind eine praktische Ergänzung – das Abrufen einer Bestellung ist stets maßgebend.
| Veranstaltung | Gesendet am |
|---|---|
Bestellstatus | Der Status eines Auftrags ändert sich. |
Kundenbewertung | Für einen Auftrag wurde ein Preis festgelegt, und er wartet auf Ihre Genehmigung (nur im Genehmigungsmodus). |
Dokumentenlieferung | Die übersetzten Dokumente liegen bereit, einschließlich der Download-Links. |
Zahlung_fehlgeschlagen | Die Gebühr für einen genehmigten Auftrag konnte nicht eingezogen werden – dies hat zur Folge, dass Misserfolg Block (Grund, Nachricht). Aktualisieren Sie die Wallet-Karte und bestätigen Sie den Vorgang erneut. |
credit_hold | Eine genehmigte Bestellung würde Ihr Kreditlimit überschreiten – damit ist eine credit_hold Block (Nachricht). Rechnungen begleichen oder ein höheres Limit beantragen. |
Jede Sendung wird in demselben Umschlag verschickt: einem Veranstaltung Block (einschließlich Live-Modus) und ein ereignisspezifisches Daten Block.
{
"event": {
"type": "order_status",
"id": "evt_9b1c...",
"livemode": true,
"sent_at": "2026-08-28T10:20:00+00:00"
},
"data": {
"order": {
"id": "9b1c2d3e-...-uuid",
"reference": "APO-10432",
"status": "completed"
}
}
} Die Dokumentenlieferung Das Ereignis fügt ein Dokumente Array (jeweils mit Name, download_url, Version, Status) und ein Portal Link. Der Kundenbewertung Das Ereignis fügt eine detaillierte Aufstellung hinzu Preisgestaltung Block und ein actions.approve Objekt mit der aufzurufenden URL.
Jede Anfrage ist signiert, sodass Sie überprüfen können, ob sie tatsächlich von RapidTranslate stammt. Wir senden drei Header:
| Kopfzeile | Wert |
|---|---|
X-RapidTranslate-Signatur | sha256=<hmac> |
X-RapidTranslate-Zeitstempel | In der Signatur verwendeter Unix-Zeitstempel |
X-RapidTranslate-Veranstaltung | Die eindeutige Ereignis-ID |
Berechne die erwartete Signatur als HMAC-SHA256 der Zeichenkette "{timestamp}.{raw_request_body}" Verwenden Sie dazu Ihr Webhook-Signatur-Geheimnis und vergleichen Sie es anschließend mit dem Wert im Header:
// PHP
$expected = 'sha256=' . hash_hmac(
'sha256',
$timestamp . '.' . $rawBody,
$webhookSecret
);
$valid = hash_equals($expected, $signatureHeader); Node.js (Express) – Binde die Route mit einem Raw-Body-Parser ein, damit die genauen Bytes erhalten bleiben:
// app.use('/webhooks/rapidtranslate', express.raw({ type: 'application/json' }))
const crypto = require('crypto');
const timestamp = req.get('X-RapidTranslate-Timestamp');
const received = req.get('X-RapidTranslate-Signature'); // "sha256=..."
const rawBody = req.body; // Buffer, untouched
const expected = 'sha256=' + crypto
.createHmac('sha256', WEBHOOK_SECRET)
.update(`${timestamp}.${rawBody}`)
.digest('hex');
const valid = received &&
crypto.timingSafeEqual(Buffer.from(received), Buffer.from(expected)); Drei Dinge bereiten den Menschen Schwierigkeiten:
X-RapidTranslate-Signatur Die Kopfzeile enthält eine sha256= Präfix. Entweder mit folgendem vergleichen: 'sha256=' + yourHmac (wie oben) oder entferne das Präfix vor dem Vergleich – vergleiche nicht den reinen Hexadezimalwert mit dem gesamten Header.hash_equals / crypto.timingSafeEqual), niemals mit == oder ===.Die {timestamp} ist Teil der signierten Zeichenfolge, also lies sie aus dem Header aus und füge sie vor dem Hashing vor. Außerdem kannst du damit veraltete oder erneut gesendete Zustellungen zurückweisen – z. B. alle Zeitstempel, die älter als fünf Minuten sind.
Fehlgeschlagene Übermittlungen werden mit exponentiellem Backoff erneut versucht (bis zu 5 Versuche). Antworte mit einem 2xx Status zur Empfangsbestätigung.