Products
Products describe what you sell. Attach one or more Prices to a product to bill customers at different cadences.
Use cases: Model plans, add-ons, or one-time purchases. Products power the Checkout and Billing Portal catalogs.
POST
/v1/productsCreate a product. New products are active by default.
Body Parameters
| Name | Type | Description | |
|---|---|---|---|
name | string | required | Product name, shown to the customer. |
description | string | Long-form description, shown on hosted checkout. | |
image_url | string | URL for a product image. Use /v1/products/upload_image to host one on Ching. | |
features | array | Bullet points rendered on the hosted checkout. Each element is { title, subtitle? }. | |
metadata | object | Set of key-value pairs you can attach to the object for your own use. Returned as-is on retrieval. |
Request
curl -X POST "https://api.ching.co.il/v1/products" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "example_name",
"description": "example_description",
"image_url": "example_image_url",
"features": [],
"metadata": {}
}'Response
Response
{
"success": true,
"data": {
"id": "prod_Lkt0TxOhGNMY",
"object": "product",
"name": "Pro Plan",
"description": "Full access to every feature, billed monthly.",
"image_url": null,
"features": [
{
"title": "Unlimited customers",
"subtitle": null
},
{
"title": "Priority support",
"subtitle": "Under 4h response time"
}
],
"active": true,
"metadata": {},
"livemode": false,
"created": "2026-04-10T08:00:00.000Z"
}
}GET
/v1/productsList the 100 most recent products, newest first.
Request
curl -X GET "https://api.ching.co.il/v1/products" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json"Response
Response
{
"success": true,
"data": [
{
"id": "prod_Lkt0TxOhGNMY",
"object": "product",
"name": "Pro Plan",
"description": "Full access to every feature, billed monthly.",
"image_url": null,
"features": [
{
"title": "Unlimited customers",
"subtitle": null
},
{
"title": "Priority support",
"subtitle": "Under 4h response time"
}
],
"active": true,
"metadata": {},
"livemode": false,
"created": "2026-04-10T08:00:00.000Z"
}
]
}GET
/v1/products/:idRetrieve a product by its id.
Path Parameters
| Name | Type | Description | |
|---|---|---|---|
id | string | required | The product id. |
Request
curl -X GET "https://api.ching.co.il/v1/products/:id" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json"Response
Response
{
"success": true,
"data": {
"id": "prod_Lkt0TxOhGNMY",
"object": "product",
"name": "Pro Plan",
"description": "Full access to every feature, billed monthly.",
"image_url": null,
"features": [
{
"title": "Unlimited customers",
"subtitle": null
},
{
"title": "Priority support",
"subtitle": "Under 4h response time"
}
],
"active": true,
"metadata": {},
"livemode": false,
"created": "2026-04-10T08:00:00.000Z"
}
}POST
/v1/products/:idUpdate a product. Pass only the fields you want to change. Send null to clear description, image_url, or features.
Path Parameters
| Name | Type | Description | |
|---|---|---|---|
id | string | required | The product id. |
Body Parameters
| Name | Type | Description | |
|---|---|---|---|
name | string | New name. | |
description | string | New description, or null to clear. | |
image_url | string | New image URL, or null to clear. | |
features | array | New feature list, or null to clear. | |
active | boolean | Set to false to retire the product without deleting historical data. | |
metadata | object | Set of key-value pairs you can attach to the object for your own use. Returned as-is on retrieval. |
Request
curl -X POST "https://api.ching.co.il/v1/products/:id" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "example_name",
"description": "example_description",
"image_url": "example_image_url",
"features": [],
"active": true,
"metadata": {}
}'Response
Response
{
"success": true,
"data": {
"id": "prod_Lkt0TxOhGNMY",
"object": "product",
"name": "Pro Plan",
"description": "Full access to every feature, billed monthly.",
"image_url": null,
"features": [
{
"title": "Unlimited customers",
"subtitle": null
},
{
"title": "Priority support",
"subtitle": "Under 4h response time"
}
],
"active": true,
"metadata": {},
"livemode": false,
"created": "2026-04-10T08:00:00.000Z"
}
}POST
/v1/products/upload_imageUpload a product image to Ching-hosted storage and receive a URL you can plug into image_url.
Body Parameters
| Name | Type | Description | |
|---|---|---|---|
content | string | required | Base64-encoded image payload (no data: prefix). Decoded size must be under ~2 MB. |
content_type | string | One of "image/png" (default), "image/jpeg", "image/webp", "image/gif". | |
filename | string | Readable filename, without extension. Alphanumeric, dash, or underscore; max 48 characters. |
Request
curl -X POST "https://api.ching.co.il/v1/products/upload_image" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "example_content",
"content_type": "example_content_type",
"filename": "example_filename"
}'Response
Response
{
"success": true,
"data": {
"url": "https://storage.googleapis.com/ching-assets/ching/products/1/1713566712345-pro-plan.png"
}
}