Open Design

REST API Reference

This reference page is about the REST API for Open Design.
If you are a Node.js developer, we recommend using the official SDK instead.

You can start using Open Design's REST API in just four steps:

Step 1: Get your API token

To get started, use this form to get your API token:


You can test if your token is valid using the Auth Token Check endpoint.

This call should return a 200 status code.

Step 2: Upload a design

There are three different ways to import a design into Open Design API. You can upload a design directly, provide a link to the file, or import a design from Figma.

In this guide, we'll be uploading a file directly using the Design File Upload endpoint. Find a Sketch, XD, Photoshop, or Illustrator file on your computer and enter the exact path to it in the --form value below.

Once you execute this command, is returned (we'll use that in the next step).

Step 3: Get all artboards and pages in file

We're now going to use the Design Summary endpoint to check on the import progress and, if finished, see all of the artboards and pages in the files. Make sure to replace {design_id} with the ID from the previous step.

This endpoint can return status code 202, which means that the file is still being imported. You can poll this endpoint every few seconds until you get a 200, which means the processing is finished.

Once the processing has finished, the output should contain a list of artboards (we'll use that in the next step).

Step 4: Get the contents of an artboard

Now, we're going to use the Artboard Content endpoint to get the full content of the artboard (with text layers, shapes, colors, etc). Make sure to replace {design_id} with the ID you used before and {artboard_id} with one of the artboard IDs from the list you got in the previous step.

You now have the content of an artboard. To get the entire file, you can just call this endpoint for every artboard listed in Step 3.

For more information about the Octopus format and how different design elements are represented, check out the docs.

Pro Tip: If you have the jq utility installed in your shell, you can run the above command and pipe it to JQ to see the output formatted. Like this: curl {flags from above} | jq