Create a billing price row
Adds a price for a plan and immediately provisions its Polar product, returning the row with the resulting `polarProductId`. Platform admins only; an invalid amount, currency, or plan is rejected as a validation error.
Authorization
apiKey Workspace API key created in Workspace settings → API keys. Scopes on the key bound what it can read and write.
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
curl -X POST "https://example.com/v1/admin/billing/prices" \ -H "Content-Type: application/json" \ -d '{ "plan": "free", "interval": "month", "amountCents": 0 }'{ "data": { "id": "string", "plan": "free", "interval": "month", "variant": "string", "amountCents": 0, "currency": "string", "polarProductId": "string", "active": true, "updatedAt": "string" }}{ "_tag": "ApiNotFound", "error": "not_found", "message": "That item does not exist, or this key cannot see it.", "status": 404}{ "_tag": "ApiNotFound", "error": "not_found", "message": "That item does not exist, or this key cannot see it.", "status": 404}Read the platform billing overview
Returns the plans, price rows, and AI top-up products behind Snoze pricing. Opening the surface also provisions the Polar product for every price and top-up pack, which is idempotent, so the response always carries current product ids. Platform admins only.
Update a billing price row
Changes an existing price and re-provisions its Polar product so the returned `polarProductId` stays current. Platform admins only; an unknown `priceId` is reported as not found.