Duoplane provides a REST API to allow both retailers and vendors to programmatically interact with orders. The API can be used to connect Duoplane to outside systems, support custom automations, and generate reports.
Access
API URLs are specified for each endpoint. (See API endpoints below.) They generally follow this URL structure:
https://app.duoplane.com/<resource name>.json
Data format
API data is returned in JSON format. The exact structure of the data returned for each object type is discussed in that endpoint's description.
Authentication
Access to the API is authenticated using HTTP Basic Authentication. All API requests must be made over HTTPS.
API users
API users have access to the same resources and information a regular app user for a company. The login (API Key) and password (API Password) are used to authenticate each API request.
How to create an API user
- In your Duoplane vendor account, go to Settings > Staff Members.
- Scroll to the bottom of the page and click "Manage API users"
- Click "Add an API user"
- Give the API user a name that indicates its purpose. For example: "ERP Integration".
- Click "Save" to save the new user.
- After the API user is saved, you will see 2 pieces of information that you will need for authentication.
- API Key: This will be used as the username for your HTTP authentication.
- API Password: This will be used as the password for your HTTP authentication. Please note that this password will only be displayed once.
How to generate a new API password for an existing user
- In your Duoplane vendor account, go to Settings > Staff Members.
- Scroll to the bottom of the page and click "Manage API users".
- Click "Edit" on the line of the API user.
- Click "Regenerate password".
- Click "Save" to save the new user.
- Copy the new password to a secure location.
API rate limiting
In order to maintain the health and stability of our system, all Duoplane APIs are subject to rate limits. Limits are calculated using the leaky bucket algorithm with the following settings:
- Bucket size: 40 requests per API user
- Leak rate: 2 per second
All requests that are made after rate limits have been exceeded will see a 429 Too Many Requests
error response.
To help you track your API usage, each API response includes the following headers:
- Duoplane-Requests-Left: The number of API requests remaining in your "bucket"
- Duoplane-Retry-After-Seconds: If the rate limit has been exhausted, this is the number of seconds to wait until making another API call.
Please design your code to implement a backoff period if you receive a 429 Too Many Requests
response. If we continue to receive API requests after rate limits have been exceeded, those API requests will increase the time that you are required to wait until retrying an API call.
Pagination
All GET responses that return an array of objects are paginated. When making a GET request, you can specify the following paging parameters to retrieve a different page size or results beyond the first page:
- per_page: The maximum number of records to return with each call. The default and maximum value is 250.
- page: If the count of records matching the search exceeds the number that are returned in a single response, the page number for subsequent requests.
To help you decide whether to fetch subsequent pages, each paged response includes the following headers:
- Duoplane-Total-Count: The total number of records that fit your search criteria
- Duoplane-Has-Next-Page: A boolean value that tells you whether any more records would be on the next page
API endpoints
The following objects are accessible via the API: