Obraz na Facebooku
03 godziny 10 minut 31 sekund
Dokumentacja dla programistów

Rapid Translate API

Składaj i śledź zamówienia na tłumaczenia dokumentów certyfikowanych programowo. Interfejs API REST przez HTTPS, uwierzytelniany tokenem nośnika i zwracający JSON — z podpisanymi webhookami dla każdego zdarzenia.

Podstawowy adres URL https://www.rapidtranslate.org/api/v1
Wersja v1
Format JSON
create-order.sh
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
}

Wstęp

Ten Rapid Translate API pozwala Twojej aplikacji przesyłać dokumenty do tłumaczenia uwierzytelnionego, sprawdzać aktualny status i ceny oraz odbierać gotowe pliki – bez konieczności kontaktowania się Twojego zespołu z naszym zespołem. API jest przeznaczone dla firm, które zlecają tłumaczenia w imieniu swoich klientów.

Wszystkie prośby są kierowane do https://www.rapidtranslate.org/api/v1 przez HTTPS. Żądania i odpowiedzi są w formacie JSON, z wyjątkiem tworzenia zamówienia, które przesyła pliki jako multipart/form-data. Wszystkie kwoty są zwracane w formie centy całkowite w USD, a wszystkie znaczniki czasu podano w formacie UTC ISO‑8601.

Uzyskiwanie dostępu. Dostęp do API jest dostępny dla kont organizacji. Dodaj swoją firmę w panelu, a następnie wygeneruj klucze w Ustawieniach firmy → Klucze API . Jeśli nie masz jeszcze konta firmowego, skontaktuj się z nami pod adresem support@rapidtranslate.org .

Kolekcja Listonosza

Wolisz klikać w API przed napisaniem kodu? Nasza kolekcja Postman zawiera wszystkie wstępnie skonfigurowane punkty końcowe — uwierzytelnianie, przykładowe treści i parametry zapytania.

Pobierz kolekcję Postman

  1. W programie Postman wybierz Plik → Importuj i wybierz pobrany plik.
  2. Otwórz kolekcję Zmienne i ustaw klucz API do klucza od Ustawienia biznesowe → Klucze API.
  3. (Opcjonalnie) Ustaw adres URL bazowy dla Twojego środowiska — domyślnie jest to środowisko produkcyjne.
  4. Wyślij dowolne zapytanie. Użyj klucza Sandbox do testowania bez składania zamówień płatnych.

Uwierzytelnianie

Uwierzytelniaj każde żądanie za pomocą swojego tajnego klucza API jako tokenu nośnika i poproś o odpowiedź JSON. Wymagane są oba nagłówki:

Autoryzacja: Nośnik YOUR_API_KEY Akceptacja: application/json

Generuj i rotuj klucze w panelu sterowania w Ustawieniach firmowych → Klucze API . Klucze są wyświetlane jednorazowo podczas tworzenia i przechowywane w postaci hashowanej — jeśli zgubisz klucz, możesz go rotować. Każdy klucz należy do jednego trybu (Live lub Sandbox) i zawiera stały zestaw zakresów.

Zakresy

Każdy punkt końcowy wymaga określonej zdolności klucza. Klucz, który nie spełnia wymaganego zakresu, zwraca 403 zabroniony_zakres.

ZakresDotacje
zamówienia: napiszTworzenie i zatwierdzanie zamówień
zamówienia:przeczytajPobieranie i wyświetlanie zamówień
cena:przeczytanePrzeczytaj cennik
Utrzymuj klucze w tajemnicy. Aktywny klucz może służyć do składania zamówień płatnych. Nigdy nie udostępniaj go w kodzie po stronie klienta, przeglądarkach ani publicznych repozytoriach.

Tryb piaskownicy i testowy

Tryb testowy jest właściwością klucza , a nie Twojego konta. Klucz Sandbox działa w w pełni symulowanym środowisku, natomiast klucz Live składa rzeczywiste, rozliczane zamówienia. Możesz używać obu jednocześnie.

Zamówienia w trybie sandbox korzystają z tych samych procedur walidacji, mapowania pól i rzeczywistych cen, ale pomijają przechowywanie plików, OCR i realizację. Po utworzeniu zamówienie w trybie sandbox automatycznie przechodzi przez cykl życia (przetwarzanie → ukończone), uruchamiając te same webhooki, co zamówienie na żywo i na koniec dostarczając statyczny przykładowy dokument.

