SellSN API docs
HomeHelpStatus
  • Introduction
  • Embeds
  • Webhooks
  • API reference
    • Authorization
    • Users
    • Stores
    • Orders
    • Products
    • Product groups
    • Tickets
    • Coupons
    • Miscellaneous objects
  • OAuth2
    • Credentials
    • Permissions
    • Authorizing users
Powered by GitBook
On this page

Was this helpful?

  1. API reference

Products

Creating, reading, updating and deleting products

PreviousOrdersNextProduct groups

Last updated 1 year ago

Was this helpful?

Page cover image

Get products

get

Gets the products from a store and returns them as a paginated response, requires the Scopes.ViewProducts permission

Authorizations
Path parameters
storeIdstring · uuidRequired

The ID of the store to get the products for

pageinteger · int32Required

The page to select when viewing the products

Query parameters
countinteger · int32Optional

The amount of products to display in one page

Responses
200
The object was successfully returned.
401
You are not authorized, check your API key and try again.
403
You are not authorized to access this endpoint, you may be missing an API key scope or be requesting a privileged endpoint.
404
One of the objects referenced by the ID given in the URL or form was not found, check the ID and try again.
get
GET /stores/{storeId}/products/{page} HTTP/1.1
Host: api.sellsn.io
Authorization: Bearer JWT
Accept: */*
{
  "success": true,
  "pages": 1,
  "data": [
    {
      "id": "123e4567-e89b-12d3-a456-426614174000",
      "dateCreated": "2025-05-21T13:52:12.674Z",
      "name": "text",
      "description": "text",
      "cost": 1,
      "amountSold": 1,
      "files": [
        {
          "id": "123e4567-e89b-12d3-a456-426614174000",
          "dateCreated": "2025-05-21T13:52:12.674Z",
          "friendlyName": "text"
        }
      ],
      "tags": [
        "text"
      ],
      "webhookUrl": "text",
      "visibility": 0,
      "isPinned": true,
      "isDynamic": true,
      "imageNames": [
        "text"
      ],
      "ignoreOutOfStock": true,
      "customValueKeys": [
        "text"
      ],
      "shouldBlockVirtualPrivateNetworks": true,
      "deliveryMessage": "text",
      "minimumQuantity": 1,
      "maximumQuantity": 1,
      "order": 1,
      "likes": 1,
      "isBestSeller": true,
      "blacklistedPaymentGateways": [
        "text"
      ],
      "additionalFees": {
        "ANY_ADDITIONAL_PROPERTY": "text"
      },
      "metadata": "text"
    }
  ]
}

Get product by ID

get

Finds and returns a product by it's ID, requires the Scopes.ViewProducts permission

Authorizations
Path parameters
storeIdstring · uuidRequired

The ID of the store the product belongs to

productIdstring · uuidRequired

The ID of the product to get

Responses
200
The object was successfully returned.
401
You are not authorized, check your API key and try again.
403
You are not authorized to access this endpoint, you may be missing an API key scope or be requesting a privileged endpoint.
404
One of the objects referenced by the ID given in the URL or form was not found, check the ID and try again.
get
GET /stores/{storeId}/products/{productId} HTTP/1.1
Host: api.sellsn.io
Authorization: Bearer JWT
Accept: */*
{
  "success": true,
  "message": "text",
  "data": {
    "id": "123e4567-e89b-12d3-a456-426614174000",
    "dateCreated": "2025-05-21T13:52:12.674Z",
    "name": "text",
    "description": "text",
    "cost": 1,
    "amountSold": 1,
    "files": [
      {
        "id": "123e4567-e89b-12d3-a456-426614174000",
        "dateCreated": "2025-05-21T13:52:12.674Z",
        "friendlyName": "text"
      }
    ],
    "tags": [
      "text"
    ],
    "webhookUrl": "text",
    "visibility": 0,
    "isPinned": true,
    "isDynamic": true,
    "imageNames": [
      "text"
    ],
    "ignoreOutOfStock": true,
    "customValueKeys": [
      "text"
    ],
    "shouldBlockVirtualPrivateNetworks": true,
    "deliveryMessage": "text",
    "minimumQuantity": 1,
    "maximumQuantity": 1,
    "order": 1,
    "likes": 1,
    "isBestSeller": true,
    "blacklistedPaymentGateways": [
      "text"
    ],
    "additionalFees": {
      "ANY_ADDITIONAL_PROPERTY": "text"
    },
    "metadata": "text"
  }
}

Remove image from product

delete

Removes an image from a product, uses the file name of the image used to access it from S3, requires the Scopes.UpdateProducts permission

Authorizations
Path parameters
storeIdstring · uuidRequired

The ID of the store the product belongs to

productIdstring · uuidRequired

The ID of the product the image belongs to

fileNamestringRequired

The file name of the image to remove

