TextMaster API v1

OpenAPI 3.0.3-described REST API for ordering and managing translation, proofreading and copywriting work. 54 operations across Projects (create, quote, finalize, launch sync/async, pause, resume, cancel, archive, duplicate, translation-memory options), Documents (single and batch create/complete, review URLs, support messages), My Authors, Glossaries, Work and API Templates, Abilities, Negotiated Contracts, Transactions, Invoices, Receipts, Uploads and Users, plus an unauthenticated public reference surface for categories, countries, expertises, languages and locales. Authenticated with OAuth 2.0 bearer tokens (22 scopes) or the legacy Apikey/Date/Signature header strategy. Asynchronous progress is delivered by status-change callbacks (webhooks) rather than polling.

Documentation

Specifications

Other Resources

🔗
DeveloperPortal
https://developer.textmaster.com/
🔗
OAuthScopes
https://raw.githubusercontent.com/api-evangelist/textmaster/refs/heads/main/scopes/textmaster-scopes.yml
🔗
Webhooks
https://raw.githubusercontent.com/api-evangelist/textmaster/refs/heads/main/asyncapi/textmaster-event-surface.yml
🔗
ErrorCatalog
https://raw.githubusercontent.com/api-evangelist/textmaster/refs/heads/main/errors/textmaster-problem-types.yml
🔗
Conventions
https://raw.githubusercontent.com/api-evangelist/textmaster/refs/heads/main/conventions/textmaster-conventions.yml
🔗
DataModel
https://raw.githubusercontent.com/api-evangelist/textmaster/refs/heads/main/data-model/textmaster-data-model.yml
🔗
Sandbox
https://raw.githubusercontent.com/api-evangelist/textmaster/refs/heads/main/sandbox/textmaster-sandbox.yml
🔗
Postman
https://developer.textmaster.com/quick-start/postman
🔗
PostmanCollection
https://raw.githubusercontent.com/api-evangelist/textmaster/refs/heads/main/collections/textmaster-api-v1-postman-collection.json
🔗
MCPServer
https://raw.githubusercontent.com/api-evangelist/textmaster/refs/heads/main/mcp/textmaster-mcp.yml
🔗
ToolCrosswalk
https://raw.githubusercontent.com/api-evangelist/textmaster/refs/heads/main/mcp/textmaster-tool-crosswalk.yml
🔗
Overlay
https://raw.githubusercontent.com/api-evangelist/textmaster/refs/heads/main/overlays/textmaster-api-v1-overlay.yaml
🔗
APIsJSON
https://raw.githubusercontent.com/api-evangelist/textmaster/refs/heads/main/apis.yml

OpenAPI Specification

textmaster-api-v1-openapi.yml Raw ↑
---
openapi: 3.0.3
info:
  title: TextMaster API v1
  version: v1
