GET /accounts/{account_id}/usage/creditsBreak the credit spend of an account down by day, project and model, optionally for one project; returns the series with token counts per model. Requires account.billing.read.
Servers
[
{
"url": "https://api.veryfront.com"
}
]Authentication
[
{
"bearerAuth": []
},
{
"apiKeyAuth": []
}
]{
"bearerAuth": {
"type": "http",
"scheme": "bearer",
"bearerFormat": "JWT or API Key",
"description": "Use a JWT bearer token or a Veryfront API key in the `Authorization` header."
},
"apiKeyAuth": {
"type": "apiKey",
"in": "header",
"name": "X-API-Key",
"description": "Alternative API key header for `vf_<prefix>_<secret>` tokens."
}
}Parameters
Parameter contracts
[
{
"schema": {
"type": "string",
"format": "uuid"
},
"required": true,
"name": "account_id",
"in": "path"
},
{
"schema": {
"$ref": "#/components/schemas/UsageQueryPreset"
},
"required": false,
"description": "Whole local days, defaulting to 30d. Explicit from/to bounds take precedence over preset, including SDK-supplied defaults.",
"name": "preset",
"in": "query"
},
{
"schema": {
"$ref": "#/components/schemas/UsageQueryFrom"
},
"required": false,
"description": "Inclusive start. Supply both from and to; these bounds take precedence over preset.",
"name": "from",
"in": "query"
},
{
"schema": {
"$ref": "#/components/schemas/UsageQueryTo"
},
"required": false,
"description": "Exclusive end, no later than the end of today in timezone.",
"name": "to",
"in": "query"
},
{
"schema": {
"$ref": "#/components/schemas/UsageQueryTimezone"
},
"required": false,
"name": "timezone",
"in": "query"
},
{
"schema": {
"$ref": "#/components/schemas/UsageQueryGranularity"
},
"required": false,
"description": "UTC hours, or local calendar days, Monday-based weeks and months.",
"name": "granularity",
"in": "query"
},
{
"schema": {
"$ref": "#/components/schemas/UsageQueryGroupBy"
},
"required": false,
"description": "Grouping dimensions supported by this operation. Repeat the parameter or use a comma-separated list.",
"name": "group_by",
"in": "query",
"style": "form",
"explode": true
},
{
"schema": {
"$ref": "#/components/schemas/UsageQueryCompare"
},
"required": false,
"description": "Compare preceding calendar months for whole-month custom ranges, local days for whole-day ranges and presets, or equal elapsed duration otherwise.",
"name": "compare",
"in": "query"
},
{
"schema": {
"type": "string",
"minLength": 1,
"description": "Project ID or slug that narrows the read to one project of the account. A project of another account is not found."
},
"required": false,
"description": "Project ID or slug that narrows the read to one project of the account. A project of another account is not found.",
"name": "project_reference",
"in": "query"
}
]Responses
200
Credit usage of the account by day, project and model, optionally for one project.
{
"description": "Credit usage of the account by day, project and model, optionally for one project.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"summary": {
"type": "object",
"properties": {
"credits_used": {
"type": "number",
"description": "Total credits used."
},
"requests": {
"type": "number",
"description": "Total AI requests."
},
"input_tokens": {
"type": "number",
"description": "Total input tokens."
},
"output_tokens": {
"type": "number",
"description": "Total output tokens."
},
"cache_creation_input_tokens": {
"type": "number",
"description": "Total cache creation input tokens."
},
"cache_read_input_tokens": {
"type": "number",
"description": "Total cache read input tokens."
},
"previous": {
"type": "object",
"properties": {
"credits_used": {
"type": "number",
"description": "Total credits used."
},
"requests": {
"type": "number",
"description": "Total AI requests."
},
"input_tokens": {
"type": "number",
"description": "Total input tokens."
},
"output_tokens": {
"type": "number",
"description": "Total output tokens."
},
"cache_creation_input_tokens": {
"type": "number",
"description": "Total cache creation input tokens."
},
"cache_read_input_tokens": {
"type": "number",
"description": "Total cache read input tokens."
}
},
"required": [
"credits_used",
"requests",
"input_tokens",
"output_tokens",
"cache_creation_input_tokens",
"cache_read_input_tokens"
]
}
},
"required": [
"credits_used",
"requests",
"input_tokens",
"output_tokens",
"cache_creation_input_tokens",
"cache_read_input_tokens"
]
},
"timeframe": {
"type": "object",
"properties": {
"from": {
"type": "string",
"format": "date-time",
"description": "Inclusive start."
},
"to": {
"type": "string",
"format": "date-time",
"description": "Exclusive end."
},
"timezone": {
"type": "string"
},
"granularity": {
"type": "string",
"enum": [
"hour",
"day",
"week",
"month"
]
},
"bucket_count": {
"type": "integer",
"minimum": 0
},
"previous": {
"type": "object",
"properties": {
"from": {
"type": "string",
"format": "date-time",
"description": "Inclusive start."
},
"to": {
"type": "string",
"format": "date-time",
"description": "Exclusive end."
},
"timezone": {
"type": "string"
},
"granularity": {
"type": "string",
"enum": [
"hour",
"day",
"week",
"month"
]
},
"bucket_count": {
"type": "integer",
"minimum": 0
}
},
"required": [
"from",
"to",
"timezone",
"granularity",
"bucket_count"
]
}
},
"required": [
"from",
"to",
"timezone",
"granularity",
"bucket_count"
]
},
"series": {
"type": "array",
"items": {
"type": "object",
"properties": {
"bucket_start": {
"type": "string",
"description": "Bucket start timestamp."
},
"credits_used": {
"type": "number",
"description": "Credits used in the bucket."
},
"requests": {
"type": "number",
"description": "AI requests in the bucket."
},
"input_tokens": {
"type": "number",
"description": "Input tokens in the bucket."
},
"output_tokens": {
"type": "number",
"description": "Output tokens in the bucket."
},
"cache_creation_input_tokens": {
"type": "number",
"description": "Cache creation input tokens in the bucket."
},
"cache_read_input_tokens": {
"type": "number",
"description": "Cache read input tokens in the bucket."
},
"projects": {
"type": "array",
"items": {
"type": "object",
"properties": {
"project_id": {
"type": [
"string",
"null"
],
"format": "uuid",
"description": "Project ID, or null for unscoped usage."
},
"project_name": {
"type": "string",
"description": "Project display name."
},
"project_slug": {
"type": [
"string",
"null"
],
"description": "Project slug, or null when unavailable."
},
"credits_used": {
"type": "number",
"description": "Credits used by this project."
},
"requests": {
"type": "number",
"description": "AI requests billed to this project."
},
"input_tokens": {
"type": "number",
"description": "Input tokens billed to this project."
},
"output_tokens": {
"type": "number",
"description": "Output tokens billed to this project."
},
"cache_creation_input_tokens": {
"type": "number",
"description": "Cache creation input tokens billed to this project."
},
"cache_read_input_tokens": {
"type": "number",
"description": "Cache read input tokens billed to this project."
}
},
"required": [
"project_id",
"project_name",
"project_slug",
"credits_used",
"requests",
"input_tokens",
"output_tokens",
"cache_creation_input_tokens",
"cache_read_input_tokens"
]
}
},
"groups": {
"type": "array",
"items": {
"type": "object",
"properties": {
"credits_used": {
"type": "number",
"description": "Total credits used."
},
"requests": {
"type": "number",
"description": "Total AI requests."
},
"input_tokens": {
"type": "number",
"description": "Total input tokens."
},
"output_tokens": {
"type": "number",
"description": "Total output tokens."
},
"cache_creation_input_tokens": {
"type": "number",
"description": "Total cache creation input tokens."
},
"cache_read_input_tokens": {
"type": "number",
"description": "Total cache read input tokens."
},
"dimensions": {
"type": "object",
"properties": {
"project_id": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"model": {
"type": [
"string",
"null"
]
},
"model_provider": {
"type": [
"string",
"null"
]
},
"api_key_id": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"api_key_kind": {
"type": "string",
"enum": [
"api_key",
"no_api_key",
"other_keys",
"deleted_keys",
"unattributed"
],
"description": "Key-listing reports distinguish named keys, other/deleted keys, keyless and unattributed usage."
},
"member_id": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"member_kind": {
"type": "string",
"enum": [
"member",
"former_member",
"deleted_users",
"automations",
"unattributed"
],
"description": "Project-member reports distinguish named people, deleted users, automations and unattributed usage."
}
}
}
},
"required": [
"credits_used",
"requests",
"input_tokens",
"output_tokens",
"cache_creation_input_tokens",
"cache_read_input_tokens",
"dimensions"
]
}
}
},
"required": [
"bucket_start",
"credits_used",
"requests",
"input_tokens",
"output_tokens",
"cache_creation_input_tokens",
"cache_read_input_tokens",
"projects"
]
}
},
"projects": {
"type": "array",
"items": {
"type": "object",
"properties": {
"project_id": {
"type": [
"string",
"null"
],
"format": "uuid",
"description": "Project ID, or null for unscoped usage."
},
"project_name": {
"type": "string",
"description": "Project display name."
},
"project_slug": {
"type": [
"string",
"null"
],
"description": "Project slug, or null when unavailable."
},
"credits_used": {
"type": "number",
"description": "Credits used by this project."
},
"requests": {
"type": "number",
"description": "AI requests billed to this project."
},
"input_tokens": {
"type": "number",
"description": "Input tokens billed to this project."
},
"output_tokens": {
"type": "number",
"description": "Output tokens billed to this project."
},
"cache_creation_input_tokens": {
"type": "number",
"description": "Cache creation input tokens billed to this project."
},
"cache_read_input_tokens": {
"type": "number",
"description": "Cache read input tokens billed to this project."
}
},
"required": [
"project_id",
"project_name",
"project_slug",
"credits_used",
"requests",
"input_tokens",
"output_tokens",
"cache_creation_input_tokens",
"cache_read_input_tokens"
]
}
},
"models": {
"type": "array",
"items": {
"type": "object",
"properties": {
"funding": {
"type": "string",
"enum": [
"managed",
"customer",
"mixed"
],
"description": "Recorded credential funding; omitted when unknown. Credits always reflect the historical ledger."
},
"model": {
"type": "string",
"description": "Canonical or normalized AI model identifier."
},
"canonical_model_id": {
"type": "string",
"description": "Canonical catalog model identifier."
},
"model_provider": {
"type": "string",
"description": "Model vendor id. Known values: `anthropic`, `openai`, `google`, `mistral`, `moonshotai`, `deepseek`, `qwen`, `zai`, `unknown`. Other vendor ids may appear; clients must accept any string.",
"example": "anthropic"
},
"inference_provider": {
"type": "string",
"description": "Inference provider handling the request. Known values: `veryfront-cloud`, `unknown`. Other values may appear; clients must accept any string.",
"example": "veryfront-cloud"
},
"credits_used": {
"type": "number",
"description": "Credits used by this model."
},
"requests": {
"type": "number",
"description": "AI requests billed to this model."
},
"input_tokens": {
"type": "number",
"description": "Input tokens billed to this model."
},
"output_tokens": {
"type": "number",
"description": "Output tokens billed to this model."
},
"cache_creation_input_tokens": {
"type": "number",
"description": "Cache creation input tokens billed to this model."
},
"cache_read_input_tokens": {
"type": "number",
"description": "Cache read input tokens billed to this model."
},
"provider_cost_usd": {
"type": "number",
"description": "Model provider cost in USD for this model."
},
"veryfront_charge_usd": {
"type": "number",
"description": "Veryfront charge in USD for this model."
},
"cost_attribution": {
"type": "string",
"enum": [
"estimated"
],
"description": "Present when historical cost attribution was recovered from persisted credits."
}
},
"required": [
"model",
"model_provider",
"inference_provider",
"credits_used",
"requests",
"input_tokens",
"output_tokens",
"cache_creation_input_tokens",
"cache_read_input_tokens"
]
}
},
"serving": {
"type": "array",
"items": {
"type": "object",
"properties": {
"host": {
"type": [
"string",
"null"
],
"description": "Catalog ID of the deployment host, not a provider hostname or URL. Null means no deployment was recorded, including older usage, calls without a catalog deployment, and aggregated channel usage. Null does not indicate where inference ran."
},
"tier": {
"type": [
"string",
"null"
],
"description": "Sovereignty tier as a catalog ID. Clients must accept unknown values as tiers can be added. Null means no tier was recorded and does not indicate where inference ran. The API does not infer a tier from billing or other fields.",
"example": "eu-resident"
},
"funding": {
"type": "string",
"enum": [
"managed",
"customer",
"mixed"
],
"description": "Recorded funding for this spend group; omitted when provenance is unknown."
},
"credits": {
"type": "number",
"description": "Credits debited in the timeframe."
},
"usd": {
"type": "number",
"description": "Customer-billed USD for those credits."
},
"requests": {
"type": "number",
"description": "Number of provider calls recorded."
},
"input_tokens": {
"type": "number",
"description": "Input tokens."
},
"output_tokens": {
"type": "number",
"description": "Output tokens."
},
"cache_read_tokens": {
"type": "number",
"description": "Tokens read from the prompt cache."
},
"cache_creation_tokens": {
"type": "number",
"description": "Tokens written to the prompt cache."
}
},
"required": [
"host",
"tier",
"credits",
"usd",
"requests",
"input_tokens",
"output_tokens",
"cache_read_tokens",
"cache_creation_tokens"
]
},
"description": "The same spend cut by the deployment that served it. Ordered by spend descending, then by request count descending, then by host, then by tier; the row whose `host` and `tier` are both null is always last, because it is the absence of a record rather than a deployment. Additive: it neither replaces nor re-slices any other field. Omitted where the serving breakdown is not enabled; `models` is unchanged by it."
},
"scope": {
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"account"
]
},
"account_id": {
"type": "string",
"format": "uuid"
},
"project_id": {
"type": [
"string",
"null"
],
"format": "uuid"
}
},
"required": [
"kind",
"account_id",
"project_id"
]
},
"group_by": {
"type": "array",
"items": {
"type": "string",
"enum": [
"project",
"model",
"api_key",
"member"
]
}
}
},
"required": [
"summary",
"timeframe",
"series",
"projects",
"models"
]
}
}
}
}400
Bad request
{
"description": "Bad request",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}401
Unauthorized
{
"description": "Unauthorized",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}403
Forbidden
{
"description": "Forbidden",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}404
Not found
{
"description": "Not found",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}500
Server error
{
"description": "Server error",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}Referenced contracts
components/parameters/UsageQueryPreset
{
"schema": {
"$ref": "#/components/schemas/UsageQueryPreset"
},
"required": false,
"description": "Whole local days, defaulting to 30d. Explicit from/to bounds take precedence over preset, including SDK-supplied defaults.",
"name": "preset",
"in": "query"
}components/schemas/UsageQueryPreset
{
"type": "string",
"enum": [
"7d",
"30d",
"90d"
],
"default": "30d",
"description": "Whole local days, defaulting to 30d. Explicit from/to bounds take precedence over preset, including SDK-supplied defaults."
}components/parameters/UsageQueryFrom
{
"schema": {
"$ref": "#/components/schemas/UsageQueryFrom"
},
"required": false,
"description": "Inclusive start. Supply both from and to; these bounds take precedence over preset.",
"name": "from",
"in": "query"
}components/schemas/UsageQueryFrom
{
"type": "string",
"format": "date-time",
"description": "Inclusive start. Supply both from and to; these bounds take precedence over preset."
}components/parameters/UsageQueryTo
{
"schema": {
"$ref": "#/components/schemas/UsageQueryTo"
},
"required": false,
"description": "Exclusive end, no later than the end of today in timezone.",
"name": "to",
"in": "query"
}components/schemas/UsageQueryTo
{
"type": "string",
"format": "date-time",
"description": "Exclusive end, no later than the end of today in timezone."
}components/parameters/UsageQueryTimezone
{
"schema": {
"$ref": "#/components/schemas/UsageQueryTimezone"
},
"required": false,
"name": "timezone",
"in": "query"
}components/schemas/UsageQueryTimezone
{
"type": "string",
"default": "UTC"
}components/parameters/UsageQueryGranularity
{
"schema": {
"$ref": "#/components/schemas/UsageQueryGranularity"
},
"required": false,
"description": "UTC hours, or local calendar days, Monday-based weeks and months.",
"name": "granularity",
"in": "query"
}components/schemas/UsageQueryGranularity
{
"type": "string",
"enum": [
"hour",
"day",
"week",
"month"
],
"default": "day",
"description": "UTC hours, or local calendar days, Monday-based weeks and months."
}components/parameters/UsageQueryGroupBy
{
"schema": {
"$ref": "#/components/schemas/UsageQueryGroupBy"
},
"required": false,
"description": "Grouping dimensions supported by this operation. Repeat the parameter or use a comma-separated list.",
"name": "group_by",
"in": "query",
"style": "form",
"explode": true
}components/schemas/UsageQueryGroupBy
{
"type": "array",
"items": {
"type": "string",
"enum": [
"project",
"model",
"api_key",
"member"
]
},
"maxItems": 4,
"description": "Grouping dimensions supported by this operation. Repeat the parameter or use a comma-separated list."
}components/parameters/UsageQueryCompare
{
"schema": {
"$ref": "#/components/schemas/UsageQueryCompare"
},
"required": false,
"description": "Compare preceding calendar months for whole-month custom ranges, local days for whole-day ranges and presets, or equal elapsed duration otherwise.",
"name": "compare",
"in": "query"
}components/schemas/UsageQueryCompare
{
"type": "string",
"enum": [
"previous_period"
],
"description": "Compare preceding calendar months for whole-month custom ranges, local days for whole-day ranges and presets, or equal elapsed duration otherwise."
}components/schemas/Problem
{
"type": "object",
"properties": {
"cause": {
"type": "string",
"enum": [
"schedule_concurrency_forbidden",
"schedule_fire_in_progress",
"schedule_run_limit_reached"
],
"description": "Schedule admission refusal."
},
"idempotency": {
"type": "object",
"properties": {
"state": {
"type": "string",
"enum": [
"in_progress",
"payload_mismatch",
"outcome_unknown"
]
},
"operation": {
"type": "string",
"minLength": 1
},
"retryable": {
"type": "boolean"
},
"retry_after_seconds": {
"type": [
"integer",
"null"
],
"minimum": 0
},
"expires_at": {
"type": [
"string",
"null"
]
},
"recovery": {
"type": "object",
"properties": {
"available": {
"type": "boolean"
},
"description": {
"type": "string"
},
"resource_url": {
"type": "string"
}
},
"required": [
"available",
"description"
]
}
},
"required": [
"state",
"operation",
"retryable",
"retry_after_seconds",
"expires_at"
],
"description": "Replay status, retry timing, and recovery lookup."
},
"type": {
"type": "string",
"description": "URI reference identifying the problem type",
"example": "https://api.veryfront.com/errors/validation-failed"
},
"title": {
"type": "string",
"description": "Short human-readable summary of the problem",
"example": "Validation Failed"
},
"status": {
"type": "integer",
"minimum": 100,
"maximum": 599,
"description": "HTTP status code",
"example": 400
},
"code": {
"type": "string",
"description": "Stable machine-readable error code",
"example": "RUN_INVALID_INPUT"
},
"detail": {
"type": "string",
"description": "Human-readable explanation specific to this occurrence",
"example": "The 'email' field must be a valid email address"
},
"instance": {
"type": "string",
"description": "URI reference identifying the specific occurrence",
"example": "/projects/my-project/members"
},
"slug": {
"type": "string",
"description": "Stable identifier for the problem type",
"example": "validation-failed"
},
"category": {
"type": "string",
"enum": [
"AUTH",
"RESOURCE",
"VALIDATION",
"DATABASE",
"SUBSCRIPTION",
"INTEGRATION",
"INTERNAL"
],
"description": "API error category",
"example": "VALIDATION"
},
"suggestion": {
"type": "string",
"description": "Suggested action to resolve the problem",
"example": "Check the request body and query parameters against the API documentation."
},
"errors": {
"type": "array",
"items": {
"type": "object",
"properties": {
"field": {
"type": "string",
"description": "Field path that caused the error",
"example": "email"
},
"message": {
"type": "string",
"description": "Error message for this field",
"example": "Invalid email format"
},
"code": {
"type": "string",
"description": "Error code for this field",
"example": "INVALID_FORMAT"
}
},
"required": [
"field",
"message"
]
},
"description": "Detailed field-level errors for validation failures"
}
},
"required": [
"type",
"title",
"status"
]
}Operation contract
{
"operationId": "getCreditUsage",
"tags": [
"billing-usage/Usage/Usage"
],
"summary": "Get credit usage",
"description": "Break the credit spend of an account down by day, project and model, optionally for one project; returns the series with token counts per model. Requires account.billing.read.",
"parameters": [
{
"schema": {
"type": "string",
"format": "uuid"
},
"required": true,
"name": "account_id",
"in": "path"
},
{
"$ref": "#/components/parameters/UsageQueryPreset"
},
{
"$ref": "#/components/parameters/UsageQueryFrom"
},
{
"$ref": "#/components/parameters/UsageQueryTo"
},
{
"$ref": "#/components/parameters/UsageQueryTimezone"
},
{
"$ref": "#/components/parameters/UsageQueryGranularity"
},
{
"$ref": "#/components/parameters/UsageQueryGroupBy"
},
{
"$ref": "#/components/parameters/UsageQueryCompare"
},
{
"schema": {
"type": "string",
"minLength": 1,
"description": "Project ID or slug that narrows the read to one project of the account. A project of another account is not found."
},
"required": false,
"description": "Project ID or slug that narrows the read to one project of the account. A project of another account is not found.",
"name": "project_reference",
"in": "query"
}
],
"responses": {
"200": {
"description": "Credit usage of the account by day, project and model, optionally for one project.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"summary": {
"type": "object",
"properties": {
"credits_used": {
"type": "number",
"description": "Total credits used."
},
"requests": {
"type": "number",
"description": "Total AI requests."
},
"input_tokens": {
"type": "number",
"description": "Total input tokens."
},
"output_tokens": {
"type": "number",
"description": "Total output tokens."
},
"cache_creation_input_tokens": {
"type": "number",
"description": "Total cache creation input tokens."
},
"cache_read_input_tokens": {
"type": "number",
"description": "Total cache read input tokens."
},
"previous": {
"type": "object",
"properties": {
"credits_used": {
"type": "number",
"description": "Total credits used."
},
"requests": {
"type": "number",
"description": "Total AI requests."
},
"input_tokens": {
"type": "number",
"description": "Total input tokens."
},
"output_tokens": {
"type": "number",
"description": "Total output tokens."
},
"cache_creation_input_tokens": {
"type": "number",
"description": "Total cache creation input tokens."
},
"cache_read_input_tokens": {
"type": "number",
"description": "Total cache read input tokens."
}
},
"required": [
"credits_used",
"requests",
"input_tokens",
"output_tokens",
"cache_creation_input_tokens",
"cache_read_input_tokens"
]
}
},
"required": [
"credits_used",
"requests",
"input_tokens",
"output_tokens",
"cache_creation_input_tokens",
"cache_read_input_tokens"
]
},
"timeframe": {
"type": "object",
"properties": {
"from": {
"type": "string",
"format": "date-time",
"description": "Inclusive start."
},
"to": {
"type": "string",
"format": "date-time",
"description": "Exclusive end."
},
"timezone": {
"type": "string"
},
"granularity": {
"type": "string",
"enum": [
"hour",
"day",
"week",
"month"
]
},
"bucket_count": {
"type": "integer",
"minimum": 0
},
"previous": {
"type": "object",
"properties": {
"from": {
"type": "string",
"format": "date-time",
"description": "Inclusive start."
},
"to": {
"type": "string",
"format": "date-time",
"description": "Exclusive end."
},
"timezone": {
"type": "string"
},
"granularity": {
"type": "string",
"enum": [
"hour",
"day",
"week",
"month"
]
},
"bucket_count": {
"type": "integer",
"minimum": 0
}
},
"required": [
"from",
"to",
"timezone",
"granularity",
"bucket_count"
]
}
},
"required": [
"from",
"to",
"timezone",
"granularity",
"bucket_count"
]
},
"series": {
"type": "array",
"items": {
"type": "object",
"properties": {
"bucket_start": {
"type": "string",
"description": "Bucket start timestamp."
},
"credits_used": {
"type": "number",
"description": "Credits used in the bucket."
},
"requests": {
"type": "number",
"description": "AI requests in the bucket."
},
"input_tokens": {
"type": "number",
"description": "Input tokens in the bucket."
},
"output_tokens": {
"type": "number",
"description": "Output tokens in the bucket."
},
"cache_creation_input_tokens": {
"type": "number",
"description": "Cache creation input tokens in the bucket."
},
"cache_read_input_tokens": {
"type": "number",
"description": "Cache read input tokens in the bucket."
},
"projects": {
"type": "array",
"items": {
"type": "object",
"properties": {
"project_id": {
"type": [
"string",
"null"
],
"format": "uuid",
"description": "Project ID, or null for unscoped usage."
},
"project_name": {
"type": "string",
"description": "Project display name."
},
"project_slug": {
"type": [
"string",
"null"
],
"description": "Project slug, or null when unavailable."
},
"credits_used": {
"type": "number",
"description": "Credits used by this project."
},
"requests": {
"type": "number",
"description": "AI requests billed to this project."
},
"input_tokens": {
"type": "number",
"description": "Input tokens billed to this project."
},
"output_tokens": {
"type": "number",
"description": "Output tokens billed to this project."
},
"cache_creation_input_tokens": {
"type": "number",
"description": "Cache creation input tokens billed to this project."
},
"cache_read_input_tokens": {
"type": "number",
"description": "Cache read input tokens billed to this project."
}
},
"required": [
"project_id",
"project_name",
"project_slug",
"credits_used",
"requests",
"input_tokens",
"output_tokens",
"cache_creation_input_tokens",
"cache_read_input_tokens"
]
}
},
"groups": {
"type": "array",
"items": {
"type": "object",
"properties": {
"credits_used": {
"type": "number",
"description": "Total credits used."
},
"requests": {
"type": "number",
"description": "Total AI requests."
},
"input_tokens": {
"type": "number",
"description": "Total input tokens."
},
"output_tokens": {
"type": "number",
"description": "Total output tokens."
},
"cache_creation_input_tokens": {
"type": "number",
"description": "Total cache creation input tokens."
},
"cache_read_input_tokens": {
"type": "number",
"description": "Total cache read input tokens."
},
"dimensions": {
"type": "object",
"properties": {
"project_id": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"model": {
"type": [
"string",
"null"
]
},
"model_provider": {
"type": [
"string",
"null"
]
},
"api_key_id": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"api_key_kind": {
"type": "string",
"enum": [
"api_key",
"no_api_key",
"other_keys",
"deleted_keys",
"unattributed"
],
"description": "Key-listing reports distinguish named keys, other/deleted keys, keyless and unattributed usage."
},
"member_id": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"member_kind": {
"type": "string",
"enum": [
"member",
"former_member",
"deleted_users",
"automations",
"unattributed"
],
"description": "Project-member reports distinguish named people, deleted users, automations and unattributed usage."
}
}
}
},
"required": [
"credits_used",
"requests",
"input_tokens",
"output_tokens",
"cache_creation_input_tokens",
"cache_read_input_tokens",
"dimensions"
]
}
}
},
"required": [
"bucket_start",
"credits_used",
"requests",
"input_tokens",
"output_tokens",
"cache_creation_input_tokens",
"cache_read_input_tokens",
"projects"
]
}
},
"projects": {
"type": "array",
"items": {
"type": "object",
"properties": {
"project_id": {
"type": [
"string",
"null"
],
"format": "uuid",
"description": "Project ID, or null for unscoped usage."
},
"project_name": {
"type": "string",
"description": "Project display name."
},
"project_slug": {
"type": [
"string",
"null"
],
"description": "Project slug, or null when unavailable."
},
"credits_used": {
"type": "number",
"description": "Credits used by this project."
},
"requests": {
"type": "number",
"description": "AI requests billed to this project."
},
"input_tokens": {
"type": "number",
"description": "Input tokens billed to this project."
},
"output_tokens": {
"type": "number",
"description": "Output tokens billed to this project."
},
"cache_creation_input_tokens": {
"type": "number",
"description": "Cache creation input tokens billed to this project."
},
"cache_read_input_tokens": {
"type": "number",
"description": "Cache read input tokens billed to this project."
}
},
"required": [
"project_id",
"project_name",
"project_slug",
"credits_used",
"requests",
"input_tokens",
"output_tokens",
"cache_creation_input_tokens",
"cache_read_input_tokens"
]
}
},
"models": {
"type": "array",
"items": {
"type": "object",
"properties": {
"funding": {
"type": "string",
"enum": [
"managed",
"customer",
"mixed"
],
"description": "Recorded credential funding; omitted when unknown. Credits always reflect the historical ledger."
},
"model": {
"type": "string",
"description": "Canonical or normalized AI model identifier."
},
"canonical_model_id": {
"type": "string",
"description": "Canonical catalog model identifier."
},
"model_provider": {
"type": "string",
"description": "Model vendor id. Known values: `anthropic`, `openai`, `google`, `mistral`, `moonshotai`, `deepseek`, `qwen`, `zai`, `unknown`. Other vendor ids may appear; clients must accept any string.",
"example": "anthropic"
},
"inference_provider": {
"type": "string",
"description": "Inference provider handling the request. Known values: `veryfront-cloud`, `unknown`. Other values may appear; clients must accept any string.",
"example": "veryfront-cloud"
},
"credits_used": {
"type": "number",
"description": "Credits used by this model."
},
"requests": {
"type": "number",
"description": "AI requests billed to this model."
},
"input_tokens": {
"type": "number",
"description": "Input tokens billed to this model."
},
"output_tokens": {
"type": "number",
"description": "Output tokens billed to this model."
},
"cache_creation_input_tokens": {
"type": "number",
"description": "Cache creation input tokens billed to this model."
},
"cache_read_input_tokens": {
"type": "number",
"description": "Cache read input tokens billed to this model."
},
"provider_cost_usd": {
"type": "number",
"description": "Model provider cost in USD for this model."
},
"veryfront_charge_usd": {
"type": "number",
"description": "Veryfront charge in USD for this model."
},
"cost_attribution": {
"type": "string",
"enum": [
"estimated"
],
"description": "Present when historical cost attribution was recovered from persisted credits."
}
},
"required": [
"model",
"model_provider",
"inference_provider",
"credits_used",
"requests",
"input_tokens",
"output_tokens",
"cache_creation_input_tokens",
"cache_read_input_tokens"
]
}
},
"serving": {
"type": "array",
"items": {
"type": "object",
"properties": {
"host": {
"type": [
"string",
"null"
],
"description": "Catalog ID of the deployment host, not a provider hostname or URL. Null means no deployment was recorded, including older usage, calls without a catalog deployment, and aggregated channel usage. Null does not indicate where inference ran."
},
"tier": {
"type": [
"string",
"null"
],
"description": "Sovereignty tier as a catalog ID. Clients must accept unknown values as tiers can be added. Null means no tier was recorded and does not indicate where inference ran. The API does not infer a tier from billing or other fields.",
"example": "eu-resident"
},
"funding": {
"type": "string",
"enum": [
"managed",
"customer",
"mixed"
],
"description": "Recorded funding for this spend group; omitted when provenance is unknown."
},
"credits": {
"type": "number",
"description": "Credits debited in the timeframe."
},
"usd": {
"type": "number",
"description": "Customer-billed USD for those credits."
},
"requests": {
"type": "number",
"description": "Number of provider calls recorded."
},
"input_tokens": {
"type": "number",
"description": "Input tokens."
},
"output_tokens": {
"type": "number",
"description": "Output tokens."
},
"cache_read_tokens": {
"type": "number",
"description": "Tokens read from the prompt cache."
},
"cache_creation_tokens": {
"type": "number",
"description": "Tokens written to the prompt cache."
}
},
"required": [
"host",
"tier",
"credits",
"usd",
"requests",
"input_tokens",
"output_tokens",
"cache_read_tokens",
"cache_creation_tokens"
]
},
"description": "The same spend cut by the deployment that served it. Ordered by spend descending, then by request count descending, then by host, then by tier; the row whose `host` and `tier` are both null is always last, because it is the absence of a record rather than a deployment. Additive: it neither replaces nor re-slices any other field. Omitted where the serving breakdown is not enabled; `models` is unchanged by it."
},
"scope": {
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"account"
]
},
"account_id": {
"type": "string",
"format": "uuid"
},
"project_id": {
"type": [
"string",
"null"
],
"format": "uuid"
}
},
"required": [
"kind",
"account_id",
"project_id"
]
},
"group_by": {
"type": "array",
"items": {
"type": "string",
"enum": [
"project",
"model",
"api_key",
"member"
]
}
}
},
"required": [
"summary",
"timeframe",
"series",
"projects",
"models"
]
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"403": {
"description": "Forbidden",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"500": {
"description": "Server error",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
},
"x-documentation-source-tag": "Account billing",
"x-canonical-documentation": {
"domain": "billing-usage",
"resource": "Usage",
"subgroup": "Usage",
"name": "Get credit usage",
"description": "Break the credit spend of an account down by day, project and model, optionally for one project; returns the series with token counts per model. Requires account.billing.read.",
"operationId": "getCreditUsage"
},
"x-mint": {
"href": "/cloud/rest/api-reference/billing-usage-usage-usage/get-credit-usage"
}
}