Responses
200
The object was successfully deleted.
401
You are not authorized, check your API key and try again.
403
You are not authorized to access this endpoint, you may be missing an API key scope or be requesting a privileged endpoint.
404
One of the objects referenced by the ID given in the URL or form was not found, check the ID and try again.
delete
DELETE /stores/{storeId}/products/{productId}/image/{fileName} HTTP/1.1
Host: api.sellsn.io
Authorization: Bearer JWT
Accept: */*
{
  "success": true,
  "message": "text",
  "data": {
    "id": "123e4567-e89b-12d3-a456-426614174000",
    "dateCreated": "2025-05-21T13:52:12.674Z",
    "name": "text",
    "description": "text",
    "tags": [
      "text"
    ],
    "imageNames": [
      "text"
    ],
    "imageLinks": [
      "text"
    ],
    "cost": 1,
    "stock": 1,
    "amountSold": 1,
    "ignoreOutOfStock": true,
    "isPinned": true,
    "isDynamic": true,
    "store": {
      "id": "123e4567-e89b-12d3-a456-426614174000",
      "dateCreated": "2025-05-21T13:52:12.674Z",
      "name": "text",
      "description": "text",
      "url": "text",
      "customDomain": "text",
      "termsOfService": "text",
      "copyright": "text",
      "privacyPolicy": "text",
      "preferredCurrency": "text",
      "isVerified": true,
      "featuredProduct": {
        "id": "123e4567-e89b-12d3-a456-426614174000",
        "dateCreated": "2025-05-21T13:52:12.674Z",
        "name": "text",
        "description": "text",
        "tags": [
          "text"
        ],
        "imageNames": [
          "text"
        ],
        "cost": 1,
        "stock": 1,
        "amountSold": 1,
        "ignoreOutOfStock": true,
        "isPinned": true,
        "isDynamic": true,
        "rating": 1,
        "minimumQuantity": 1,
        "maximumQuantity": 1,
        "order": 1,
        "visibility": 0,
        "likes": 1,
        "customValueKeys": [
          "text"
        ],
        "store": {
          "id": "123e4567-e89b-12d3-a456-426614174000",
          "dateCreated": "2025-05-21T13:52:12.674Z",
          "name": "text",
          "description": "text",
          "url": "text",
          "customDomain": "text",
          "termsOfService": "text",
          "copyright": "text",
          "privacyPolicy": "text",
          "preferredCurrency": "text",
          "isVerified": true,
          "featuredProduct": {
            "id": "123e4567-e89b-12d3-a456-426614174000",
            "dateCreated": "2025-05-21T13:52:12.674Z",
            "name": "text",
            "description": "text",
            "tags": [
              "text"
            ],
            "imageNames": [
              "text"
            ],
            "cost": 1,
            "stock": 1,
            "amountSold": 1,
            "ignoreOutOfStock": true,
            "isPinned": true,
            "isDynamic": true,
            "rating": 1,
            "minimumQuantity": 1,
            "maximumQuantity": 1,
            "order": 1,
            "visibility": 0,
            "likes": 1,
            "customValueKeys": [
              "text"
            ],
            "store": "[Circular Reference]"
          },
          "visits": 1,
          "reviews": 1,
          "rating": 1,
          "resolvedTickets": 1,
          "productsSold": 1,
          "theme": {
            "properties": {
              "ANY_ADDITIONAL_PROPERTY": "text"
            }
          },
          "socialMediaAccounts": {
            "tikTok": "text",
            "youTube": "text",
            "twitter": "text",
            "facebook": "text",
            "discord": "text",
            "telegram": "text",
            "instagram": "text"
          },
          "profileImage": "text"
        }
      },
      "visits": 1,
      "reviews": 1,
      "rating": 1,
      "resolvedTickets": 1,
      "productsSold": 1,
      "theme": {
        "properties": {
          "ANY_ADDITIONAL_PROPERTY": "text"
        }
      },
      "socialMediaAccounts": {
        "tikTok": "text",
        "youTube": "text",
        "twitter": "text",
        "facebook": "text",
        "discord": "text",
        "telegram": "text",
        "instagram": "text"
      },
      "profileImage": "text"
    },
    "reviews": [
      {
        "id": "123e4567-e89b-12d3-a456-426614174000",
        "dateCreated": "2025-05-21T13:52:12.674Z",
        "rating": 1,
        "reason": "text",
        "productId": "123e4567-e89b-12d3-a456-426614174000",
        "reply": "text"
      }
    ],
    "minimumQuantity": 1,
    "maximumQuantity": 1,
    "category": "text",
    "deliveryMessage": "text",
    "blacklistedPaymentGateways": [
      "text"
    ],
    "rating": 1,
    "shouldBlockVirtualPrivateNetworks": true,
    "customValueKeys": [
      "text"
    ],
    "order": 1,
    "likes": 1,
    "visibility": 0,
    "isBestSeller": true,
    "additionalFees": {
      "ANY_ADDITIONAL_PROPERTY": "text"
    }
  }
}

Remove file from product

delete

Removes a file from the product and deletes it's link on S3, this means that users who have already been delivered a link to the file will lose it. Requires the Scopes.UpdateProducts permission

Authorizations
Path parameters
storeIdstring · uuidRequired

The ID of the store the product belongs to

productIdstring · uuidRequired

The ID of the product the file belongs to

fileIdstring · uuidRequired

The ID of the file to remove

Responses
200
The object was successfully deleted.
401
You are not authorized, check your API key and try again.
403
You are not authorized to access this endpoint, you may be missing an API key scope or be requesting a privileged endpoint.
404
One of the objects referenced by the ID given in the URL or form was not found, check the ID and try again.
delete
DELETE /stores/{storeId}/products/{productId}/file/{fileId} HTTP/1.1
Host: api.sellsn.io
Authorization: Bearer JWT
Accept: */*
{
  "success": true,
  "message": "text",
  "data": {
    "id": "123e4567-e89b-12d3-a456-426614174000",
    "dateCreated": "2025-05-21T13:52:12.674Z",
    "name": "text",
    "description": "text",
    "cost": 1,
    "amountSold": 1,
    "files": [
      {
        "id": "123e4567-e89b-12d3-a456-426614174000",
        "dateCreated": "2025-05-21T13:52:12.674Z",
        "friendlyName": "text"
      }
    ],
    "tags": [
      "text"
    ],
    "webhookUrl": "text",
    "visibility": 0,
    "isPinned": true,
    "isDynamic": true,
    "imageNames": [
      "text"
    ],
    "ignoreOutOfStock": true,
    "customValueKeys": [
      "text"
    ],
    "shouldBlockVirtualPrivateNetworks": true,
    "deliveryMessage": "text",
    "minimumQuantity": 1,
    "maximumQuantity": 1,
    "order": 1,
    "likes": 1,
    "isBestSeller": true,
    "blacklistedPaymentGateways": [
      "text"
    ],
    "additionalFees": {
      "ANY_ADDITIONAL_PROPERTY": "text"
    },
    "metadata": "text"
  }
}

