Quote operations
Price a list of operations before running them: credits_expected and credits_max per line and in total, in credits and USD at list, pinned to a price_book_version.
Operations are {type:"generation", slug, quantity?, units?, provider?} (a /price-book line; units are characters or seconds per call), {type:"scenes", media_source, count, quality_tier?}, or {type:"project", ...} with the /projects/estimate inputs in snake_case. When a price depends on something left open (a TTS provider), credits_max is the dearest case. Stores the quote; moves no credits. 422 with a code when an operation cannot be priced.
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
curl -X POST "https://example.com/quotes" \ -H "Content-Type: application/json" \ -d '{ "operations": [ { "type": "generation" } ] }'{
"data": {
"quote_id": "3c071a1d-db86-46a7-9dc8-72ba3fbca992",
"price_book_version": "string",
"credits_expected": 0,
"credits_max": 0,
"usd_expected": 0,
"usd_max": 0,
"bound": "estimate",
"line_items": [
{
"operation": 0,
"line": "string",
"description": "string",
"quantity": 0,
"credits_expected": 0,
"credits_max": 0
}
],
"expires_at": "string",
"created_at": "string",
"credit_balance": 0,
"affordable": true,
"note": "string"
}
}{
"error": {
"type": "string",
"code": "string",
"message": "string"
}
}{
"error": {
"type": "string",
"code": "string",
"message": "string"
}
}{
"error": {
"type": "string",
"code": "string",
"message": "string"
}
}