Dokumentacja API

Translayer API

Zintegruj tłumaczenie wizualne napędzane AI ze swoim przepływem pracy. Przesyłaj strony, śledź postęp w czasie rzeczywistym, pobieraj wyniki.

Bazowy URL: https://translayer.app/api

Uwierzytelnianie

Translayer API wykorzystuje Twój Firebase UID do uwierzytelniania. Przekaż swój userId w treści żądania.

Wymagany plan Pro. Dostęp do API jest dostępny w planie Pro ($199/miesiąc). Wygeneruj swój klucz API w Panel → Ustawienia.
POST

/api/translate

Prześlij obrazy do tłumaczenia. Zwraca identyfikator zadania do śledzenia postępu.

Żądanie (multipart/form-data)

Pole Typ Opis
imagesFile[]Page images (JPG, PNG, WebP). Required.
sourceLangstringSource language or "auto" for detection.
targetLangstringTarget language (e.g. "pl", "en", "ja").
modestring"fast" (0.5x credits), "standard" (1x), "advanced" (2x).
resolutionstring"original", "1K", "2K", "4K".
userIdstringYour Firebase UID. Required.
customPromptstringOptional translation instructions.

Formuła kosztu kredytów

credits = ceil(pages × resolution_multiplier × mode_multiplier)

Przykład (cURL)

curl -X POST https://translayer.app/api/translate \
  -F "images=@page1.jpg" \
  -F "images=@page2.jpg" \
  -F "sourceLang=en" \
  -F "targetLang=ja" \
  -F "mode=standard" \
  -F "resolution=2K" \
  -F "userId=YOUR_FIREBASE_UID"

Odpowiedź

{
  "jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "mode": "standard",
  "creditsNeeded": 4
}
402 — Niewystarczające kredyty 400 — Nie przesłano plików
GET

/api/jobs/:jobId/events

Strumień zdarzeń SSE w czasie rzeczywistym do śledzenia postępu tłumaczenia.

Przykład (JavaScript)

const es = new EventSource('/api/jobs/' + jobId + '/events');
es.onmessage = (event) => {
  const job = JSON.parse(event.data);
  console.log(job.status, job.progress + '/' + job.total);
  if (job.status === 'completed' || job.status === 'failed') {
    es.close();
  }
};

Zawartość zdarzenia

{
  "id": "job-uuid",
  "status": "processing",    // pending | processing | completed | failed
  "progress": 3,
  "total": 10,
  "currentFile": "page_003.jpg",
  "results": [
    { "sourceFilename": "page_001.jpg", "url": "/api/outputs/..." }
  ]
}
GET

/api/download/:jobId

Pobierz wszystkie przetłumaczone strony jako archiwum ZIP.

Przykład (cURL)

curl -o translated.zip https://translayer.app/api/download/JOB_ID

Przechowywanie plików

Plan Okres przechowywania
Free3 days
Starter14 days
Standard30 days
Pro90 days
404 — Nie znaleziono zadania 410 — Wygasło
DELETE

/api/projects/:id

Usuń projekt tłumaczeniowy i jego pliki wyjściowe.

Przykład (cURL)

curl -X DELETE https://translayer.app/api/projects/JOB_ID \
  -H "Content-Type: application/json" \
  -d '{"userId": "YOUR_FIREBASE_UID"}'
403 — Brak autoryzacji 404 — Nie znaleziono
POST

/api/checkout

Utwórz sesję Stripe Checkout do zakupu subskrypcji lub pakietu kredytów.

curl -X POST https://translayer.app/api/checkout \
  -H "Content-Type: application/json" \
  -d '{
    "priceId": "price_xxx",
    "mode": "subscription",
    "userId": "YOUR_FIREBASE_UID"
  }'

// Response: { "url": "https://checkout.stripe.com/..." }

Kompletny przykład (Python)

import requests, json, sseclient

BASE = "https://translayer.app/api"
UID = "your_firebase_uid"

# 1. Upload pages for translation
files = [("images", open(f"page_{i}.jpg", "rb")) for i in range(1, 6)]
data = {"sourceLang": "en", "targetLang": "ja", "mode": "standard",
        "resolution": "2K", "userId": UID}
res = requests.post(f"{BASE}/translate", files=files, data=data)
job_id = res.json()["jobId"]
print(f"Job started: {job_id}")

# 2. Track progress via SSE
response = requests.get(f"{BASE}/jobs/{job_id}/events", stream=True)
client = sseclient.SSEClient(response)
for event in client.events():
    job = json.loads(event.data)
    print(f"{job['progress']}/{job['total']} - {job['status']}")
    if job["status"] in ("completed", "failed"):
        break

# 3. Download ZIP
if job["status"] == "completed":
    zip_res = requests.get(f"{BASE}/download/{job_id}")
    with open("translated.zip", "wb") as f:
        f.write(zip_res.content)
    print("Downloaded translated.zip")

Limity i kwoty

Plan Stron/miesiąc Równoczesne zadania Maks. rozmiar pliku
Free1015 MB
Starter75210 MB
Standard500525 MB
Pro1,0001050 MB

Gotowy do integracji?

Zacznij od darmowego planu lub przejdź na Pro, aby uzyskać pełny dostęp do API.

Zacznij za darmo