Get product by ID

get

Gets and returns a product by it's ID, does not require authorization nor a store ID but will return a public product instead which redacts sensitive information

Authorizations
Path parameters
productIdstring · uuidRequired

The ID of the product to get

Responses
200
The object was successfully returned.
404
One of the objects referenced by the ID given in the URL or form was not found, check the ID and try again.
get
GET /products/{productId}/view HTTP/1.1
Host: api.sellsn.io
Authorization: Bearer JWT
Accept: */*
{
  "success": true,
  "message": "text",
  "data": {
    "id": "123e4567-e89b-12d3-a456-426614174000",
    "dateCreated": "2025-05-21T13:52:12.674Z",
    "name": "text",
    "description": "text",
    "tags": [
      "text"
    ],
    "imageNames": [
      "text"
    ],
    "imageLinks": [
      "text"
    ],
    "cost": 1,
    "stock": 1,
    "amountSold": 1,
    "ignoreOutOfStock": true,
    "isPinned": true,
    "isDynamic": true,
    "store": {
      "id": "123e4567-e89b-12d3-a456-426614174000",
      "dateCreated": "2025-05-21T13:52:12.674Z",
      "name": "text",
      "description": "text",
      "url": "text",
      "customDomain": "text",
      "termsOfService": "text",
      "copyright": "text",
      "privacyPolicy": "text",
      "preferredCurrency": "text",
      "isVerified": true,
      "featuredProduct": {
        "id": "123e4567-e89b-12d3-a456-426614174000",
        "dateCreated": "2025-05-21T13:52:12.674Z",
        "name": "text",
        "description": "text",
        "tags": [
          "text"
        ],
        "imageNames": [
          "text"
        ],
        "cost": 1,
        "stock": 1,
        "amountSold": 1,
        "ignoreOutOfStock": true,
        "isPinned": true,
        "isDynamic": true,
        "rating": 1,
        "minimumQuantity": 1,
        "maximumQuantity": 1,
        "order": 1,
        "visibility": 0,
        "likes": 1,
        "customValueKeys": [
          "text"
        ],
        "store": {
          "id": "123e4567-e89b-12d3-a456-426614174000",
          "dateCreated": "2025-05-21T13:52:12.674Z",
          "name": "text",
          "description": "text",
          "url": "text",
          "customDomain": "text",
          "termsOfService": "text",
          "copyright": "text",
          "privacyPolicy": "text",
          "preferredCurrency": "text",
          "isVerified": true,
          "featuredProduct": {
            "id": "123e4567-e89b-12d3-a456-426614174000",
            "dateCreated": "2025-05-21T13:52:12.674Z",
            "name": "text",
            "description": "text",
            "tags": [
              "text"
            ],
            "imageNames": [
              "text"
            ],
            "cost": 1,
            "stock": 1,
            "amountSold": 1,
            "ignoreOutOfStock": true,
            "isPinned": true,
            "isDynamic": true,
            "rating": 1,
            "minimumQuantity": 1,
            "maximumQuantity": 1,
            "order": 1,
            "visibility": 0,
            "likes": 1,
            "customValueKeys": [
              "text"
            ],
            "store": "[Circular Reference]"
          },
          "visits": 1,
          "reviews": 1,
          "rating": 1,
          "resolvedTickets": 1,
          "productsSold": 1,
          "theme": {
            "properties": {
              "ANY_ADDITIONAL_PROPERTY": "text"
            }
          },
          "socialMediaAccounts": {
            "tikTok": "text",
            "youTube": "text",
            "twitter": "text",
            "facebook": "text",
            "discord": "text",
            "telegram": "text",
            "instagram": "text"
          },
          "profileImage": "text"
        }
      },
      "visits": 1,
      "reviews": 1,
      "rating": 1,
      "resolvedTickets": 1,
      "productsSold": 1,
      "theme": {
        "properties": {
          "ANY_ADDITIONAL_PROPERTY": "text"
        }
      },
      "socialMediaAccounts": {
        "tikTok": "text",
        "youTube": "text",
        "twitter": "text",
        "facebook": "text",
        "discord": "text",
        "telegram": "text",
        "instagram": "text"
      },
      "profileImage": "text"
    },
    "reviews": [
      {
        "id": "123e4567-e89b-12d3-a456-426614174000",
        "dateCreated": "2025-05-21T13:52:12.674Z",
        "rating": 1,
        "reason": "text",
        "productId": "123e4567-e89b-12d3-a456-426614174000",
        "reply": "text"
      }
    ],
    "minimumQuantity": 1,
    "maximumQuantity": 1,
    "category": "text",
    "deliveryMessage": "text",
    "blacklistedPaymentGateways": [
      "text"
    ],
    "rating": 1,
    "shouldBlockVirtualPrivateNetworks": true,
    "customValueKeys": [
      "text"
    ],
    "order": 1,
    "likes": 1,
    "visibility": 0,
    "isBestSeller": true,
    "additionalFees": {
      "ANY_ADDITIONAL_PROPERTY": "text"
    }
  }
}

Get product reviews

get

Gets and returns the paginated and public reviews for a product, does not require authorization

Authorizations
Path parameters
productIdstring · uuidRequired

The ID of the product to get the reviews for

pageinteger · int32Required

The page to select when viewing the reviews

Default: 1
Query parameters
countinteger · int32Optional

The amount of reviews to display in one page

Default: 15
Responses
200
The object was successfully returned.
404
One of the objects referenced by the ID given in the URL or form was not found, check the ID and try again.
get
GET /product/{productId}/view/reviews/{page} HTTP/1.1
Host: api.sellsn.io
Authorization: Bearer JWT
Accept: */*
{
  "success": true,
  "pages": 1,
  "data": [
    {
      "id": "123e4567-e89b-12d3-a456-426614174000",
      "dateCreated": "2025-05-21T13:52:12.674Z",
      "rating": 1,
      "reason": "text",
      "productId": "123e4567-e89b-12d3-a456-426614174000",
      "reply": "text"
    }
  ]
}

