List plans and credit packs
Free. The plans and credit packs this workspace can buy, at the price cut.pro charges this user, each with a checkout link: a cut.pro page that opens the payment with that plan or pack already chosen, in this workspace. The user pays there; nothing is charged by this call. Offer it when a job needs more credits than the balance (INSUFFICIENT_CREDITS) or the user asks about plans, prices or more credits: a pack covers a one-off job (suggest the smallest one with at least the missing credits), and a plan suits someone who creates every month (credits_per_month renews monthly, and highlights says what else it includes). When can_buy is false only the workspace owner can buy, so tell the user to ask them. SOLD_ON_SITE means the app this key belongs to does not allow purchases: send the user to cut.pro.
Authorization
apiKey In: header
Query Parameters
Value in
- "pt"
- "en"
- "es"
Response Body
application/json
application/json
application/json
curl -X GET "https://example.com/balance/offers"{ "can_buy": true, "current_plan": { "id": "string", "name": "string", "is_free": true }, "plans": [ { "id": "string", "name": "string", "currency": "string", "credits_per_month": 0, "monthly_price_cents": 0, "annual_price_cents": 0, "highlights": [ "string" ], "current": true, "monthly_checkout_url": "string", "annual_checkout_url": "string" } ], "packs": [ { "id": "string", "credits": 0, "currency": "string", "price_cents": 0, "checkout_url": "string" } ]}Get credit history GET
Returns the credit transaction ledger for this workspace, newest first. Each row shows the delta (`amount`, negative for debits), the resulting balance, and what caused it (`reference_type` + `reference_id`) so you can reconcile against submissions, renewals, refunds, and bonuses.
Start an upload POST
Returns the generated `video_id` plus whatever the file's size requires to upload it directly to storage, then call `POST /videos/upload/complete` to register the upload and get the credit cost. When `mode` is `single`, PUT the bytes to `upload_url` with the same `Content-Type` you declared here. When `mode` is `multipart` the file is past the storage provider's single-PUT ceiling: split it into `part_size`-byte chunks and PUT each one to the matching entry of `part_urls` (index 0 is part 1, the last part may be shorter). Collect each response's `ETag` header and post them to `POST /videos/upload/multipart/complete`. Max file size comes from your plan — a `FILE_TOO_LARGE` response reports the effective ceiling in `max_size`. Extensions: `.mp4`, `.mov`, `.webm`, `.mkv`.