Get credit usage

http
GET /accounts/{account_id}/usage/credits

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.

Servers

json
[
  {
    "url": "https://api.veryfront.com"
  }
]

Authentication

json
[
  {
    "bearerAuth": []
  },
  {
    "apiKeyAuth": []
  }
]
json
{
  "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

NameLocationRequiredDescription
account_idpathYes
presetqueryNoWhole local days, defaulting to 30d. Explicit from/to bounds take precedence over preset, including SDK-supplied defaults.
fromqueryNoInclusive start. Supply both from and to; these bounds take precedence over preset.
toqueryNoExclusive end, no later than the end of today in timezone.
timezonequeryNo
granularityqueryNoUTC hours, or local calendar days, Monday-based weeks and months.
group_byqueryNoGrouping dimensions supported by this operation. Repeat the parameter or use a comma-separated list.
comparequeryNoCompare preceding calendar months for whole-month custom ranges, local days for whole-day ranges and presets, or equal elapsed duration otherwise.
project_referencequeryNoProject ID or slug that narrows the read to one project of the account. A project of another account is not found.

Parameter contracts

json
[
  {
    "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.

json
{
  "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

json
{
  "description": "Bad request",
  "content": {
    "application/problem+json": {
      "schema": {
        "$ref": "#/components/schemas/Problem"
      }
    }
  }
}

401

Unauthorized

json
{
  "description": "Unauthorized",
  "content": {
    "application/problem+json": {
      "schema": {
        "$ref": "#/components/schemas/Problem"
      }
    }
  }
}

403

Forbidden

json
{
  "description": "Forbidden",
  "content": {
    "application/problem+json": {
      "schema": {
        "$ref": "#/components/schemas/Problem"
      }
    }
  }
}

404

Not found

json
{
  "description": "Not found",
  "content": {
    "application/problem+json": {
      "schema": {
        "$ref": "#/components/schemas/Problem"
      }
    }
  }
}

500

Server error

json
{
  "description": "Server error",
  "content": {
    "application/problem+json": {
      "schema": {
        "$ref": "#/components/schemas/Problem"
      }
    }
  }
}

Referenced contracts

components/parameters/UsageQueryPreset

json
{
  "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

json
{
  "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

json
{
  "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

json
{
  "type": "string",
  "format": "date-time",
  "description": "Inclusive start. Supply both from and to; these bounds take precedence over preset."
}

components/parameters/UsageQueryTo

json
{
  "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

json
{
  "type": "string",
  "format": "date-time",
  "description": "Exclusive end, no later than the end of today in timezone."
}

components/parameters/UsageQueryTimezone

json
{
  "schema": {
    "$ref": "#/components/schemas/UsageQueryTimezone"
  },
  "required": false,
  "name": "timezone",
  "in": "query"
}

components/schemas/UsageQueryTimezone

json
{
  "type": "string",
  "default": "UTC"
}

components/parameters/UsageQueryGranularity

json
{
  "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

json
{
  "type": "string",
  "enum": [
    "hour",
    "day",
    "week",
    "month"
  ],
  "default": "day",
  "description": "UTC hours, or local calendar days, Monday-based weeks and months."
}

components/parameters/UsageQueryGroupBy

json
{
  "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

json
{
  "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

json
{
  "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

json
{
  "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

json
{
  "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

json
{
  "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"
  }
}