API Documentation
The RushTranslate API lets you submit, track, and manage translation orders, making it easy to integrate translation services into your application. This guide covers everything you need to get started.
Introduction
The RushTranslate API provides a seamless way to integrate professional document translation services into your applications. Whether you're managing document translations at scale or need certified translations with notarization, our API allows you to automate the entire workflow—from submitting files to retrieving completed translations and managing revisions.
This guide will walk you through the core API functionality, including how to create orders, upload and manage files, approve notarized documents, and track the progress of your translations in real time. With webhook notifications, you can stay updated on order status changes without the need for constant polling. Authentication is handled via secure personal access tokens, ensuring that your data remains protected.
You'll also find details on request formats, authentication methods, response structures, error handling, and rate limits to help you implement the API efficiently. Our sandbox environment allows for testing before deploying in production, ensuring a smooth integration process. Let's get started!
Workflow
To create an order, start by uploading files using individual POST
requests to the files endpoint. The API will return an ID for each file, which you'll include in a POST
request to the orders endpoint to associate them with the order.
Once the order is created, our team will review the files and any notes provided before assigning a translator. The order status will then update to in progress. If notarization is required, you'll need to approve it before finalization via the approval endpoint.
Webhooks allow you to receive real-time notifications when your order status changes, eliminating the need for polling. Files are securely stored on Amazon S3 with no public access and can be downloaded using a temporary signed URL that expires after five minutes.
If you need to request a revision, an endpoint is available for that as well. Reference files for revisions follow the same upload process as when placing an order.
Authentication
The API uses shared secret authentication, requiring your personal access token to be included in the HTTP Authorization
header with the type set to Bearer
. You can manage your tokens from your account settings page once enabled on your profile by our team. Since personal access tokens provide full read/write access to your account, handle them like passwords and keep them secure.
curl https://rushtranslate.com/api/v1/... \
-H "Authorization: Bearer <token>" \
-H "Accept: application/json"
URLs
We provide two environments: a sandbox for testing and a production environment for live applications. All endpoints use the following base URLs:
Sandbox URL
https://sandbox.rushtranslate.com/api/v1
Production URL
https://rushtranslate.com/api/v1
Requests
When making requests, parameters should be sent as JSON with the Content-Type: application/json
header. The only exception is POST
requests to the files endpoint, which require form data with the Content-Type: multipart/form-data
header.
Certain fields, including order notes, comment body, and revision body, support basic HTML tags: b
, br
, em
, li
, ol
, p
, s
, u
, and ul
. Any other tags or attributes will be stripped.
This API implements the following HTTP verbs:
GET
- read resourcesPOST
- create new resourcesPATCH
- modify existing resourcesDELETE
- remove resources
Responses
All endpoints return JSON with the Content-Type: application/json
header.
Status Codes
Standard HTTP response codes indicate the outcome of requests, including successful responses, client errors, and server errors.
Code | Name | Description |
---|---|---|
200 |
OK | Request was successful, and the response contains data |
201 |
Created | Resource was successfully created |
204 |
No Content | Request was successful, but there is no response body |
400 |
Bad Request | The request was malformed or could not be understood |
401 |
Unauthorized | API token is missing or invalid |
403 |
Forbidden | API token is valid, but access is denied |
404 |
Not Found | The requested resource does not exist |
413 |
Entity Too Large | The request exceeds the allowed size limit |
422 |
Unprocessable Entity | Validation failed. The response includes error details |
429 |
Too Many Requests | The request rate limit has been exceeded |
500 |
Internal Server Error | The server encountered an unexpected error |
503 |
Service Unavailable | The server is temporarily unable to process the request |
Error Messages
Status codes other than 204
will return a response object with additional details in the message
key. If validation fails, the API will return a 422
status and include an errors
object, where field names serve as keys and error messages are provided as arrays. Nested fields use dot notation, as shown in the example.
{
"message": "The given data was invalid.",
"errors": {
"services.source_language": [
"The source language field is required."
],
"services.target_language": [
"The target language field is required."
]
}
}
Rate Limiting
Requests are limited to 60 per minute. If the throttle limit is exceeded, a 429
status code will be returned. All responses include headers with your rate limit details.
Name | Description |
---|---|
X-RateLimit-Limit |
Total number of requests allowed per minute. |
X-RateLimit-Remaining |
Number of requests remaining in the current minute. |
Retry-After |
Seconds to wait before the rate limit resets after being exceeded. |
Pagination
Requests returning multiple results are paginated with a default of 60 items. You can override the per_page
value, up to a maximum of 500 items. The response includes links
and meta
objects containing pagination details.
{
"data": [...],
"links": {
"first": "https://rushtranslate.com/api/v1/orders?page=1",
"last": "https://rushtranslate.com/api/v1/orders?page=3",
"prev": "https://rushtranslate.com/api/v1/orders?page=1",
"next": "https://rushtranslate.com/api/v1/orders?page=3"
},
"meta": {
"current_page": 2,
"from": 61,
"last_page": 3,
"path": "https://rushtranslate.com/api/v1/orders",
"per_page": 60,
"to": 120,
}
}
Webhooks
If you specify a callback URL when placing an order via our API, we will send an HTTP POST
request to that URL to notify you of status changes. This request will include JSON in the body.
{
"id": 3290541,
"order_number": "12543-5465123",
"status": "completed",
"updated_at": "2025-03-0T22:00:26Z",
}
The following statuses will trigger a notification, along with their descriptions:
in_progress
- Order has been assigned to a translator.client_review
- Order requires your approval before finalization.completed
- All files have been finalized and are ready for retrieval.cancelled
- Order has been cancelled, and any translation work has stopped.
We listen for the following status codes when making a POST
request:
200
- Request was successful; no retries will be made.406
- Request was not accepted; no retries will be made.- For any other status code, we will retry the
POST
request with the following delays: 15 minutes, 1 hour, 4 hours, 8 hours, and 24 hours.
Sandbox
We offer a sandbox environment to test your code. Contact us for assistance getting your account approved, setup, and personal access token generated. The sandbox is designed to mimic the standard life cycle of an order in our system. Orders and revisions are automatically transitioned to the next status every two minutes. When an order is transitioned out of in_progress we'll associate a single PDF file with the order with a type of translation.
- For orders that include notarization, the status flow is:
received
,in_progress
,client_review
,approved
, thencompleted
. Once the order is transitioned to the status ofclient_review
it will not transition automatically toapproved
. You must approve it using the order approval endpoint. Once approved it will continue transitioning automatically again. - For orders without notarization, the status flow is:
received
,in_progress
, thencompleted
. - For revisions the status flow is:
requested
,in_progress
, thencompleted
.
Languages
The API provides a list of supported languages, including their ISO 639 codes and availability status. These language codes are required when placing orders to specify source and target languages.
Language Object
Field | Type | Description |
---|---|---|
code |
String | ISO 639 language code |
name |
String | Language name |
active |
Boolean | Whether or not the language is currently active |
List Languages
Retrieve the list of supported languages. The response includes language codes, which are required when placing orders via the API. Returns an array of language objects.
Request
GET https://rushtranslate.com/api/v1/languages
Response - 200
[
{
"code": "ar",
"name": "Arabic",
"active": true
},
{
"code": "bg",
"name": "Bulgarian",
"active": true
},
...
]
Files
The API allows you to upload, manage, and retrieve files associated with translation orders. Files can be categorized as source files for translation, reference materials, completed translations, or revisions. This section covers how to create, list, retrieve, download, and delete files, including details on file storage and access via temporary signed URLs.
File Object
Field | Type | Description |
---|---|---|
id |
Number | File identifier |
name |
String | Name |
type |
String | Type of file - source , reference , translation or revision |
size |
Number | File size in bytes |
download_url |
String | Location for file download |
created_at |
String | Time and date when the file was created (UTC) |
List Files
Retrieve a paginated list of files. The response includes a paginated array of file objects.
Request
GET https://rushtranslate.com/api/v1/files
Request Parameters
Field | Type | Required | Description |
---|---|---|---|
certified_from |
String | N | Filter by certified date, returning only those that were certified on or after the specified date |
certified_to |
String | N | Filter by certified date, returning only those that were certified on or before the specified date |
created_from |
String | N | Filter by created date, returning only those that were created on or after the specified date |
created_to |
String | N | Filter by created date, returning only those that were created on or before the specified date |
extension |
String | N | Filter by file extension; docx , pdf , xlsx , etc... |
is_archived |
Boolean | N | Filter by archived status. Default is false |
notarized_from |
String | N | Filter by notarized date, returning only those that were notarized on or after the specified date |
notarized_to |
String | N | Filter by notarized date, returning only those that were notarized on or before the specified date |
order |
Number | N | Filter by order ID |
quote |
Number | N | Filter by quote ID |
search |
String | N | Search by filename |
sort |
String | N | Comma separated list of sort options; certified_at , created_at , extension , filename , notarized_at , size , type , and updated_at . Prepend `-` for descending order. |
type |
String | N | Comma separated list of file type options; source , reference , translation , or revision . |
Response - 200
{
"data": [
{
"id": 2304778,
"name": "School Documents.jpg",
"type": "source",
"size": 39099,
"download_url": "https://rushtranslate.com/api/v1/...",
"created_at": "2025-02-17T15:51:11Z"
},
...
],
"links": {...},
"meta": {...}
}
Create a File
Upload a new file using a form data request with the Content-Type: multipart/form-data
header. File uploads are limited to 100MB, and each file can be attached to only one resource after creation. Returns a file object.
File types
source
- files to be translated, if possible combine multi-page documents into a single file prior to uploadreference
- reference files to assist the translator if being associated with an order resource or marked up files to be associated with a revision resource
Request
POST https://rushtranslate.com/api/v1/files
{
"file": {},
"type": "source"
}
Request Parameters
Field | Type | Required | Description |
---|---|---|---|
file |
Object | Y | File to be uploaded |
type |
String | Y | Type of file - source or reference |
Response - 201
{
"id": 2304778,
"name": "School Documents.jpg",
"type": "source",
"size": 39099,
"download_url": "https://rushtranslate.com/api/v1/...",
"created_at": "2025-02-17T15:51:11Z"
}
Retrieve a File
Retrieve detailed information about a specific file. Returns a file object.
Request
GET https://rushtranslate.com/api/v1/files/:file_id
Response - 200
{
"id": 2304778,
"name": "School Documents.jpg",
"type": "source",
"size": 39099,
"download_url": "https://rushtranslate.com/api/v1/...",
"created_at": "2025-02-17T15:51:11Z"
}
Download a File
Generate a temporary download URL for a file. Files are encrypted and stored in an Amazon S3 bucket. This request returns a signed URL that provides secure access to download the file. URLs expire after five minutes.
Request
GET https://rushtranslate.com/api/v1/files/:file_id/download
Response - 200
{
"url": "https://rushtranslate-s3.amazonaws.com/files/..."
}
Response Attributes
Field | Type | Description |
---|---|---|
url |
String | Temporary download URL |
Delete a File
Files can only be deleted if they have not been associated with a quote or order. To delete other files, please contact our support team.
Request
DELETE https://rushtranslate.com/api/v1/files/:file_id
Response - 204
No Content
Orders
The API allows you to create, manage, and track translation orders efficiently. Orders contain details such as status, language pairs, services, associated files, transactions, and comments. This section covers how to list, retrieve, create, approve, and cancel orders, ensuring seamless integration with your workflow.
Order Object
Field | Type | Description |
---|---|---|
id |
Number | Order identifier |
order_number |
String | Order number |
order_url |
String | Order URL for web app |
reference |
String | Customer-supplied internal reference (number, ID, etc.) |
field1 |
String | Client-supplied data for use in custom coversheets for white label services |
field2 |
String | Client-supplied data for use in custom coversheets for white label services |
origin |
String | Origin of the order - api or website |
status |
String | Current order status - received , in_progress , in_review , client_review , approved , finalizing , in_revision , completed , on_hold , or cancelled |
source_language |
String | ISO 639 source language code |
target_language |
String | ISO 639 target language code |
total |
Number | Order total in cents (USD) |
received_at |
String | Time and date when the order was placed (UTC) |
review_at |
String | Time and date when the order was available for review by the client (UTC) |
approved_at |
String | Time and date when the order was approved by the client (UTC) |
completed_at |
String | Time and date when the order was completed (UTC) |
cancelled_at |
String | Time and date when the order was cancelled (UTC) |
services |
Array | List of service objects |
files |
Array | List of file objects |
transactions |
Array | List of transaction objects |
comments |
Array | List of comment objects |
revisions |
Array | List of revision objects |
Service Object
Field | Type | Description |
---|---|---|
name |
String | Name |
quantity |
Number | Quantity ordered |
price |
Number | Price each in cents (USD) |
discount |
Number | Discount each in cents (USD) |
total |
Number | Total service price in cents (USD) |
Transaction Object
Field | Type | Description |
---|---|---|
type |
String | Type of transaction - charge or refund |
amount |
Number | Transaction amount in cents (USD) |
description |
String | Description of the transaction |
payment_type |
String | Type of payment - invoice |
created_at |
String | Time and date when the transaction was created (UTC) |
Comment Object
Field | Type | Description |
---|---|---|
author |
String | Name of the comment author |
body |
String | Comment body - basic HTML allowed |
created_at |
String | Time and date when the comment was created (UTC) |
List Orders
Retrieve a paginated list of your orders. The response includes a paginated array of order objects.
Request
GET https://rushtranslate.com/api/v1/orders
Request Parameters
Field | Type | Required | Description |
---|---|---|---|
completed_from |
String | N | Filter by completed date, returning only those that were completed on or after the specified date |
completed_to |
String | N | Filter by completed date, returning only those that were completed on or before the specified date |
created_from |
String | N | Filter by created date, returning only those that were created on or after the specified date |
created_to |
String | N | Filter by created date, returning only those that were created on or before the specified date |
search |
String | N | Search by filename or customer reference |
sort |
String | N | Comma separated list of sort options; completed_at , created_at , status , and updated_at . Prepend `-` for descending order. |
source_language |
String | N | Filter by source language ISO 639 language code |
target_language |
String | N | Filter by target language ISO 639 language code |
Response - 200
{
"data": [
{
"id": 3290112,
"order_number": "55112-7859361",
"order_url": "https://rushtranslate.com/order/55112-7859361/mC18ihWVx...",
"reference": "HN-2632",
"field1": "John Anderson",
"field2": "Feb 1, 2025",
"origin": "api",
"status": "completed",
"source_language": "es",
"target_language": "en",
"total": 11270,
"received_at": "2025-02-17T15:52:13Z",
"review_at": "2025-02-17T09:15:22Z",
"approved_at": "2025-02-17T11:43:35Z",
"completed_at": "2025-02-17T14:04:50Z",
"cancelled_at": null
},
...
],
"links": {...},
"meta": {...}
}
Create an Order
Create a new order. Files must be uploaded first, as their IDs will be included in the files
array of this request. Returns an order object.
Request
POST https://rushtranslate.com/api/v1/orders
{
"reference": "HN-2632",
"field1": "John Anderson",
"field2": "Feb 1, 2025",
"callback_url": "https://domain.com/webhooks",
"notes": "<p>Please spell the last name Montanez.</p>",
"services": {
"source_language": "es",
"target_language": "en",
"certification": true,
"expedited": true,
"notarization": true,
"currency_conversion": false,
},
"page_count": 2,
"files": [
2304778
]
}
Request Parameters
Field | Type | Required | Description |
---|---|---|---|
reference |
String | N | Your internal reference (number, ID, etc.) |
field1 |
String | N | Data for use in custom coversheets for white label services |
field2 |
String | N | Data for use in custom coversheets for white label services |
callback_url |
String | N | Callback URL for webhooks |
notes |
String | N | Notes for staff or translators - basic HTML allowed |
services |
Object | Y | Specify the services you'd like to order |
services.source_language |
String | Y | ISO 639 language code |
services.target_language |
String | Y | ISO 639 language code |
services.certification |
Boolean | N | If you would like certified translation service otherwise standard translation provided. - Default is false |
services.expedited |
Boolean | N | If you would like expedited turnaround service. - Default is false |
services.notarization |
Boolean | N | If you would like the certification notarized - only available with certified translation. - Default is false |
services.currency_conversion |
Boolean | N | If you would like currency conversion - only available with certified translation. - Default is false |
page_count |
Number | Y* | Number of pages in the order files (250 words per page) - required if services.certification is true |
word_count |
Number | Y* | Number of words in the order files - required if services.certification is true |
files |
Array | Y | List of file IDs - type must be either source or reference |
Response - 201
{
"id": 3290112,
"order_number": "55112-7859361",
"order_url": "https://rushtranslate.com/order/55112-7859361/mC18ihWVx...",
"reference": "HN-2632",
"field1": "John Anderson",
"field2": "Feb 1, 2025",
"origin": "api",
"status": "completed",
"source_language": "es",
"target_language": "en",
"total": 11270,
"received_at": "2025-02-17T15:52:13Z",
"review_at": "2025-02-17T09:15:22Z",
"approved_at": "2025-02-17T11:43:35Z",
"completed_at": "2025-02-17T14:04:50Z",
"cancelled_at": null,
"services": [
{
"name": "Certified Translation",
"quantity": 2,
"price": 2495,
"discount": 0,
"total": 4990
},
{
"name": "Expedited Turnaround",
"quantity": 2,
"price": 1495,
"discount": 0,
"total": 2990
},
{
"name": "Notarization",
"quantity": 1,
"price": 1995,
"discount": 0,
"total": 1995
}
],
"files": [
{
"id": 2304778,
"name": "School Documents.jpg",
"type": "source",
"size": 39099,
"download_url": "https://rushtranslate.com/api/v1/...",
"created_at": "2025-02-17T15:51:11Z"
},
{
"id": 2304779,
"name": "School-Documents-55112-7859361.pdf",
"type": "translation",
"size": 20748,
"download_url": "https://rushtranslate.com/api/v1/...",
"created_at": "2025-02-17T13:04:13Z"
}
],
"transactions": [
{
"type": "charge",
"amount": 11270,
"description": "Order Payment",
"payment_type": "invoice",
"created_at": "2025-02-17T16:01:26Z"
}
],
"comments": [
{
"author": "Alexander M. Montanez",
"body": "<p>Please spell last name Montanez.</p>",
"created_at": "2025-02-17T15:52:13Z"
}
],
"revisions": [
{
"id": 61233,
"status": "completed",
"body": "<p>School name is Canterbury School.</p>",
"requested_at": "2025-02-17T12:22:57Z",
"completed_at": "2025-02-17T13:04:13Z",
"files": []
}
]
}
Retrieve an Order
Retrieve detailed information about a specific order. Returns an order object.
Request
GET https://rushtranslate.com/api/v1/orders/:order_id
Response - 200
{
"id": 3290112,
"order_number": "55112-7859361",
"order_url": "https://rushtranslate.com/order/55112-7859361/mC18ihWVx...",
"reference": "HN-2632",
"field1": "John Anderson",
"field2": "Feb 1, 2025",
"origin": "api",
"status": "completed",
"source_language": "es",
"target_language": "en",
"total": 11270,
"received_at": "2025-02-17T15:52:13Z",
"review_at": "2025-02-17T09:15:22Z",
"approved_at": "2025-02-17T11:43:35Z",
"completed_at": "2025-02-17T14:04:50Z",
"cancelled_at": null,
"services": [
{
"name": "Certified Translation",
"quantity": 2,
"price": 2495,
"discount": 0,
"total": 4990
},
{
"name": "Expedited Turnaround",
"quantity": 2,
"price": 1495,
"discount": 0,
"total": 2990
},
{
"name": "Notarization",
"quantity": 1,
"price": 1995,
"discount": 0,
"total": 1995
}
],
"files": [
{
"id": 2304778,
"name": "School Documents.jpg",
"type": "source",
"size": 39099,
"download_url": "https://rushtranslate.com/api/v1/...",
"created_at": "2025-02-17T15:51:11Z"
},
{
"id": 2304779,
"name": "School-Documents-55112-7859361.pdf",
"type": "translation",
"size": 20748,
"download_url": "https://rushtranslate.com/api/v1/...",
"created_at": "2025-02-17T13:04:13Z"
}
],
"transactions": [
{
"type": "charge",
"amount": 11270,
"description": "Order Payment",
"payment_type": "invoice",
"created_at": "2025-02-17T16:01:26Z"
}
],
"comments": [
{
"author": "Alexander M. Montanez",
"body": "<p>Please spell last name Montanez.</p>",
"created_at": "2025-02-17T15:52:13Z"
}
],
"revisions": [
{
"id": 61233,
"status": "completed",
"body": "<p>School name is Canterbury School.</p>",
"requested_at": "2025-02-17T12:22:57Z",
"completed_at": "2025-02-17T13:04:13Z",
"files": []
}
]
}
Cancel an Order
Cancel an existing order. Only orders with a status of received
can be canceled via the API. For orders with other statuses, please contact support.
Request
POST https://rushtranslate.com/api/v1/orders/:order_id/cancel
Response - 204
No Content
Approve an Order
Approve an order with a status of client_review
.
Request
POST https://rushtranslate.com/api/v1/orders/:order_id/approve
Response - 204
No Content
Revisions
Revisions allow you to request changes to a completed translation. This section covers how to create, retrieve, list, and delete revisions, including the ability to attach reference files. Revisions follow a status flow, ensuring that changes are properly tracked and processed.
Revision Object
Field | Type | Description |
---|---|---|
id |
Number | Revision identifier |
status |
String | Current revision status - requested , in_progress , in_review , completed or on_hold |
body |
String | Revision body HTML |
requested_at |
Number | Time and date when the revision was requested (UTC) |
completed_at |
String | Time and date when the revision was completed (UTC) |
files |
Array | List of File objects |
List Revisions
Retrieve a paginated list of your revisions, sorted in descending order by requested_at
date. Returns a paginated list of revision objects.
Request
GET https://rushtranslate.com/api/v1/orders/:order_id/revisions
Response - 200
{
"data": [
{
"id": 61233,
"status": "completed",
"body": "<p>Please spell last name as Silvia.</p>",
"requested_at": "2025-03-22T19:56:01Z",
"completed_at": "2025-03-22T23:13:27Z",
"files": []
},
{
"id": 61234,
"status": "completed",
"body": "<p>School name is Canterbury School.</p>",
"requested_at": "2025-02-17T12:22:57Z",
"completed_at": "2025-02-17T13:04:13Z",
"files": [
{
"id": 23904338,
"name": "ID Document.jpg",
"type": "reference",
"size": 80296,
"download_url": "https://rushtranslate.com/api/v1/...",
"created_at": "2025-02-17T12:21:04Z"
}
]
}
],
"links": {...},
"meta": {...}
}
Create a Revision
Create a new revision request for an order. Optional files must be uploaded first, as their IDs will be included in the files
array of this request. Only files of type reference
are accepted. Returns a revision object.
Request
POST https://rushtranslate.com/api/v1/orders/:order_id/revisions
{
"body": "<p>School name is Canterbury School.</p>",
"files": [
23904338
]
}
Request Parameters
Field | Type | Required | Description |
---|---|---|---|
body |
String | Y | Revision body - basic HTML allowed |
files |
Array | Y | List of file IDs |
Response - 201
{
"id": 61233,
"status": "completed",
"body": "<p>School name is Canterbury School.</p>",
"requested_at": "2025-02-17T12:22:57Z",
"completed_at": "2025-02-17T13:04:13Z",
"files": [
{
"id": 23904338,
"name": "ID Document.jpg",
"type": "reference",
"size": 80296,
"download_url": "https://rushtranslate.com/api/v1/...",
"created_at": "2025-02-17T12:21:04Z"
}
]
}
Retrieve a Revision
Retrieve detailed information about a specific revision request. Returns a revision object.
Request
GET https://rushtranslate.com/api/v1/orders/:order_id/revisions/:revision_id
Response - 200
{
"id": 61233,
"status": "completed",
"body": "<p>School name is Canterbury School.</p>",
"requested_at": "2025-02-17T12:22:57Z",
"completed_at": "2025-02-17T13:04:13Z",
"files": [
{
"id": 23904338,
"name": "ID Document.jpg",
"type": "reference",
"size": 80296,
"download_url": "https://rushtranslate.com/api/v1/...",
"created_at": "2025-02-17T12:21:04Z"
}
]
}
Delete a Revision
Delete an existing revision request. Only revisions with a status of requested
can be deleted via the API. For revisions with other statuses, please contact support.
Request
DELETE https://rushtranslate.com/api/v1/orders/:order_id/revisions/:revision_id
Response - 204
No Content