Sell.app — API Documentation

Download OpenAPI specification:Download

Introduction

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.

Authentication

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.

SecretApiKey

Important: Never share your API keys. Keep them guarded and secure.

Use your secret API key to make requests from the server side. To authenticate in SellApp's API, pass your API key in the request header.

Security Scheme Type API Key
Header parameter name: Bearer YourApiKeyHere
  • Secret API key: Used to make requests from the server side. Never share these keys. Keep them guarded and secure.
  • The API accepts your secret API key via Bearer authentication. You will have to send your API Key via the Authorization header. You may pass the API key in your request like so:
    $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.

Creating & Managing API keys

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.

Multiple Stores

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.

SDKs

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

Blacklists help prevent fraud and deter malicious customers from sabotaging your digital eCommerce business.

Returns a list of all the blacklists created.

Retrieve a list of blacklists.

Authorizations:

Responses

Request samples

$client = new http\Client;
$request = new http\Client\Request;

$request->setRequestUrl('https://sell.app/api/v1/blacklists');
$request->setRequestMethod('GET');
$request->setHeaders([
  'accept' => 'application/json',
  'Authorization' => 'Bearer YourApiTokenHere'
]);

$client->enqueue($request)->send();
$response = $client->getResponse();

echo $response->getBody();

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "links": {},
  • "meta": {
    }
}

Creates a blacklist and returns the created blacklist.

Create a blacklist rule

Authorizations:
Request Body schema: application/json
type
required
string

The type of blacklist rule you'd like to create. We currently support the following types:

  • EMAIL
  • IP
  • COUNTRY
data
required
string

Depending on the type you chose, you enter:

  • EMAIL: email address e.g. bob@gmail.com
  • IP: IP address e.g. 1.3.3.7
  • COUNTRY: Country code e.g. NL
description
required
string

A description that will help you remember why this blacklist rule was created.

Responses

Request samples

Content type
application/json
{}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Retrieves a blacklist by the entered ID.

Retrieve a specific blacklist rule by the ID passed in the request.

Authorizations:
path Parameters
blacklist
required
integer

Responses

Request samples

$client = new http\Client;
$request = new http\Client\Request;

$request->setRequestUrl('https://sell.app/api/v1/blacklists/BlacklistIdHere');
$request->setRequestMethod('GET');
$request->setHeaders([
  'accept' => 'application/json',
  'Authorization' => 'Bearer YourApiTokenHere'
]);

$client->enqueue($request)->send();
$response = $client->getResponse();

echo $response->getBody();

Response samples

Content type
application/json
{
  • "data": {
    }
}

Updates a blacklist by the entered ID.

Update a blacklist rule by the ID passed in the request

Authorizations:
path Parameters
blacklist
required
integer
Request Body schema: application/json
type
required
string

The type of blacklist rule you'd like to create. We currently support the following types:

  • EMAIL
  • IP
  • COUNTRY
data
required
string

Depending on the type you chose, you enter:

  • EMAIL: email address e.g. bob@gmail.com
  • IP: IP address e.g. 1.3.3.7
  • COUNTRY: Country code e.g. NL
description
required
string

A description that will help you remember why this blacklist rule was created.

Responses

Request samples

Content type
application/json
{
  • "type": "IP",
  • "data": "1.3.3.7",
  • "description": "Block hackers"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Deletes a blacklist by the entered ID.

Delete a specific blacklist rule by the ID passed in the request.

Authorizations:
path Parameters
blacklist
required
integer

Responses

Request samples

$client = new http\Client;
$request = new http\Client\Request;

$request->setRequestUrl('https://sell.app/api/v1/blacklists/BlacklistIdHere');
$request->setRequestMethod('DELETE');
$request->setHeaders([
  'accept' => 'application/json',
  'Authorization' => 'Bearer YourApiTokenHere'
]);

$client->enqueue($request)->send();
$response = $client->getResponse();

echo $response->getBody();

Response samples

Content type
application/json
{
  • "data": {
    }
}

Coupons

Coupon codes help incentivize new and existing customers to make more and/or larger purchases.

Returns a list of all the coupons created.

Retrieve a list of coupons.

Authorizations:
query Parameters
with_trashed
boolean
only_trashed
boolean

Responses

Request samples

$client = new http\Client;
$request = new http\Client\Request;

$request->setRequestUrl('https://sell.app/api/v1/coupons');
$request->setRequestMethod('GET');
$request->setHeaders([
  'accept' => 'application/json',
  'Authorization' => 'Bearer YourApiTokenHere'
]);

$client->enqueue($request)->send();
$response = $client->getResponse();

echo $response->getBody();

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "links": {},
  • "meta": {
    }
}

Creates a coupon and returns the created coupon.

Create a coupon

Authorizations:
Request Body schema: application/json
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.

Responses

Request samples