Get product items

get

Gets the items associated with a product which will be given on delivery, requires the Scopes.ViewProducts permission

Authorizations
Path parameters
storeIdstring · uuidRequired

The ID of the store the product belongs to

productIdstring · uuidRequired

The ID of the product to get the items from

pageinteger · int32Required

The page to select when viewing the items

Query parameters
countinteger · int32Optional

The amount of items to display in one page

Responses
200
The object was successfully returned.
401
You are not authorized, check your API key and try again.
403
You are not authorized to access this endpoint, you may be missing an API key scope or be requesting a privileged endpoint.
404
One of the objects referenced by the ID given in the URL or form was not found, check the ID and try again.
get
GET /stores/{storeId}/products/{productId}/items/{page} HTTP/1.1
Host: api.sellsn.io
Authorization: Bearer JWT
Accept: */*
{
  "success": true,
  "pages": 1,
  "data": [
    "text"
  ]
}

Clear product items

delete

Clears and completely resets the items associated with a product, requires the Scopes.UpdateProducts permission

Authorizations
Path parameters
storeIdstring · uuidRequired

The ID of the store the product belongs to

productIdstring · uuidRequired

The ID of the product whose items should be cleared

Responses
200
The operation was successfully completed.
401
You are not authorized, check your API key and try again.
403
You are not authorized to access this endpoint, you may be missing an API key scope or be requesting a privileged endpoint.
404
One of the objects referenced by the ID given in the URL or form was not found, check the ID and try again.
delete
DELETE /stores/{storeId}/products/{productId}/items/clear HTTP/1.1
Host: api.sellsn.io
Authorization: Bearer JWT
Accept: */*
{
  "success": true,
  "message": "text",
  "data": null
}
  • GETGet all products
  • POSTCreate product
  • GETGet products
  • GETGet product by ID
  • PUTUpdate product
  • PUTSet custom fee
  • PATCHAdd image to product
  • PATCHAdd file to product
  • DELETERemove image from product
  • DELETERemove file from product
  • GETGet product by ID
  • GETGet product reviews
  • GETGet product items
  • PUTAdd items to product
  • DELETERemove items from product
  • DELETEClear product items