Każda odpowiedź i webhook niesie ze sobą tryb na żywo flagę, dzięki której integracja będzie mogła się rozgałęziać bez konieczności sprawdzania klucza:

  • tryb na żywo: prawda — rzeczywiste, płatne zamówienie
  • tryb na żywo: fałsz — piaskownica / kolejność testowania

Limity stawek

Liczba żądań jest ograniczona do organizacji. Domyślny limit wynosi 120 żądań na minutę. Przekroczenie go zwraca 429 rate_limited; spróbuj ponownie po krótkim odczekaniu. Jeśli Twoja integracja wymaga wyższego limitu, skontaktuj się z wsparcie@rapidtranslate.org.

Odpowiedzi

Każda pomyślna odpowiedź zawiera swój ładunek dane klucz. Lista punktów końcowych dodaje meta blok z paginacją.

Pojedynczy zasób

{
  "data": {
    "id": "9b1c...-uuid",
    "reference": "APO-10432",
    "status": "processing",
    "total": 11270,
    "currency": "USD"
  }
}

Lista stronicowana

{
  "data": [ ... ],
  "meta": {
    "current_page": 1,
    "per_page": 25,
    "total": 134,
    "last_page": 6
  }
}

Błędy

Błędy korzystają ze standardowych kodów stanu HTTP i zwracają stabilny, czytelny dla maszyny kod. kod_błędu obok wiadomości ludzkiej. Błędy walidacji dodają pole z kluczem błędy obiekt.

{
  "message": "The given data was invalid.",
  "error_code": "validation_failed",
  "errors": {
    "source_language": ["The selected source language is invalid."]
  }
}
HTTPkod_błęduOznaczający
400złe_żądanieNieprawidłowo sformatowana treść żądania
401nieuwierzytelnionyBrakujący, nieprawidłowy lub odwołany klucz
402płatność_nieudanaZamówienie zatwierdzone, ale nie można pobrać płatności
402wstrzymanie_kredytuZamówienie przekracza Twój limit kredytowy
403zakres_zakazanyKlucz nie ma wymaganego zakresu
403konto_zawieszoneOrganizacja zawieszona z powodu niezapłaconych faktur
404nie znalezionoNie ma takiego zamówienia dla tej organizacji
409duplikat_odniesieniaOdniesienie wykorzystane ponownie w innym zamówieniu
409nie_oczekuje_na_zatwierdzenieZamówienie nie oczekuje na Twoją akceptację
422walidacja_nieudanaBrakujące lub nieprawidłowe pola
429stawka_ograniczonaPrzekroczono limit szybkości
500błąd_serweraNieoczekiwany błąd serwera
503przetwarzanie_nie powiodło sięPrzetwarzanie w dół strumienia (OCR/cena) nie powiodło się

Statusy zamówień

Zamówienie status podąża za stabilnym cyklem życia. Te pięć wartości to również te akceptowane przez status filtruj na Zamówienia na liście:

StatusOznaczający
aż doOtrzymano; ustalanie cen nie zostało jeszcze zakończone. całkowity Może nieważny.
oczekujące_zatwierdzenieWyceniono i oczekuje się na akceptację całości przez Ciebie (tylko jeśli akceptacja jest wymagana).
przetwarzanieZatwierdzone i aktywne; tłumaczenie w toku.
zakończonyZakończono; dostępne są przetłumaczone dokumenty.
odwołanyZamówienie zostało anulowane.

W trakcie realizacji zamówienia mogą być potrzebne bardziej szczegółowe etykiety (np. Przypisane do tłumacza, Tłumaczenie, Wysłany) może również się pojawić. W przypadku konieczności zatwierdzenia zamówienie może zawierać krótki raport płatność_nieudana Lub wstrzymanie_kredytu jeśli nie udało się pobrać opłaty — wybierz metodę płatności i zatwierdź ją ponownie.

Wyświetl języki

DOSTAWAĆ /języki

Zwraca wszystkie obsługiwane języki. Użyj nazwa wartość dosłownie jako język_źródłowy / język_docelowy podczas tworzenia zamówienia — zamówienia są dopasowywane na podstawie nazwy języka, a nie kodu.

Wymaga uwierzytelnionego klucza.

curl https://www.rapidtranslate.org/api/v1/languages ​​\ -H "Autoryzacja: Nośnik YOUR_API_KEY" \ -H "Akceptuj: application/json"
{
  "data": [
    { "code": "english-uk", "name": "English (UK)", "active": true },
    { "code": "spanish",     "name": "Spanish",      "active": true }
  ]
}

