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 |
|---|---|---|
| images | File[] | Page images (JPG, PNG, WebP). Required. |
| sourceLang | string | Source language or "auto" for detection. |
| targetLang | string | Target language (e.g. "pl", "en", "ja"). |
| mode | string | "fast" (0.5x credits), "standard" (1x), "advanced" (2x). |
| resolution | string | "original", "1K", "2K", "4K". |
| userId | string | Your Firebase UID. Required. |
| customPrompt | string | Optional 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 |
|---|---|
| Free | 3 days |
| Starter | 14 days |
| Standard | 30 days |
| Pro | 90 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 |
|---|---|---|---|
| Free | 10 | 1 | 5 MB |
| Starter | 75 | 2 | 10 MB |
| Standard | 500 | 5 | 25 MB |
| Pro | 1,000 | 10 | 50 MB |
Gotowy do integracji?
Zacznij od darmowego planu lub przejdź na Pro, aby uzyskać pełny dostęp do API.
Zacznij za darmo