Create a product
Creates a new product. Optionally includes: - An image URL (use the `/upload-url` endpoint to get a one-time upload URL first) - A default price object which will be set as the default price for this product
Creates a new product.
Optionally includes:
- An image URL (use the
/upload-urlendpoint to get a one-time upload URL first) - A default price object which will be set as the default price for this product
Authorization
api-key API key for merchant integrations. Send as Authorization: Bearer <your key>.
In: header
Request Body
application/json
Product data. The image field should be a URL string from Cloudflare Images.
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/products" \ -H "Content-Type: application/json" \ -d '{ "name": "Premium Plan" }'{
"id": "prod_abc123",
"name": "Premium Plan",
"description": "Premium subscription plan",
"image": "https://example.com/image.jpg",
"unitLabel": "month",
"active": true,
"isSystemCreated": false,
"metadata": {
"category": "subscription"
},
"prices": [
{
"id": "price_abc123",
"unitAmount": 10000,
"currency": "EGP",
"type": "ONE_TIME",
"recurring": {},
"customUnitAmount": {},
"stock": 100,
"createdAt": "2024-01-01T00:00:00.000Z"
}
],
"createdAt": "2024-01-01T00:00:00.000Z",
"updatedAt": "2024-01-01T00:00:00.000Z"
}{
"error": {
"type": "invalid_request_error",
"code": "parameter_invalid",
"message": "Invalid value for parameter.",
"doc_url": "https://docs.xpay.app/integrate/errors/api-error-codes#parameter_invalid"
},
"request_id": "req_abc123def456"
}{
"error": {
"type": "authentication_error",
"code": "authentication_required",
"message": "No valid API key provided.",
"doc_url": "https://docs.xpay.app/integrate/errors/api-error-codes#authentication_required"
},
"request_id": "req_abc123def456"
}{
"error": {
"type": "invalid_request_error",
"code": "permission_denied",
"message": "The API key does not have permission to perform this action.",
"doc_url": "https://docs.xpay.app/integrate/errors/api-error-codes#permission_denied"
},
"request_id": "req_abc123def456"
}{
"error": {
"type": "api_error",
"code": "internal_error",
"message": "An unexpected error occurred. Please try again or contact support.",
"doc_url": "https://docs.xpay.app/integrate/errors/api-error-codes#internal_error"
},
"request_id": "req_abc123def456"
}