Uzyskaj cennik

DOSTAWAĆ /ceny

Zwraca amerykańską tabelę stawek bazowych w USD, na podstawie której rozliczane są zamówienia. Kwoty są ciągami dziesiętnymi. Ceny są grupowane według tłumaczenie typ (każdy z regularny I szybki za-jednostka cena), dostawa metoda i apostille — te same wartości, które podajesz podczas tworzenia zamówienia.

Zakres: cena:przeczytane

{
  "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" }
  }
}

Potwierdzone ceny. Ceny tłumaczeń przysięgłych ustalane są za parę językową. pary_językowe wymienia każdą parę uprawnioną do zaprzysiężenia wraz z własną regularny/szybki cena. Akceptowana jest każda odmiana języka angielskiego (angielski (USA/Wielka Brytania/Australia/Kanada)), a każda para działa w obie strony, chyba że jest przetłumaczona „dwukierunkowy”: fałsz.

Utwórz zamówienie

POST /święcenia

Tworzy zlecenie tłumaczenia i przesyła pliki źródłowe. Ponieważ przenosi pliki, ten punkt końcowy używa multipart/form-data (nie JSON). Pola zagnieżdżone używają notacji nawiasowej, np. klient[nazwa].

Zakres: zamówienia: napisz

Parametry ciała

PoleTypNotatki
odniesieniewymagany ciąg znakówTwój własny, unikalny numer zamówienia. Ponowne jego użycie zwraca istniejącą kolejność (patrz idempotentność).
klient[nazwa]wymagany ciąg znakówPełne imię i nazwisko klienta końcowego.
klient[email]wymagany ciąg znakówAdres e-mail klienta końcowego.
język_źródłowywymagany ciąg znakówDokładny język nazwa z Wyświetl języki.
język_docelowywymagany ciąg znakówDokładny język nazwa z Wyświetl języki.
typ_tłumaczeniawymagany ciąg znakówJeden z atestowany, standard, specjalistyczny, przysięgły, naati.
zwrot akcjiwymagany ciąg znakówregularny Lub szybki.
dostawa[metoda]wymagany ciąg znakówJeden z e-mail, notarialnie potwierdzony adres e-mail, standard_poczty, mail_next_day.
dostawa[adres][...]obiektWymagane dla standard_poczty / mail_next_day: ulica, miasto, kod pocztowy, kraj (państwo fakultatywny). kraj jest kodem ISO, np. NAS.
apostille[włączone]wartość logicznaDodaj przetwarzanie apostille. Zobacz zasady poniżej.
apostille[dokumenty]liczba całkowitaLiczba dokumentów do apostille. Wymagana, gdy ta opcja jest włączona.
apostille[kraj_docelowy]smyczkowyKraj, którego dotyczy apostille.
notatkismyczkowyInstrukcje w formie tekstu swobodnego.
kod_kuponusmyczkowyKod rabatowy do zastosowania. Kody ewidentnie nieprawidłowe lub nieodpowiednie są odrzucane podczas tworzenia. 422 walidacja_nieudana; sama zniżka zostaje sfinalizowana po ustaleniu ceny zamówienia (patrz uwaga poniżej).
akta[]plik[] wymagany1–20 plików. Dozwolone formaty: pdf, jpg, jpeg, png, doc, docx, tiff, heic. Maksymalny rozmiar każdego pliku: 20 MB.
Idempotentność. odniesienie jest unikalny dla każdej organizacji. Powtarzanie tworzenia z tą samą odniesienie zwraca istniejące zamówienie z 200 zamiast tworzyć duplikat (zwracane jest nowe zamówienie) 201).
Zasady apostille. Apostille jest dostępne wyłącznie w przypadku, gdy językiem docelowym jest angielski (dowolna odmiana), a w takich zamówieniach należy używać standard_poczty sposób dostawy. mail_next_day dotyczy tylko adresów w USA.

Przykład

curl -X POST https://www.rapidtranslate.org/api/v1/orders \ -H "Autoryzacja: Nośnik TWOJEGO_KLUCZA_API" \ -H "Akceptuj: application/json" \ -F "odniesienie=APO-10432" \ -F "klient[nazwa]=Jane Doe" \ -F "klient[email]=jane@example.com" \ -F "język_źródłowy=Hiszpański" \ -F "język_docelowy=Angielski (USA)" \ -F "typ_tłumaczenia=certyfikowany" \ -F "obrót=regularny" \ -F "dostarczenie[metoda]=email" \ -F "pliki[]=@/ścieżka/do/aktu-urodzenia.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"
  }
}

