Rental B2B Translation API

One REST endpoint. Returns a USCIS-ready DOCX (or structured JSON) suitable for international rental paperwork, or wherever you need a certified translation in a few seconds.

Authentication

All requests require a bearer API key. Generate one from your partner portal at /partner/<slug>/api-keys. Keys start with jl_live_.

Idempotency

Every request must include an Idempotency-Key header — any UUID you generate. We dedupe identical keys for 24 hours. A retried request with the same key returns 409 duplicate; a new key triggers a fresh translation.

Rate limits

60 requests/min per API key by default. Contact us if you need more. On exceed we return 429 rate_limited; back off per Retry-After.

Example request

curl https://jukelingo.com/api/v1/rental/translate \
  -H "Authorization: Bearer jl_live_XXXXXXXXXXXXXXXX" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 7e2a4c8d-4b1a-4b8a-9c5d-1234567890ab" \
  -d '{
    "document_url": "https://partner.example.com/uploads/license.pdf",
    "source_language": "es",
    "employee_code": "EMP-001",
    "output_format": "docx"
  }'

Example response

{
  "order_id": "9f3c8b1e-...",
  "download_url": "https://r2.cloudflarestorage.com/...?signed",
  "translated_fields": null,
  "employee_code": "EMP-001",
  "processing_time_ms": 4812
}

download_url is a 24-hour signed URL when output_format is "docx" or "pdf". For output_format: "json", the structured translation appears in translated_fields instead.

Error responses

StatusErrorMeaning
400invalid bodyMissing or malformed fields. See issues.
400missing_idempotency_keyAdd an Idempotency-Key header.
401unauthorizedMissing / invalid / revoked key.
403insufficient_scopeKey lacks the rental.translate scope.
409duplicateThis Idempotency-Key was already used in the last 24h.
429rate_limitedPer-key RPM exceeded.
503translation_unavailableTranslation capacity temporarily unavailable. Retry later.

White-label letterhead

Upload a PNG letterhead via the admin partner edit UI. DOCX/PDF outputs will embed it at the top.