Create an add-on
Create a draft or publish an add-on with its variant and parent products.
Create an add-on in the selected store with an API key that has the listing
ability and matching store permission. Creation returns 201 and data.id.
Omit variant to create a draft. To publish in one request, send is_draft: false,
a complete fixed-price, single-payment variant, and the intended
parent_product_ids. Invalid variant or parent input rolls back the whole
creation. Retain the returned add-on and variant IDs and read the add-on back.
Publication makes the add-on available according to its visibility and parent assignments. This create operation has no response-replay guarantee; inspect existing add-ons before repeating a request whose response was lost.
Provide your SellApp API key as a bearer token.
In: header
Header Parameters
Store slug. Required for OAuth access tokens. API keys may omit it to use their current store, or the first accessible store when no current store is selected.
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://sell.app/api/v2/addons" \ -H "X-STORE: launch-lab" \ -H "Content-Type: application/json" \ -d '{ "title": "Customer support", "description": "Priority support for launches scheduled suspiciously close to Friday.", "visibility": "PUBLIC", "parent_product_ids": [ 120, 121 ] }'draft
{
"data": {
"id": 410,
"store_id": 12,
"title": "Customer support",
"slug": "customer-support",
"description": "Priority support for launches scheduled suspiciously close to Friday.",
"visibility": "PUBLIC",
"type": "addon",
"is_draft": true,
"is_discoverable": false,
"parent_product_ids": [
120,
121
],
"variants": [],
"created_at": "2026-07-11T12:00:00.000000Z",
"updated_at": "2026-07-11T12:00:00.000000Z",
"deleted_at": null,
"delivery_text": ""
}
}published
{
"data": {
"id": 410,
"store_id": 12,
"title": "Priority support",
"slug": "priority-support",
"description": "Personal help with your design kit",
"visibility": "PUBLIC",
"type": "addon",
"is_draft": false,
"is_discoverable": true,
"parent_product_ids": [
120
],
"variants": [
{
"id": 8801,
"title": "Standard",
"is_draft": false
}
],
"created_at": "2026-07-11T12:00:00.000000Z",
"updated_at": "2026-07-11T12:00:00.000000Z",
"deleted_at": null,
"delivery_text": ""
}
}{
"type": "invalid_request_error",
"code": "bad_request",
"message": "The request could not be understood.",
"status": 400,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#bad-request"
}{
"type": "authentication_error",
"code": "unauthenticated",
"message": "Unauthenticated.",
"status": 401,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#unauthenticated"
}{
"type": "authorization_error",
"code": "forbidden",
"message": "This action is unauthorized.",
"status": 403,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#forbidden"
}{
"type": "validation_error",
"code": "validation_failed",
"message": "The selected product variant id is invalid.",
"status": 422,
"param": "product_variant_id",
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#validation-failed",
"errors": {
"product_variant_id": [
"The selected product variant id is invalid."
]
}
}{
"type": "rate_limit_error",
"code": "rate_limit_exceeded",
"message": "Too Many Attempts.",
"status": 429,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#rate-limit-exceeded"
}{
"type": "api_error",
"code": "api_error",
"message": "Server Error",
"status": 500,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#api-error"
}