Before you begin
You need:- An Internal app API key (
sk-...) with thefiles:write,quotes:write,quotes:approve,orders:read,documents:read, andwebhooks:managescopes. See Authentication. - Net-terms invoicing on your account to approve quotes through the API. Contact support to turn it on.
- A webhook endpoint subscribed to
quote.*,order.*, andfile.*. See Webhooks to set one up.
1
Send the documents
Upload each file you want translated:If the documents live on your own storage, ingest them by URL instead. We
download them in the background and send Wait until every file is
file.ready (or file.failed) for
each one:ready before you create the quote. You can also skip
this step and pass the URLs in document_urls.2
Create a translation quote
Set The quote is created in status Translation fields:
quote_type to translation and name the language of the source documents:requested:You can give a language as its English name (
Spanish), or as an ISO 639-1
(es) or ISO 639-2 (spa) code. The quote returns it in a normalized form,
such as spanish. If we don’t recognize a value, we keep it as you sent it and
our team confirms it when pricing the quote.If your documents are in more than one language, create one quote per source
language.3
Review the price
Our team reviews each document and prices the quote. When it’s priced, the quote moves to
awaiting_payment and you receive quote.ready.
The documents on the quote carry what we found, including page_count,
word_count, and the detected source_language:4
Approve the quote
ord_...) and bills it to your open invoice. You
receive quote.approved and order.created.5
Collect the translations
You receive Then request a download URL for each translation. The URL is valid for one hour:
order.in_progress when a translator starts and order.completed
when the translations are delivered. Fetch the order and pick the documents
whose document_role is translation:Handle the events
This handler follows a translation from upload to delivery. It records progress on your case, then downloads each translation when the order completes. It usesverifyFortisSignature from the webhooks guide.
Deliveries can arrive out of order or more than once. Deduplicate on the
X-Fortis-Delivery header, and fetch the order when you need its current
state.