API reference
Products & prices
Stripe-style product / price split. A Product is a thing you sell; a Price attaches currency, amount, optional recurrence and tax rate to it. One product can carry many prices (monthly vs annual vs one-off). Both ship public ids (prod_xxx / price_xxx) for sharable links.
Create a product with prices
POST
/v1/productsscope: products:writeThe nested prices array creates Price rows in the same transaction. Each Price can be one-off or recurring.
Body parameters
namerequiredstring | Product display name. |
descriptionstring | Free-form, max 2000 chars. |
imagesstring[] | Public URLs (R2 / your CDN). Max 8. |
activeboolean | Default true. Inactive products hide from checkout but stay queryable. |
pricesarray | Optional price points. Each `{unitAmount, currency, recurring?, interval?, intervalCount?, taxBps?}`. |
curl https://baynoy.com/api/v1/products \
-H "Authorization: Bearer sk_live_…" \
-d '{
"name": "Consultation",
"description": "60-minute video call",
"prices": [
{"unitAmount": 12000, "currency": "USD"},
{"unitAmount": 9900, "currency": "USD", "recurring": true, "interval": "month"}
]
}'Response
{
"ok": true,
"data": {
"id": "1a2b3c4d-...",
"publicId": "prod_abcdef1234567890",
"name": "Consultation",
"description": "60-minute video call",
"images": [],
"active": true,
"prices": [
{
"id": "5e6f7a8b-...",
"publicId": "price_zyxwvu9876543210",
"unitAmount": 12000,
"currency": "USD",
"recurring": false,
"taxBps": 0
}
],
"createdAt": "2026-05-27T12:34:56.789Z"
}
}