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.

Request API access

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 resources
  • POST - create new resources
  • PATCH - modify existing resources
  • DELETE - 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, then completed. Once the order is transitioned to the status of client_review it will not transition automatically to approved. 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, then completed.
  • For revisions the status flow is: requested, in_progress, then completed.

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 upload
  • reference - 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