Get credit history
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.
Authorization
apiKey In: header
Query Parameters
Page number (default: 1)
1 <= valueItems per page (default: 50, max: 100)
1 <= value <= 100Value in
- "credit"
- "debit"
- "refund"
- "bonus"
- "subscription_renewal"
- "subscription_activation"
Value in
- "subscription"
- "refund"
- "bonus"
- "usage"
- "adjustment"
- "championship"
- "championship_prize"
- "championship_refund"
- "championship_period_prize"
- "championship_per_thousand_views"
- "championship_per_post"
- "credit_bundle"
- "workspace_transfer"
- "referral"
Response Body
application/json
curl -X GET "https://example.com/balance/history"{ "transactions": [ { "id": "string", "type": "credit", "amount": 0, "balance_after": 0, "reference_type": "subscription", "reference_id": "string", "description": "string", "waived": true, "expires_at": "string", "created_at": "string" } ], "pagination": { "current_page": 0, "total_pages": 0, "total_count": 0, "has_next_page": true, "has_previous_page": true, "limit": 0 }}Get balance GET
Returns your current credit balance. Credits are consumed each time you submit a video for clipping. When `unlimited` is true this workspace is on a courtesy plan: usage still shows up in the history with what it would have cost, but the balance does not move and jobs are never blocked for lack of credits.
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`.