Get all products

get

Gets all the products in a store, does not use pagination but in turn only returns a reference which redacts a lot of data from the product. Requires the Scopes.ViewProducts permissions

Authorizations
Path parameters
storeIdstring · uuidRequired

The ID of the store to get all the products for

Responses
200
The object was successfully returned.
401
You are not authorized, check your API key and try again.
403
You are not authorized to access this endpoint, you may be missing an API key scope or be requesting a privileged endpoint.
404
One of the objects referenced by the ID given in the URL or form was not found, check the ID and try again.
get
GET /stores/{storeId}/products HTTP/1.1
Host: api.sellsn.io
Authorization: Bearer JWT
Accept: */*
{
  "success": true,
  "message": "text",
  "data": [
    {
      "id": "123e4567-e89b-12d3-a456-426614174000",
      "dateCreated": "2025-05-21T13:52:12.674Z",
      "name": "text",
      "description": "text",
      "tags": [
        "text"
      ],
      "imageNames": [
        "text"
      ],
      "cost": 1,
      "stock": 1,
      "amountSold": 1,
      "ignoreOutOfStock": true,
      "isPinned": true,
      "isDynamic": true,
      "rating": 1,
      "minimumQuantity": 1,
      "maximumQuantity": 1,
      "order": 1,
      "visibility": 0,
      "likes": 1,
      "customValueKeys": [
        "text"
      ],
      "store": {
        "id": "123e4567-e89b-12d3-a456-426614174000",
        "dateCreated": "2025-05-21T13:52:12.674Z",
        "name": "text",
        "description": "text",
        "url": "text",
        "customDomain": "text",
        "termsOfService": "text",
        "copyright": "text",
        "privacyPolicy": "text",
        "preferredCurrency": "text",
        "isVerified": true,
        "featuredProduct": {
          "id": "123e4567-e89b-12d3-a456-426614174000",
          "dateCreated": "2025-05-21T13:52:12.674Z",
          "name": "text",
          "description": "text",
          "tags": [
            "text"
          ],
          "imageNames": [
            "text"
          ],
          "cost": 1,
          "stock": 1,
          "amountSold": 1,
          "ignoreOutOfStock": true,
          "isPinned": true,
          "isDynamic": true,
          "rating": 1,
          "minimumQuantity": 1,
          "maximumQuantity": 1,
          "order": 1,
          "visibility": 0,
          "likes": 1,
          "customValueKeys": [
            "text"
          ],
          "store": {
            "id": "123e4567-e89b-12d3-a456-426614174000",
            "dateCreated": "2025-05-21T13:52:12.674Z",
            "name": "text",
            "description": "text",
            "url": "text",
            "customDomain": "text",
            "termsOfService": "text",
            "copyright": "text",
            "privacyPolicy": "text",
            "preferredCurrency": "text",
            "isVerified": true,
            "featuredProduct": "[Circular Reference]",
            "visits": 1,
            "reviews": 1,
            "rating": 1,
            "resolvedTickets": 1,
            "productsSold": 1,
            "theme": {
              "properties": {
                "ANY_ADDITIONAL_PROPERTY": "text"
              }
            },
            "socialMediaAccounts": {
              "tikTok": "text",
              "youTube": "text",
              "twitter": "text",
              "facebook": "text",
              "discord": "text",
              "telegram": "text",
              "instagram": "text"
            },
            "profileImage": "text"
          }
        },
        "visits": 1,
        "reviews": 1,
        "rating": 1,
        "resolvedTickets": 1,
        "productsSold": 1,
        "theme": {
          "properties": {
            "ANY_ADDITIONAL_PROPERTY": "text"
          }
        },
        "socialMediaAccounts": {
          "tikTok": "text",
          "youTube": "text",
          "twitter": "text",
          "facebook": "text",
          "discord": "text",
          "telegram": "text",
          "instagram": "text"
        },
        "profileImage": "text"
      }
    }
  ]
}

Create product

post

Creates a new product in the given store, requires the Scopes.CreateProducts permission

Authorizations
Path parameters
storeIdstring · uuidRequired

The ID of the store to create the product in

Body

Form for updating or updating a product in a store

namestring · min: 3 · max: 64Required

The name of the product, this is displayed publicly on the store page and marketplace

costnumber · doubleRequired

The cost of the product

ignoreOutOfStockbooleanOptional

Whether the system should ignore if the product is "Out of stock" and allow purchasing the product anyway, mandatory for dynamic products

isDynamicbooleanOptional

Whether the product is a dynamic product type, in this case the response from the webhook will dictate the item

tagsstring[] | nullableOptional

The tags on the product, very helpful for boosting the products SEO on the marketplace

webhookUrlstring | nullableOptional

The webhook URL to send dynamic product requests and just delivery notifications to

descriptionstring | nullableOptional

The description of the product, supports markdown and images from Imgur only

visibilityinteger · enumRequired

List of product visibility (or privacy) levels

Possible values:
deliveryMessagestring | nullableOptional

The message to put on the completed delivery email when the product has been delivered

customValueKeysstring[] | nullableOptional

The custom field names to prompt the user with when buying the product

minimumQuantityinteger · int32 · min: 1 · max: 100000Optional

The minimum quantity required to buy the product, defaults to 1

maximumQuantityinteger · int32 · min: -1 · max: 100000Optional

The maximum quantity the user is allowed to buy for the product, -1 = no limit

shouldBlockVirtualPrivateNetworksbooleanOptional

Whether VPNs and proxies are blocked from purchasing the product, very good for Stripe

blacklistedPaymentGatewaysstring[] | nullableOptional

The array of blacklisted payment methods for the specific product, must be a valid SellSN payment method ID

isBestSellerbooleanOptional

Whether the product should be marked as a best seller on the users store page, does nothing for the marketplace

Responses
200
The object was successfully created.
400
The provided form information is not valid, check that the provided data is valid. You can use the 'invalidFields' field to get the list of invalid fields or just use the 'message' field.
401
You are not authorized, check your API key and try again.
403
You are not authorized to access this endpoint, you may be missing an API key scope or be requesting a privileged endpoint.
404
One of the objects referenced by the ID given in the URL or form was not found, check the ID and try again.
post
POST /stores/{storeId}/products HTTP/1.1
Host: api.sellsn.io
Authorization: Bearer JWT
Content-Type: application/json
Accept: */*
Content-Length: 328

