GET /accounts/{account_id}/usage/seriesChart one usage metric of an account by day, optionally for one project; returns the daily series with a total and a per-project breakdown. 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",
"enum": [
"credits",
"storage",
"bandwidth",
"api_calls"
],
"description": "Usage metric represented by this series."
},
"required": true,
"description": "Usage metric to chart.",
"name": "metric",
"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
Daily series of one usage metric of the account, optionally for one project.
{
"description": "Daily series of one usage metric of the account, optionally for one project.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"metric": {
"type": "string",
"enum": [
"credits",
"storage",
"bandwidth",
"api_calls"
],
"description": "Usage metric represented by this series."
},
"label": {
"type": "string",
"description": "Human-readable metric label."
},
"unit": {
"type": "string",
"description": "Unit used by values, such as credits, calls, or bytes."
},
"summary": {
"type": "object",
"properties": {
"value": {
"type": "number"
},
"previous": {
"type": "object",
"properties": {
"value": {
"type": "number"
}
},
"required": [
"value"
]
}
},
"required": [
"value"
]
},
"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."
},
"value": {
"type": "number",
"description": "Usage value 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."
},
"value": {
"type": "number",
"description": "Usage value for this project."
}
},
"required": [
"project_id",
"project_name",
"project_slug",
"value"
]
}
},
"groups": {
"type": "array",
"items": {
"type": "object",
"properties": {
"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."
}
}
},
"value": {
"type": "number"
}
},
"required": [
"dimensions",
"value"
]
}
}
},
"required": [
"bucket_start",
"value",
"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."
},
"value": {
"type": "number",
"description": "Usage value for this project."
}
},
"required": [
"project_id",
"project_name",
"project_slug",
"value"
]
}
},
"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": [
"metric",
"label",
"unit",
"summary",
"timeframe",
"series",
"projects"
]
}
}
}
}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": "getUsageSeries",
"tags": [
"billing-usage/Usage/Usage"
],
"summary": "Get usage series",
"description": "Chart one usage metric of an account by day, optionally for one project; returns the daily series with a total and a per-project breakdown. 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",
"enum": [
"credits",
"storage",
"bandwidth",
"api_calls"
],
"description": "Usage metric represented by this series."
},
"required": true,
"description": "Usage metric to chart.",
"name": "metric",
"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": {
"description": "Daily series of one usage metric of the account, optionally for one project.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"metric": {
"type": "string",
"enum": [
"credits",
"storage",
"bandwidth",
"api_calls"
],
"description": "Usage metric represented by this series."
},
"label": {
"type": "string",
"description": "Human-readable metric label."
},
"unit": {
"type": "string",
"description": "Unit used by values, such as credits, calls, or bytes."
},
"summary": {
"type": "object",
"properties": {
"value": {
"type": "number"
},
"previous": {
"type": "object",
"properties": {
"value": {
"type": "number"
}
},
"required": [
"value"
]
}
},
"required": [
"value"
]
},
"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."
},
"value": {
"type": "number",
"description": "Usage value 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."
},
"value": {
"type": "number",
"description": "Usage value for this project."
}
},
"required": [
"project_id",
"project_name",
"project_slug",
"value"
]
}
},
"groups": {
"type": "array",
"items": {
"type": "object",
"properties": {
"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."
}
}
},
"value": {
"type": "number"
}
},
"required": [
"dimensions",
"value"
]
}
}
},
"required": [
"bucket_start",
"value",
"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."
},
"value": {
"type": "number",
"description": "Usage value for this project."
}
},
"required": [
"project_id",
"project_name",
"project_slug",
"value"
]
}
},
"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": [
"metric",
"label",
"unit",
"summary",
"timeframe",
"series",
"projects"
]
}
}
}
},
"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 usage series",
"description": "Chart one usage metric of an account by day, optionally for one project; returns the daily series with a total and a per-project breakdown. Requires account.billing.read.",
"operationId": "getUsageSeries"
},
"x-mint": {
"href": "/cloud/rest/api-reference/billing-usage-usage-usage/get-usage-series"
}
}