The SellApp API is organized around REST. Our API has predictable, resource-oriented URLs. We use default HTTP response codes to indicate API errors. The API accepts and returns JSON in the HTTP body.
You can use any HTTP/REST library for your programming language to interact with SellApp's API. Official SDKs are not yet developed, but they are on the roadmap.
Most all action from our app are supported by our API. These are available for use so that you may automate any workflows necessary. In this document you will find all of the integrated resources.
This topic describes the forms of authentication that are available in the SellApp API, and how to use them. SellApp currently offers one form of authentication: secret key.
$client = new http\Client;
$request = new http\Client\Request;
$request->setRequestUrl('https://sell.app/api/v1/listings');
$request->setRequestMethod('GET');
$request->setHeaders([
'Authorization' => 'Bearer YourApiKeyhere',
]);
$client->enqueue($request)->send();
$response = $client->getResponse();
echo $response->getBody();
Please note - All API requests must be made over HTTPS, the API does not support HTTP calls.
API keys are tied to individual user accounts instead of storefronts. To create or manage API keys, navigate to your API keys by clicking here.
While you can toggle API permissions on/off while creating an API key, access to stores and API functionality will depend on what kind of permissions you have for the respective storefront you are interacting as.
As the owner of a storefront, you will have full access to all API endpoints (provided you toggled the respective permissions on while creating the API key).
If your account is a support staff on a storefront, you can only use the API endpoints which your account has access to. A support staff limited to access tickets cannot modify products or create groups via the API, for example.
If your account is a member of multiple storefronts, you can pass an X-STORE parameter in the request header to specify which store you'd like to access.
By default this is set to the store you own. If you don't own any stores, the API will default to the first store you joined.
If you're part of multiple stores, you can pass the store's slug in the HTTP header via the X-STORE parameter.
For example, if you'd like to access bob.sell.app, then you would pass the slug bob along via the request header.
Although SellApp does not currently have official SDKs, we do offer an embed solution that helps you embed products on your own platform.
Click here for a guide on how to find and set up embeds.
SellApp's community has created a small handful of open-source packages which may come in handy. Though these are not officially endorsed, you may find them useful:
Blacklists help prevent fraud and deter malicious customers from sabotaging your digital eCommerce business.
Retrieve a list of blacklists.
$client = new http\Client; $request = new http\Client\Request; $request->setRequestUrl('https://sell.app/api/v1/blacklists'); $request->setRequestMethod('GET'); $request->setHeaders([ 'Authorization' => 'Bearer YourApiTokenHere' ]); $client->enqueue($request)->send(); $response = $client->getResponse(); echo $response->getBody();
{- "data": [
- {
- "type": "IP",
- "data": "1.3.3.7",
- "description": "Block hackers",
- "id": 0,
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "store_id": 0
}
], - "links": {
}, - "meta": {
- "current_page": 0,
- "from": 0,
- "last_page": 0,
- "path": "string",
- "per_page": 0,
- "to": 0,
- "total": 0
}
}
Create a blacklist rule
type required | string The type of blacklist rule you'd like to create. We currently support the following types:
|
data required | string Depending on the type you chose, you enter:
|
description required | string A description that will help you remember why this blacklist rule was created. |
{- "type": "EMAIL",
- "description": "I dislike john"
}
{- "data": {
- "type": "IP",
- "data": "1.3.3.7",
- "description": "Block hackers",
- "id": 0,
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "store_id": 0
}
}
Retrieve a specific blacklist rule by the ID passed in the request.
blacklist required | integer |
$client = new http\Client; $request = new http\Client\Request; $request->setRequestUrl('https://sell.app/api/v1/blacklists/BlacklistIdHere'); $request->setRequestMethod('GET'); $request->setHeaders([ 'Authorization' => 'Bearer YourApiTokenHere' ]); $client->enqueue($request)->send(); $response = $client->getResponse(); echo $response->getBody();
{- "data": {
- "type": "IP",
- "data": "1.3.3.7",
- "description": "Block hackers",
- "id": 0,
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "store_id": 0
}
}
Update a blacklist rule by the ID passed in the request
blacklist required | integer |
type required | string The type of blacklist rule you'd like to create. We currently support the following types:
|
data required | string Depending on the type you chose, you enter:
|
description required | string A description that will help you remember why this blacklist rule was created. |
{- "type": "IP",
- "data": "1.3.3.7",
- "description": "Block hackers"
}
{- "data": {
- "type": "IP",
- "data": "1.3.3.7",
- "description": "Block hackers",
- "id": 0,
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "store_id": 0
}
}
Delete a specific blacklist rule by the ID passed in the request.
blacklist required | integer |
$client = new http\Client; $request = new http\Client\Request; $request->setRequestUrl('https://sell.app/api/v1/blacklists/BlacklistIdHere'); $request->setRequestMethod('DELETE'); $request->setHeaders([ 'Authorization' => 'Bearer YourApiTokenHere' ]); $client->enqueue($request)->send(); $response = $client->getResponse(); echo $response->getBody();
{- "data": {
- "type": "IP",
- "data": "1.3.3.7",
- "description": "Block hackers",
- "id": 0,
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "store_id": 0
}
}
Coupon codes help incentivize new and existing customers to make more and/or larger purchases.
Retrieve a list of coupons.
with_trashed | boolean |
only_trashed | boolean |
$client = new http\Client; $request = new http\Client\Request; $request->setRequestUrl('https://sell.app/api/v1/coupons'); $request->setRequestMethod('GET'); $request->setHeaders([ 'Authorization' => 'Bearer YourApiTokenHere' ]); $client->enqueue($request)->send(); $response = $client->getResponse(); echo $response->getBody();
{- "data": [
- {
- "code": "50OFF",
- "type": "PERCENTAGE",
- "discount": "50",
- "limit": 10,
- "store_wide": true,
- "expires_at": "2024-04-20T13:37:00.000000Z",
- "id": 0,
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "store_id": 0,
- "deleted_at": "string"
}
], - "links": {
}, - "meta": {
- "current_page": 0,
- "from": 0,
- "last_page": 0,
- "path": "string",
- "per_page": 0,
- "to": 0,
- "total": 0
}
}
Create a coupon
code required | string The coupon code the customer enters during checkout. |
type required | string This can be either "PERCENTAGE" or "AMOUNT". |
discount required | string The discount value in percentage or cents. |
limit | integer or null The maximum amount of times a coupon code can be used, across all customers. |
store_wide required | boolean Whether the coupon applies to all products within your store or not. |
expires_at | string or null The coupon's expiry date. |
{- "code":