{
  "name": "text",
  "cost": 1,
  "ignoreOutOfStock": true,
  "isDynamic": true,
  "tags": [
    "text"
  ],
  "webhookUrl": "text",
  "description": "text",
  "visibility": 0,
  "deliveryMessage": "text",
  "customValueKeys": [
    "text"
  ],
  "minimumQuantity": 1,
  "maximumQuantity": 1,
  "shouldBlockVirtualPrivateNetworks": true,
  "blacklistedPaymentGateways": [
    "text"
  ],
  "isBestSeller": true
}
{
  "success": true,
  "message": "text",
  "data": {
    "id": "123e4567-e89b-12d3-a456-426614174000",
    "dateCreated": "2025-05-21T13:52:12.674Z",
    "name": "text",
    "description": "text",
    "cost": 1,
    "amountSold": 1,
    "files": [
      {
        "id": "123e4567-e89b-12d3-a456-426614174000",
        "dateCreated": "2025-05-21T13:52:12.674Z",
        "friendlyName": "text"
      }
    ],
    "tags": [
      "text"
    ],
    "webhookUrl": "text",
    "visibility": 0,
    "isPinned": true,
    "isDynamic": true,
    "imageNames": [
      "text"
    ],
    "ignoreOutOfStock": true,
    "customValueKeys": [
      "text"
    ],
    "shouldBlockVirtualPrivateNetworks": true,
    "deliveryMessage": "text",
    "minimumQuantity": 1,
    "maximumQuantity": 1,
    "order": 1,
    "likes": 1,
    "isBestSeller": true,
    "blacklistedPaymentGateways": [
      "text"
    ],
    "additionalFees": {
      "ANY_ADDITIONAL_PROPERTY": "text"
    },
    "metadata": "text"
  }
}

Update product

put

Updates a product in a store, requires the Scopes.UpdateProducts permission

Authorizations
Path parameters
storeIdstring · uuidRequired

The ID of the store the product belongs to

productIdstring · uuidRequired

The ID of the product to update

Body

Form for updating or updating a product in a store

namestring · min: 3 · max: 64Required

The name of the product, this is displayed publicly on the store page and marketplace

costnumber · doubleRequired

The cost of the product

ignoreOutOfStockbooleanOptional

Whether the system should ignore if the product is "Out of stock" and allow purchasing the product anyway, mandatory for dynamic products

isDynamicbooleanOptional

Whether the product is a dynamic product type, in this case the response from the webhook will dictate the item

tagsstring[] | nullableOptional

The tags on the product, very helpful for boosting the products SEO on the marketplace

webhookUrlstring | nullableOptional

The webhook URL to send dynamic product requests and just delivery notifications to

descriptionstring | nullableOptional

The description of the product, supports markdown and images from Imgur only

visibilityinteger · enumRequired

List of product visibility (or privacy) levels

