Overview
Block purchases that match store-scoped fraud and abuse rules.
Blacklist rules block checkout attempts that match an email, IP address, country, or autonomous system number (ASN, which identifies a network). Use the description to leave your team a clear reason for the rule.
Rules are store-scoped and affect real purchase attempts as soon as they are
active. Verify the selected X-STORE before creating or deleting one. The
operation schemas define the accepted rule types, data format, and timestamps.
Only authorized callers can read sensitive rule data.
Endpoints
Additional endpoint reference
Replace a blacklist rule
Provide your SellApp API key as a bearer token.
In: header
Path Parameters
The blacklist identifier.
Header Parameters
Reuse this key only for an identical retry. A replay returns Idempotent-Replayed: true.
8 <= length <= 255Store 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
application/json
application/json
application/json
curl -X PUT "https://sell.app/api/v2/blacklists/42" \ -H "Idempotency-Key: project-library-2026-09-04" \ -H "X-STORE: launch-lab" \ -H "Content-Type: application/json" \ -d '{ "description": "Blocked after a verified fraud report." }'{
"data": {
"id": 42,
"type": "EMAIL",
"data": "blocked@example.com",
"description": "Blocked after a verified fraud report.",
"created_at": "2026-09-04T09:00:00Z",
"updated_at": "2026-09-04T09:00:00Z",
"store_id": 12
}
}{
"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": "not_found_error",
"code": "resource_not_found",
"message": "Not Found.",
"status": 404,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#resource-not-found"
}{
"type": "conflict_error",
"code": "conflict",
"message": "The resource state changed before this request.",
"status": 409,
"param": null,
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#conflict"
}{
"type": "invalid_request_error",
"code": "cursor_expired",
"message": "This cursor has expired. Start again without a cursor.",
"status": 410,
"param": "cursor",
"request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
"docs_url": "https://sell.app/docs/api/errors#cursor-expired"
}{
"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"
}