Nowo utworzone zamówienie rozpoczyna się jako aż do z nieważny suma podczas obliczania ceny. Ankieta Pobierz zamówienie lub posłuchaj status_zamówienia webhook umożliwiający sprawdzenie ceny i aktualizacji statusu.

Kupony. A kod_kuponu Sprawdzanie odbywa się dwuetapowo. Podczas tworzenia weryfikujemy to, co nie zależy od długości dokumentu – poprawność kodu, limity użycia i typy tłumaczeń/usług, do których się odnosi – i natychmiast odrzucamy błędny kod. Reguły zależne od liczby stron/słów (i samej kwoty rabatu) są rozstrzygane po zliczeniu dokumentu, więc rabat pojawia się na ceniony całkowita, nie początkowa aż do odpowiedź. Jeśli po ustaleniu liczby kuponów okaże się, że nie mają one zastosowania, zamówienie i tak zostanie złożone po pełnej cenie i oznaczone do weryfikacji przez nasz zespół.

Pobierz zamówienie

DOSTAWAĆ /zamówienia/{id}

Pobiera pojedyncze zamówienie według jego id (UUID zwrócony podczas tworzenia). Zwraca 404 nie znaleziono jeśli zamówienie nie należy do Twojej organizacji.

Zakres: zamówienia:przeczytaj

curl https://www.rapidtranslate.org/api/v1/orders/9b1c2d3e-...-uuid \ -H "Autoryzacja: Nośnik YOUR_API_KEY" \ -H "Akceptuj: application/json"

Zamówienia na liście

DOSTAWAĆ /święcenia

Zwraca zamówienia Twojej organizacji, od najnowszych na początku, z paginacją metaWszystkie parametry zapytania są opcjonalne.

Zakres: zamówienia:przeczytaj

ZapytanieNotatki
statusJeden z aż do, oczekujące_zatwierdzenie, przetwarzanie, zakończony, odwołany.
odniesienieFiltruj według odniesienia.
język_źródłowy / język_docelowyFiltruj według nazwy języka.
utworzone z / created_toZakres dat (włącznie).
sortować-utworzono_w (domyślnie, najnowsze na początku) lub created_at (najstarsze na początku).
na stronę1–100. Domyślnie jest to standardowy rozmiar strony.
stronaNumer strony.
curl "https://www.rapidtranslate.org/api/v1/orders?status=completed&per_page=50" \ -H "Autoryzacja: Nośnik YOUR_API_KEY" \ -H "Akceptuj: application/json"

Zatwierdź zamówienie

POST /orders/{id}/approve

Zatwierdza obliczoną sumę dla zamówienia, które jest oczekujące_zatwierdzenie, aktywując go do realizacji. Jest to potrzebne tylko wtedy, gdy Twoje konto wymaga zatwierdzenia przed rozpoczęciem pracy. Wywołanie jest idempotentne.

Zakres: zamówienia: napisz

curl -X POST https://www.rapidtranslate.org/api/v1/orders/9b1c2d3e-...-uuid/approve \ -H "Autoryzacja: Nośnik YOUR_API_KEY" \ -H "Akceptuj: application/json"

W przypadku powodzenia zaktualizowane zamówienie zostanie zwrócone. Jeśli zamówienie nie oczekuje na zatwierdzenie, otrzymasz 409 nie_oczekuje_na_zatwierdzenie; jeśli wymagana jest opłata, ale się nie powiedzie, otrzymasz 402 płatność_nieudana Lub 402 wstrzymanie kredytu.

Wartości pól

Zestawy stałe akceptowane są podczas tworzenia zamówienia.

Typy tłumaczeń

WartośćOpis
atestowanyTłumaczenie poświadczone (cena za stronę).
standardTłumaczenie standardowe (cena za słowo).
specjalistycznyTłumaczenie specjalistyczne / eksperckie (za stronę).
przysięgłyTłumaczenie przysięgłe (za stronę).
naatiTłumaczenie poświadczone NAATI (za stronę).

Zmiana kierunku

WartośćOpis
regularnyStandardowy czas realizacji.
szybkiSzybka realizacja.