Possible values:
deliveryMessagestring | nullableOptional

The message to put on the completed delivery email when the product has been delivered

customValueKeysstring[] | nullableOptional

The custom field names to prompt the user with when buying the product

minimumQuantityinteger · int32 · min: 1 · max: 100000Optional

The minimum quantity required to buy the product, defaults to 1

maximumQuantityinteger · int32 · min: -1 · max: 100000Optional

The maximum quantity the user is allowed to buy for the product, -1 = no limit

shouldBlockVirtualPrivateNetworksbooleanOptional

Whether VPNs and proxies are blocked from purchasing the product, very good for Stripe

blacklistedPaymentGatewaysstring[] | nullableOptional

The array of blacklisted payment methods for the specific product, must be a valid SellSN payment method ID

isBestSellerbooleanOptional

Whether the product should be marked as a best seller on the users store page, does nothing for the marketplace

Responses
200
Success
put
PUT /stores/{storeId}/products/{productId} HTTP/1.1
Host: api.sellsn.io
Authorization: Bearer JWT
Content-Type: application/json
Accept: */*
Content-Length: 328

{
  "name": "text",
  "cost": 1,
  "ignoreOutOfStock": true,
  "isDynamic": true,
  "tags": [
    "text"
  ],
  "webhookUrl": "text",
  "description": "text",
  "visibility": 0,
  "deliveryMessage": "text",
  "customValueKeys": [
    "text"
  ],
  "minimumQuantity": 1,
  "maximumQuantity": 1,
  "shouldBlockVirtualPrivateNetworks": true,
  "blacklistedPaymentGateways": [
    "text"
  ],
  "isBestSeller": true
}
200

Success

No content

Set custom fee

put

Sets a custom fee for a specific product in a store, requires the Scopes.UpdateProducts permission

Authorizations
Path parameters
storeIdstring · uuidRequired

The ID of the store that the product belongs to

productIdstring · uuidRequired

The ID of the product to set the fees for

Body

Form for updating or setting a fee percentage for a product

paymentMethodstring · min: 1Required

The payment method to set the fee percentage for, must be a valid SellSN payment method ID

feePercentagenumber · double | nullableOptional

The fee percentage to apply for the specific payment method, leave as null to remove the existing fee

Responses
200
The object was successfully updated.
400
The provided form information is not valid, check that the provided data is valid. You can use the 'invalidFields' field to get the list of invalid fields or just use the 'message' field.
401
You are not authorized, check your API key and try again.
403
You are not authorized to access this endpoint, you may be missing an API key scope or be requesting a privileged endpoint.
404
One of the objects referenced by the ID given in the URL or form was not found, check the ID and try again.
put
PUT /stores/{storeId}/products/{productId}/fees HTTP/1.1
Host: api.sellsn.io
Authorization: Bearer JWT
Content-Type: application/json
Accept: */*
Content-Length: 42

{
  "paymentMethod": "text",
  "feePercentage": 1
}
{
  "success": true,
  "message": "text",
  "data": null
}

Add image to product

patch

Adds a new image to the product, the image must be PNG, JPG, WebP or GIF and below 30 megabytes in size, requires the Scopes.UpdateProducts permission

Authorizations
Path parameters
storeIdstring · uuidRequired

The ID of the store the product belongs to

productIdstring · uuidRequired

The ID of the product to add the image to

Body
imagestring · binaryOptional
Responses
200
The object was successfully created.
400
The provided form information is not valid, check that the provided data is valid. You can use the 'invalidFields' field to get the list of invalid fields or just use the 'message' field.
401
You are not authorized, check your API key and try again.
403
You are not authorized to access this endpoint, you may be missing an API key scope or be requesting a privileged endpoint.
404
One of the objects referenced by the ID given in the URL or form was not found, check the ID and try again.
patch
PATCH /stores/{storeId}/products/{productId}/image HTTP/1.1
Host: api.sellsn.io
Authorization: Bearer JWT
Content-Type: multipart/form-data
Accept: */*
Content-Length: 18

{
  "image": "binary"
}
{
  "success": true,
  "message": "text",
  "data": {
    "id": "123e4567-e89b-12d3-a456-426614174000",
    "dateCreated": "2025-05-21T13:52:12.674Z",
    "name": "text",
    "description": "text",
    "cost": 1,
    "amountSold": 1,
    "files": [
      {
        "id": "123e4567-e89b-12d3-a456-426614174000",
        "dateCreated": "2025-05-21T13:52:12.674Z",
        "friendlyName": "text"
      }
    ],
    "tags": [
      "text"
    ],
    "webhookUrl": "text",
    "visibility": 0,
    "isPinned": true,
    "isDynamic": true,
    "imageNames": [
      "text"
    ],
    "ignoreOutOfStock": true,
    "customValueKeys": [
      "text"
    ],
    "shouldBlockVirtualPrivateNetworks": true,
    "deliveryMessage": "text",
    "minimumQuantity": 1,
    "maximumQuantity": 1,
    "order": 1,
    "likes": 1,
    "isBestSeller": true,
    "blacklistedPaymentGateways": [
      "text"
    ],
    "additionalFees": {
      "ANY_ADDITIONAL_PROPERTY": "text"
    },
    "metadata": "text"
  }
}

Add file to product

patch

Adds a file to the product, there can only be one file uploaded to a product at a time for delivery and this will replace any existing file, requires the Scopes.UpdateProducts permission

Authorizations
Path parameters
storeIdstring · uuidRequired

The ID of the store the product belongs to

productIdstring · uuidRequired

The ID of the product the file should be uploaded to

Body
filestring · binaryOptional
Responses
200
The object was successfully created.
400
The provided form information is not valid, check that the provided data is valid. You can use the 'invalidFields' field to get the list of invalid fields or just use the 'message' field.
401
You are not authorized, check your API key and try again.
403
You are not authorized to access this endpoint, you may be missing an API key scope or be requesting a privileged endpoint.
404
One of the objects referenced by the ID given in the URL or form was not found, check the ID and try again.
patch
PATCH /stores/{storeId}/products/{productId}/file HTTP/1.1
Host: api.sellsn.io
Authorization: Bearer JWT
Content-Type: multipart/form-data
Accept: */*
Content-Length: 17

