Skip to main content
This quick start gives you the minimum end-to-end plugin flow: authenticate, create project and jobs, monitor progress, and download translated output.

At a glance

You will implement this sequence:
  1. Authenticate
  2. Create project and job
  3. Monitor progress
  4. Export and set DELIVERED

Prerequisites

  • Phrase account with TMS access.
  • Phrase Platform API token.
  • Platform base URL and TMS API base URL for your tenant/region.
  • At least one TMS project template available in your org.
  • A sample source file to upload.
  • Basic REST API familiarity.
Set base URLs once and reuse them in examples:
Do not hardcode EU endpoints unless your tenant is on EU infrastructure.

Step 1: Authenticate

Exchange your API token for a short-lived access token and send it as Authorization: Bearer <token>.
Use this token exchange flow for all subsequent API calls. Refresh before expiry or on a single retry after 401. See Platform authentication and OAuth token endpoint.

Step 2: Create a project and job

  1. List project templates: GET /api2/v1/projectTemplates
  2. Create project from template: POST /api2/v2/projects/applyTemplate/{templateUid}
  3. Create job in project: POST /api2/v1/projects/{projectUid}/jobs
Persist projectUid, job.uid, and any returned asyncRequest.id. You need these IDs later.
Reference docs:

Step 3: Monitor progress

Use one of these methods:
  • Simple start: poll GET /api2/v1/projects/{projectUid}/jobs/{jobUid}/parts
  • Async operation status: poll GET /api2/v1/async/{asyncRequestId} when relevant
  • Production approach: webhook events with polling fallback
Treat terminal failure statuses (CANCELLED, REJECTED) as non-deliverable outcomes.

Step 4: Export and mark delivered

  1. Start async download: PUT /api2/v3/projects/{projectUid}/jobs/{jobUid}/targetFile
  2. Wait until async request is complete.
  3. Download target file: GET /api2/v2/projects/{projectUid}/jobs/{jobUid}/downloadTargetFile/{asyncRequestId}
  4. Mark delivered: POST /api2/v1/projects/{projectUid}/jobs/{jobUid}/setStatus with requestedStatus: DELIVERED
Reference docs:

Optional: implementation patterns (pseudocode)

Use these patterns when moving from sample calls to production code. You can skip this section for a first pass.

Auth caching and one-time 401 retry

Async polling with bounded backoff

Export completion flow

Next steps

Full Integration Workflow

Add production-grade behaviors and resilience.

Live Preview

Add contextual preview support for translators.

Error Handling & Limits

Harden retries, limits, and failure behavior.