Metody dostawy

WartośćAdresOpis
e-mailNIEDostawa cyfrowa pocztą elektroniczną (bezpłatna).
notarialnie potwierdzony adres e-mailNIEPoświadczona notarialnie dostawa cyfrowa.
standard_pocztyTakPoczta tradycyjna; wysyłka do obsługiwanych krajów.
mail_next_dayTakPrzesyłka pocztowa następnego dnia roboczego (tylko adresy w USA).

Webhooki

Zamiast sondowania, skonfiguruj punkt końcowy webhooka, aby odbierać zdarzenia w momencie ich wystąpienia. Ustaw swój adres URL i wyświetl swój klucz podpisu w Ustawieniach firmowych → Webhooki . Webhooki to wygoda — pobranie zamówienia jest zawsze autoryzowane.

Wydarzenia

WydarzenieWysłane kiedy
status_zamówieniaZmiana statusu zamówienia.
recenzja_klientaZamówienie jest wycenione i czeka na Twoją akceptację (tylko w trybie akceptacji).
dostawa_dokumentuPrzetłumaczone dokumenty są już gotowe i zawierają adresy URL umożliwiające pobranie.
płatność_nieudanaNie można pobrać opłaty za zatwierdzone zamówienie — niesie ze sobą awaria blok (powód, wiadomość). Zaktualizuj kartę portfela i zatwierdź ponownie.
wstrzymanie_kredytuZatwierdzone zamówienie przekroczy Twój limit kredytowy — niesie ze sobą wstrzymanie_kredytu blok (wiadomość). Rozlicz faktury lub poproś o wyższy limit.

Koperta

Każda przesyłka ma taką samą kopertę: wydarzenie blok (w tym tryb na żywo) i wydarzenie specyficzne dla danego wydarzenia dane blok.

{
  "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"
    }
  }
}

Ten dostawa_dokumentu wydarzenie dodaje dokumenty tablica (każda z nazwa, adres_url_pobierania, wersja, status) i portal łącze. recenzja_klienta wydarzenie dodaje wyszczególniony wycena blok i działania.zatwierdź obiekt z adresem URL do wywołania.

Weryfikacja podpisów

Każde żądanie jest podpisane, dzięki czemu możesz potwierdzić, że pochodzi od Rapid Translate Wysyłamy trzy nagłówki:

ChodnikowiecWartość
X-RapidTranslate-Podpissha256=<hmac>
X-RapidTranslate-Znacznik czasuZnak czasu Unix używany w podpisie
Wydarzenie X-RapidTranslateUnikalny identyfikator zdarzenia

Oblicz oczekiwany podpis jako HMAC‑SHA256 ciągu "{znacznik czasu}.{surowa_treść_żądania}" używając tajnego klucza podpisu webhooka, a następnie porównaj go z wartością nagłówka:

// PHP
$expected = 'sha256=' . hash_hmac(
    'sha256',
    $timestamp . '.' . $rawBody,
    $webhookSecret
);
$valid = hash_equals($expected, $signatureHeader);

Node.js (Express) — zamontuj trasę za pomocą surowego parsera treści, aby zachować dokładne bajty:

// 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));

Są trzy rzeczy, które ludziom przeszkadzają:

  • Ten X-RapidTranslate-Podpis nagłówek zawiera sha256= prefiks. Porównaj z 'sha256=' + twójHmac (jak powyżej) lub usuń prefiks przed porównaniem — nie dopasowuj gołego kodu szesnastkowego do całego nagłówka.
  • Przeprowadź hash surowego tekstu żądania dokładnie tak, jak go otrzymano. Ponowna serializacja sparsowanego JSON zmienia odstępy i kolejność kluczy, więc podpis nie będzie pasował — odczytaj tekst żądania, zanim jakiekolwiek oprogramowanie pośredniczące JSON go sparsuje.
  • Porównaj w czasie stałym (hash_equals / crypto.timingSafeEqual), nigdy z == Lub ===.

Ten {znacznik czasu} jest częścią podpisanego ciągu, więc odczytaj go z nagłówka i dodaj przed haszowaniem. Pozwala to również odrzucać nieaktualne lub powtarzane przesyłki — np. te ze znacznikiem czasu starszym niż pięć minut.

Nieudane dostawy są ponawiane z wykładniczym opóźnieniem (do 5 prób). Odpowiedz 2xx status potwierdzenia odbioru.