paths:
  "/v1/clients/abilities":
    get:
      summary: List Abilities
      tags:
      - Abilities
      security:
      - oauth2: []
      parameters:
      - name: activity
        in: query
        required: false
        description: |
          Filters abilities on a specific activity.

          Possible values:

          * translation
          * copywriting
          * proofreading
        schema:
          type: string
          enum:
          - translation
          - copywriting
          - proofreading
      - name: language_from
        in: query
        required: false
        description: 'Bigram representing a language (ex: en-us). Full list available
          via API call.'
        schema:
          type: string
          pattern: "^[a-z]{2}(-[a-z]{2})?$"
      - name: language_to
        in: query
        required: false
        description: 'Bigram representing a language (ex: en-us). Full list available
          via API call.'
        schema:
          type: string
          pattern: "^[a-z]{2}(-[a-z]{2})?$"
      - name: currency_code
        in: query
        required: false
        description: |
          Currency used to display the pricing (defaults to your account currency).

          Possible values: EUR, AUD, GBP, HKD, JPY, USD
        schema:
          type: string
          enum:
          - EUR
          - AUD
          - GBP
          - HKD
          - JPY
          - USD
      - name: locale
        in: query
        required: false
        description: |
          [DEPRECATED] Locale used to display the pricing (defaults to en-EU).

          Possible values:

          * en-EU: pricing in EURO
          * en-GB: pricing in GBP
          * en-US: pricing in USD
        schema:
          type: string
          enum:
          - en-EU
          - en-GB
          - en-US
      - name: page
        in: query
        required: false
        description: Search results are limited to 100 items. Specify page number
          to read more than the first page.
        schema:
          type: integer
      responses:
        '401':
          description: Unauthorized
          content:
            application/json:
              examples:
                example_0:
                  value:
                    error: invalid_token
                    error_description: The access token is invalid
                    state: unauthorizez
        '200':
          description: Lists abilities
          content:
            application/json:
              examples:
                example_0:
                  value:
                    data:
                    - id: 61698a988b81926d91c0e15f
                      level_name: enterprise
                      language_from: fr-fr
                      language_to: fr-fr
                      pricing:
                        enterprise: 0.014
                        specific_attachment: 0.014
                        priority: 0.014
                        quality: 0.014
                        translation_memory: 0.0
                    - id: 61698a998b81926d91c0e185
                      level_name: regular
                      language_from: fr-fr
                      language_to: fr-fr
                      pricing:
                        regular: 0.014
                        specific_attachment: 0.014
                        priority: 0.014
                        quality: 0.014
                        translation_memory: 0.0
                    - id: 61698a998b81926d91c0e197
                      level_name: premium
                      language_from: fr-fr
                      language_to: fr-fr
                      pricing:
                        premium: 0.014
                        specific_attachment: 0.014
                        priority: 0.014
                        quality: 0.014
                        translation_memory: 0.0
              schema:
                type: object
                properties:
                  total_pages:
                    type: integer
                  count:
                    type: integer
                  page:
                    type: integer
                  per_page:
                    type: integer
                  previous_page:
                    type: integer
                    nullable: true
                  next_page:
                    type: integer
                    nullable: true
                  data:
                    type: array
                    items:
                      "$ref": "#/components/schemas/Ability"
                    minItems: 1
                    uniqueItems: true
  "/v1/clients/api_templates":
    get:
      summary: List API Templates
      tags:
      - API Templates
      security:
      - oauth2:
        - project:manage
        - project:read
        - project:write
      parameters:
      - name: page
        in: query
        required: false
        description: Search results are limited to 100 items. Specify page number
          to read more than the first page.
        schema:
          type: integer
      responses:
        '401':
          description: Unauthorized
          content:
            application/json:
              examples:
                example_0:
                  value:
                    error: invalid_token
                    error_description: The access token is invalid
                    state: unauthorizez
        '200':
          description: Lists API Templates
          content:
            application/json:
              examples:
                example_0:
                  value:
                    api_templates:
                    - id: e1e452a3-9bcd-408e-810e-91d63175ebc1
                      name: Foo Bar 2021-10-15 16:05:13 +0200
                      description: "[TM] Enterprise Translation (en-us > fr-fr)"
                      level_name: enterprise
                      activity_name: translation
                      language_from: en-us
                      language_to: fr-fr
                      project_briefing: Bacon ipsum dolor amet ribeye tenderloin pancetta
                        ground round cow turducken shankle beef ribs.
                      options:
                        language_level: enterprise
                      textmasters: []
                      cost_per_word:
                        currency: credits
                        amount: 10
                      cost_per_word_in_currency:
                        currency: USD
                        amount: 0.014
                      same_author_must_do_entire_project: true
                      auto_launch: true
                      created_at:
                        day: 15
                        month: 10
                        year: 2021
                        full: 2021-10-15 14:05:14 UTC
                      updated_at:
                        day: 15
                        month: 10
                        year: 2021
                        full: 2021-10-15 14:05:14 UTC
                    total_pages: 1
                    count: 1
                    page: 1
                    per_page: 20
                    previous_page:
                    next_page:
              schema:
                type: object
                properties:
                  total_pages:
                    type: integer
                  count:
                    type: integer
                  page:
                    type: integer
                  per_page:
                    type: integer
                  previous_page:
                    type: integer
                    nullable: true
                  next_page:
                    type: integer
                    nullable: true
                  api_templates:
                    type: array
                    items:
                      "$ref": "#/components/schemas/ApiTemplate"
  "/v1/clients/api_templates/filter":
    get:
      summary: Filter API Templates
      tags:
      - API Templates
      security:
      - oauth2:
        - project:manage
        - project:read
        - project:write
      parameters:
      - name: where
        in: query
        required: false
        description: URL encoded JSON selector composed of one or several criteria.
        schema:
          type: string
      - name: order
        in: query
        required: false
        description: Comma separated order list
        schema:
          type: string
      - name: page
        in: query
        required: false
        description: Search results are limited to 100 items. Specify page number
          to read more than the first page.
        schema:
          type: integer
      responses:
        '401':
          description: Unauthorized
          content:
            application/json:
              examples:
                example_0:
                  value:
                    error: invalid_token
                    error_description: The access token is invalid
                    state: unauthorizez
        '403':
          description: Forbidden
          content:
            application/json:
              examples:
                example_0:
                  value:
                    error: invalid_token
                    error_description: The access token is invalid
                    state: unauthorizez
        '200':
          description: Lists API Templates
          content:
            application/json:
              examples:
                example_0:
                  value:
                    api_templates:
                    - id: e1e452a3-9bcd-408e-810e-91d63175ebc1
                      name: Foo Bar 2021-10-15 16:05:13 +0200
                      description: "[TM] Enterprise Translation (en-us > fr-fr)"
                      level_name: enterprise
                      activity_name: translation
                      language_from: en-us
                      language_to: fr-fr
                      project_briefing: Bacon ipsum dolor amet ribeye tenderloin pancetta
                        ground round cow turducken shankle beef ribs.
                      options:
                        language_level: enterprise
                      textmasters: []
                      cost_per_word:
                        currency: credits
                        amount: 10
                      cost_per_word_in_currency:
                        currency: USD
                        amount: 0.014
                      same_author_must_do_entire_project: true
                      auto_launch: true
                      created_at:
                        day: 15
                        month: 10
                        year: 2021
                        full: 2021-10-15 14:05:14 UTC
                      updated_at:
                        day: 15
                        month: 10
                        year: 2021
                        full: 2021-10-15 14:05:14 UTC
                    total_pages: 1
                    count: 1
                    page: 1
                    per_page: 20
                    previous_page:
                    next_page:
              schema:
                type: object
                properties:
                  total_pages:
                    type: integer
                  count:
                    type: integer
                  page:
                    type: integer
                  per_page:
                    type: integer
                  previous_page:
                    type: integer
                    nullable: true
                  next_page:
                    type: integer
                    nullable: true
                  api_templates:
                    type: array
                    items:
                      "$ref": "#/components/schemas/ApiTemplate"
  "/v1/clients/authors":
    get:
      summary: List all potential authors for a project
      tags:
      - Authors
      security:
      - oauth2: []
      parameters:
      - name: project[activity_name]
        in: query
        required: false
        description: |
          Type of project to filter on.

          Possible values:

          * translation
          * copywriting
          * proofreading
        schema:
          type: string
          enum:
          - translation
          - copywriting
          - proofreading
      - name: project[language_from]
        in: query
        required: false
        description: 'Source language for translation projects (ex: fr-FR).'
        schema:
          type: string
          pattern: "^[a-z]{2}-[A-Z]{2}$"
      - name: project[language_to]
        in: query
        required: false
        description: 'Target language (ex: en-US)'
        schema:
          type: string
          pattern: "^[a-z]{2}-[A-Z]{2}$"
      - name: project[options][expertise]
        in: query
        required: false
        description: An Expertise ID (See List Expertises for more info)
        schema:
          type: string
      - name: project[options][language_level]
        in: query
        required: false
        description: An Expertise ID (See List Expertises for more info)
        schema:
          type: string
          enum:
          - enterprise
          - premium
      - name: page
        in: query
        required: false
        description: Search results are limited to 100 items. Specify page number
          to read more than the first page.
        schema:
          type: integer
      responses:
        '401':
          description: Unauthorized
          content:
            application/json:
              examples:
                example_0:
                  value:
                    error: invalid_token
                    error_description: The access token is invalid
                    state: unauthorizez
        '200':
          description: Lists Potential Authors
          content:
            application/json:
              examples:
                example_0:
                  value:
                    total_pages: 1
                    count: 2
                    page: 1
                    per_page: 20
                    previous_page:
                    next_page:
                    authors:
                    - id: 61698a9a8b81926d91c0e28c
                      ident: A-988C-FM
                    - id: 61698a9a8b81926d91c0e299
                      ident: A-9899-FM
              schema:
                type: object
                properties:
                  total_pages:
                    type: integer
                  count:
                    type: integer
                  page:
                    type: integer
                  per_page:
                    type: integer
                  previous_page:
                    type: integer
                    nullable: true
                  next_page:
                    type: integer
                    nullable: true
                  authors:
                    type: array
                    items:
                      "$ref": "#/components/schemas/PotentialAuthor"
  "/v1/clients/projects/{project_id}/documents":
    get:
      summary: List Documents
      tags:
      - Documents
      security:
      - oauth2:
        - project:manage
        - project:read
        - project:write
      parameters:
      - name: project_id
        in: path
        required: true
        description: The Project ID.
        schema:
          type: string
      - name: page
        in: query
        required: false
        description: Search results are limited to 100 items. Specify page number
          to read more than the first page.
        schema:
          type: integer
      responses:
        '401':
          description: Unauthorized
          content:
            application/json:
              examples:
                example_0:
                  value:
                    error: invalid_token
                    error_description: The access token is invalid
                    state: unauthorizez
        '403':
          description: Forbidden
          content:
            application/json:
              examples:
                example_0:
                  value:
                    error: invalid_token
                    error_description: The access token is invalid
                    state: unauthorizez
        '200':
          description: Lists Documents
          content:
            application/json:
              examples:
                example_0:
                  value:
                    documents:
                    - language_from: fr
                      language_to: en
                      language_from_code: fr-fr
                      language_to_code: en-us
                      status: waiting_assignment
                      skip_copyscape: false
                      title: document_3
                      instructions: Lorem ipsum dolor sit amet,...
                      word_count: 200
                      word_count_rule: 0
                      keywords_repeat_count: 1
                      deliver_work_as_file: false
                      custom_data: {}
                      plagiarism_analysis: {}
                      written_words: 0
                      type: standard
                      id: 61698a9e8b81926d91c0e3a4
                      project_id: 61698a9e8b81926d91c0e3a3
                      callback: {}
                      reference: TR-99D-3815-00000
                      ctype: translation
                      keyword_list: foo, bar, baz
                      satisfaction:
                      completion: 0.0
                      can_post_message_to_author: false
                      author_work: {}
                      author_id:
                      author_rating: 1
                      original_content: foo bar
                      markup_in_content: false
                      created_at:
                        day: 15
                        month: 10
                        year: 2021
                        full: 2021-10-15 14:05:18 UTC
                      updated_at:
                        day: 15
                        month: 10
                        year: 2021
                        full: 2021-10-15 14:05:18 UTC
                      completed_at:
                    total_pages: 1
                    count: 1
                    page: 1
                    per_page: 20
                    previous_page:
                    next_page:
              schema:
                type: object
                properties:
                  total_pages:
                    type: integer
                  count:
                    type: integer
                  page:
                    type: integer
                  per_page:
                    type: integer
                  previous_page:
                    type: integer
                    nullable: true
                  next_page:
                    type: integer
                    nullable: true
                  documents:
                    type: array
                    items:
                      "$ref": "#/components/schemas/Document"
    post:
      summary: Create a Document
      tags:
      - Documents
      security:
      - oauth2:
        - project:manage
        - project:write
      parameters:
      - name: project_id
        in: path
        required: true
        description: The Project ID.
        schema:
          type: string
      responses:
        '401':
          description: Unauthorized
          content:
            application/json:
              examples:
                example_0:
                  value:
                    error: invalid_token
                    error_description: The access token is invalid
                    state: unauthorizez
        '403':
          description: Forbidden
          content:
            application/json:
              examples:
                example_0:
                  value:
                    error: invalid_token
                    error_description: The access token is invalid
                    state: unauthorizez
        '200':
          description: Document Created
          content:
            application/json:
              examples:
                example_0:
                  value:
                    language_from: fr
                    language_to: en
                    language_from_code: fr-fr
                    language_to_code: en-us
                    status: in_creation
                    skip_copyscape: false
                    title: document_4
                    instructions: Lorem ipsum dolor sit amet, consectetur ...
                    word_count: 200
                    word_count_rule: 0
                    keywords_repeat_count: 1
                    deliver_work_as_file: true
                    custom_data:
                      tags:
                      - red
                      - soft
                      external_client_id: 1234
                    plagiarism_analysis: {}
                    written_words: 0
                    type: standard
                    id: 61698aa08b81926d91c0e471
                    project_id: 61698a9f8b81926d91c0e41b
                    callback:
                      support_message_created:
                        url: https://callback.example.com/
                    reference: TR-915-49834-91906
                    ctype: translation
                    keyword_list: foo, bar, baz
                    satisfaction:
                    completion: 0.0
                    can_post_message_to_author: false
                    author_work: {}
                    author_id:
                    author_rating: 1
                    original_content: test_content
                    markup_in_content: false
                    created_at:
                      day: 15
                      month: 10
                      year: 2021
                      full: 2021-10-15 14:05:20 UTC
                    updated_at:
                      day: 15
                      month: 10
                      year: 2021
                      full: 2021-10-15 14:05:20 UTC
                    completed_at:
              schema:
                "$ref": "#/components/schemas/Document"
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                document:
                  type: object
                  properties:
                    title:
                      description: Title of the Document
                      type: string
                    type:
                      description: |
                        Type of document.

                        * standard (default): defined with a template
                        * key_value: defines multiple phrases with an associated key
                      type: string
                    word_count:
                      description: "(required unless perform_word_count is true) Base
                        number of words. See the word_count_rule parameter."
                      type: integer
                    word_count_rule:
                      description: |
                        Specifies how to treat the specified "word_count".

                        * 0: +/- 10% [word_count] words
                        * 1: at least [word_count] words
                        * 2: maximum [word_count] words
                      type: integer
                      enum:
                      - 0
                      - 1
                      - 2
                    perform_word_count:
                      description: Automated word count is possible for translation
                        and proofreading projects
                      type: boolean
                    original_content:
                      description: Content for translation or proofreading projects.
                      oneOf:
                      - type: string
                      - type: object
                    markup_in_content:
                      description: Does the content contains markup (HTML, XML, etc)
                        or not?
                      type: boolean
                    remote_file_url:
                      description: URL to a stored file (see Uploading files to TextMaster
                        for more information).
                      type: string
                    remote_file_help_url:
                      description: URL to a stored help file providing instructions/comments
                        for the authors (see Uploading files to TextMaster for more
                        information).
                      type: string
                    instructions:
                      description: Specific briefing. Add here any information specific
                        to this Document.
                      type: string
                    keyword_list:
                      description: The keywords you the Author must include in the
                        content (a comma-separated list).
                      type: string
                    keywords_repeat_count:
                      description: "(required if keyword_list is provided) Each key
                        word should be repeated at least X times."
                      type: integer
                    callback:
                      description: List of callbacks to be called upon Document status
                        changes.
                      type: object
                      properties:
                        in_creation:
                          type: object
                          properties:
                            url:
                              type: string
                          required:
                          - url
                        waiting_assignment:
                          type: object
                          properties:
                            url:
                              type: string
                          required:
                          - url
                        in_progress:
                          type: object
                          properties:
                            url:
                              type: string
                          required:
                          - url
                        incomplete:
                          type: object
                          properties:
                            url:
                              type: string
                          required:
                          - url
                        paused:
                          type: object
                          properties:
                            url:
                              type: string
                          required:
                          - url
                        quality_control:
                          type: object
                          properties:
                            url:
                              type: string
                          required:
                          - url
                        copyscape:
                          type: object
                          properties:
                            url:
                              type: string
                          required:
                          - url
                        counting_words:
                          type: object
                          properties:
                            url:
                              type: string
                          required:
                          - url
                        in_review:
                          type: object
                          properties:
                            url:
                              type: string
                          required:
                          - url
                        in_extra_review:
                          type: object
                          properties:
                            url:
                              type: string
                          required:
                          - url
                        completed:
                          type: object
                          properties:
                            url:
                              type: string
                          required:
                          - url
                        canceled:
                          type: object
                          properties:
                            url:
                              type: string
                          required:
                          - url
                        word_count_finished:
                          type: object
                          properties:
                            url:
                              type: string
                          required:
                          - url
                        complete:
                          type: object
                          properties:
                            url:
                              type: string
                          required:
                          - url
                        support_message_created:
                          type: object
                          properties:
                            url:
                              type: string
                          required:
                          - url
                    deliver_work_as_file:
                      description: Should the Authors submit their work as a file?
                      type: boolean
  "/v1/clients/projects/{project_id}/documents/filter":
    get:
      summary: Filter Documents
      tags:
      - Documents
      security:
      - oauth2:
        - project:manage
        - project:read
        - project:write
      parameters:
      - name: project_id
        in: path
        required: true
        description: The Project ID.
        schema:
          type: string
      - name: page
        in: query
        required: false
        description: Search results are limited to 100 items. Specify page number
          to read more than the first page.
        schema:
          type: integer
      - name: where
        in: query
        required: false
        description: URL encoded JSON selector composed of one or several criteria.
        schema:
          type: string
      - name: order
        in: query
        required: false
        description: Comma separated order list
        schema:
          type: string
      responses:
        '401':
          description: Unauthorized
          content:
            application/json:
              examples:
                example_0:
                  value:
                    error: invalid_token
                    error_description: The access token is invalid
                    state: unauthorizez
        '403':
          description: Forbidden
          content:
            application/json:
              examples:
                example_0:
                  value:
                    error: invalid_token
                    error_description: The access token is invalid
                    state: unauthorizez
        '200':
          description: Filters Documents
          content:
            application/json:
              examples:
                example_0:
                  value:
                    documents:
                    - language_from: fr
                      language_to: en
                      language_from_code: fr-fr
                      language_to_code: en-us
                      status: waiting_assignment
                      skip_copyscape: false
                      title: document_2
                      instructions: Lorem ipsum dolor sit amet,...
                      word_count: 200
                      word_count_rule: 0
                      keywords_repeat_count: 1
                      deliver_work_as_file: false
                      custom_data: {}
                      plagiarism_analysis: {}
                      written_words: 0
                      type: standard
                      id: 61698a9c8b81926d91c0e32c
                      project_id: 61698a9c8b81926d91c0e32b
                      callback: {}
                      reference: TR-925-85279-00000
                      ctype: translation
                      keyword_list: foo, bar, baz
                      satisfaction:
                      completion: 0.0
                      can_post_message_to_author: false
                      author_work: {}
 

# --- truncated at 32 KB (240 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/textmaster/refs/heads/main/openapi/textmaster-api-v1-openapi.yml