{
  "file": "binary"
}
{
  "success": true,
  "message": "text",
  "data": {
    "id": "123e4567-e89b-12d3-a456-426614174000",
    "dateCreated": "2025-05-21T13:52:12.674Z",
    "name": "text",
    "description": "text",
    "cost": 1,
    "amountSold": 1,
    "files": [
      {
        "id": "123e4567-e89b-12d3-a456-426614174000",
        "dateCreated": "2025-05-21T13:52:12.674Z",
        "friendlyName": "text"
      }
    ],
    "tags": [
      "text"
    ],
    "webhookUrl": "text",
    "visibility": 0,
    "isPinned": true,
    "isDynamic": true,
    "imageNames": [
      "text"
    ],
    "ignoreOutOfStock": true,
    "customValueKeys": [
      "text"
    ],
    "shouldBlockVirtualPrivateNetworks": true,
    "deliveryMessage": "text",
    "minimumQuantity": 1,
    "maximumQuantity": 1,
    "order": 1,
    "likes": 1,
    "isBestSeller": true,
    "blacklistedPaymentGateways": [
      "text"
    ],
    "additionalFees": {
      "ANY_ADDITIONAL_PROPERTY": "text"
    },
    "metadata": "text"
  }
}

Add items to product

put

Adds a list of items to the given product, requires the Scopes.UpdateProducts permission

Authorizations
Path parameters
storeIdstring · uuidRequired

The ID of the store the product belongs to

productIdstring · uuidRequired

The ID of the product the items should be added to

Body

Form used to update the items on a product

itemsstring[] | nullableOptional

The array of items to add to the product, this will append the items to the end of the existing items

Responses
200
The object was successfully created.
400
The provided form information is not valid, check that the provided data is valid. You can use the 'invalidFields' field to get the list of invalid fields or just use the 'message' field.
401
You are not authorized, check your API key and try again.
403
You are not authorized to access this endpoint, you may be missing an API key scope or be requesting a privileged endpoint.
404
One of the objects referenced by the ID given in the URL or form was not found, check the ID and try again.
put
PUT /stores/{storeId}/products/{productId}/items HTTP/1.1
Host: api.sellsn.io
Authorization: Bearer JWT
Content-Type: application/json
Accept: */*
Content-Length: 18

{
  "items": [
    "text"
  ]
}
{
  "success": true,
  "message": "text",
  "data": null
}

Remove items from product

delete

Removes all the items in the given form from the product, requires the Scopes.UpdateProducts permission

Authorizations
Path parameters
storeIdstring · uuidRequired

The ID of the store the product belongs to

productIdstring · uuidRequired

The ID of the product to remove the items from

Body

Form used to update the items on a product

itemsstring[] | nullableOptional

The array of items to add to the product, this will append the items to the end of the existing items

Responses
200
The object was successfully deleted.
400
The provided form information is not valid, check that the provided data is valid. You can use the 'invalidFields' field to get the list of invalid fields or just use the 'message' field.
401
You are not authorized, check your API key and try again.
403
You are not authorized to access this endpoint, you may be missing an API key scope or be requesting a privileged endpoint.
404
One of the objects referenced by the ID given in the URL or form was not found, check the ID and try again.
delete
DELETE /stores/{storeId}/products/{productId}/items HTTP/1.1
Host: api.sellsn.io
Authorization: Bearer JWT
Content-Type: application/json
Accept: */*
Content-Length: 18

{
  "items": [
    "text"
  ]
}
{
  "success": true,
  "message": "text",
  "data": null
}