Welcome to Specify, the world's first Design API.

Specify helps you unify your brand identity by collecting, storing and distributing design tokens and assets — automatically. Specify's mission is to give organizations total control on their design decisions at scale.

We simplify the process of collecting design decisions, a.k.a design tokens and assets, and hooking up new tools, allowing you to spend more time using design and less time trying to collect it.

When you start out, you create a repository, which serves as a container for all of your sources and destinations. Sources send data into Specify, while destinations receive data from Specify.

What can I do with the Specify API?

The Specify API is based on REST structure. We support authentication via access tokens. Requests are made via HTTP endpoints with clear functions and appropriate response codes. Endpoints allow you to request design tokens and assets from a Specify repository.

Base URL

Getting Started

To query the Specify API, you need a personal access token.

Generate one from:

Getting your first design tokens

Get your first design tokens by:

  1. Creating a repository
  2. Collecting your design tokens from a source (e.g., Figma)
  3. Getting the owner and the reposity name in Specify. The owner is the name of your organization and the repositoryName is the name of your repository in Specify. For instance, in this URL the owner is @specifyapp and the repositoryName is Seeds.
  4. Calling the route POST{owner}/{repositoryName}/design-tokens

For further explanation, please consult the get design token endpoint.

Using the design tokens

You can pull your design tokens by:

  • Using the REST API with its parsers to pull design tokens
  • Using the Specify CLI. You can find more informations on the CLI documentation page

Try it yourself

What's this?

POST /repository/{owner}/{name}/design-tokens

curl -X POST '{owner}/{name}/design-tokens' \
  -H 'Authorization: <personal access token>' \
  -H 'Content-Type: application/json' \
  -d '{}'


Before accessing to an endpoint within Specify, you will need to provide a valid authentication.

The personal access token gives the holder access to the workspace through the API where design tokens are stored in repositories.

Get Design Tokens

HTTP Endpoint

POST /repository/{owner}/{name}/design-tokens


  • owner string

    The name of your organization in Specify.

    For instance, in this URL the owner is "@specifyapp".

  • name string

    The name of the Specify repository containing the design data you're requesting.

    For instance, in this URL the name is "Seeds".

  • body optional

    Child parameters

    • filter object optional

      An object containing all the filters your requested design tokens will go through. Currently, you can only filter your design tokens by their types. To know more see our use case.

    • parsers array optional

      Can contain an object or an array of objects. Each object corresponds to a specific parser.

Try it yourself

What's this?

POST /repository/{owner}/{name}/design-tokens

curl -X POST '{owner}/{name}/design-tokens' \
  -H 'Authorization: <personal access token>' \
  -H 'Content-Type: application/json' \
  -d '{}'


Specify uses standard HTTP response codes for success and failure notifications. Our errors are further classified by type. In general: Codes in the 2xx range indicate success. Codes in the 4xx range indicate an error that failed given the information provided (e.g., a required parameter was omitted). Codes in the 5xx range indicate an error with Specify's servers.

Some 4xx errors that could be handled programmatically include an error code that briefly explains the error reported.


All errors returned by the API include the following data elements:

  • type string

    The type of error returned. One of api_connection_error, api_error, authentication_error, invalid_request_error, or rate_limit_error.

  • statusCode string

    For some errors that could be handled programmatically, a short string indicating the error code reported.

  • message string

    A human-readable message providing more details about the error.

  • validation array

    All invalid query / payload parameters. All invalid query / payload parameters. This property will be displayed on specific endpoints error response.

HTTP status code summary

  • 200 - OK Everything worked as expected.
  • 401 - Unauthorised No valid API key provided.
  • 402 - Request Failed The parameters were valid but the request failed.
  • 403 - Forbidden The API key doesn't have permissions to perform the request.
  • 404 - Not Found The requested resource doesn't exist.
  • 409 - Conflict The request conflicts with another request (perhaps due to using the same idempotent key).
  • 500, 502, 503, 504 - Server Errors Something went wrong on Specify's end.

Error types

  • api_connection_error Failure to connect to Specify's API.
  • api_error API errors cover any other type of problem (e.g., a temporary problem with Specify's servers), and are extremely uncommon.
  • authentication_error Failure to properly authenticate yourself in the request.
  • invalid_request_error Invalid request errors arise when your request has invalid parameters.