Reserve credits
Hold a quote's credits_max (quote_id) or an amount (credits).
Hold a quote's credits_max (quote_id) or an amount (credits). A hold moves no credits; it lowers credits_available on GET /me (balance minus active holds) until it is captured, released or expires (ttl_seconds, default 3600), so parallel work cannot spend the same credits. Idempotent on idempotency_key (body) or the Idempotency-Key header: a retry returns the same hold with 200 and replayed: true. 402 when available credits fall short.
Authorization
bearerAuth Typecut API key. Generate one in app.typecut.ai → Settings → API keys. Send as Authorization: Bearer tc_live_….
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/holds" \ -H "Content-Type: application/json" \ -d '{}'{
"data": {
"hold_id": "4ce991bb-2101-434c-985c-39697d3f31c4",
"quote_id": "3c071a1d-db86-46a7-9dc8-72ba3fbca992",
"held": 0,
"captured": 0,
"remaining": 0,
"status": "active",
"reason": "string",
"expires_at": "string",
"created_at": "string",
"closed_at": "string",
"replayed": true,
"credits_available": 0
}
}{
"data": {
"hold_id": "4ce991bb-2101-434c-985c-39697d3f31c4",
"quote_id": "3c071a1d-db86-46a7-9dc8-72ba3fbca992",
"held": 0,
"captured": 0,
"remaining": 0,
"status": "active",
"reason": "string",
"expires_at": "string",
"created_at": "string",
"closed_at": "string",
"replayed": true,
"credits_available": 0
}
}{
"error": {
"type": "string",
"code": "string",
"message": "string"
}
}{
"error": {
"type": "string",
"code": "string",
"message": "string"
}
}{
"error": {
"type": "string",
"code": "string",
"message": "string"
}
}{
"error": {
"type": "string",
"code": "string",
"message": "string"
}
}{
"error": {
"type": "string",
"code": "string",
"message": "string"
}
}