Endpoints
GET daily AI usage
This API is available on Enterprise plans. Querying it requires a plan access token, which only organization administrators can create.
The GET /v1/ai_usage/daily endpoint returns per-user, per-day AI credit usage for the plan associated with the calling token. Each row reports the seat-level and plan-level credits a user consumed on a given day for a given editor type.
This is a Tier 3 endpoint and requires the org:ai_metering_usage_read scope. This endpoint can only be used with a plan access token.
AI usage data is updated periodically and can lag real-time activity by up to 5–6 hours, so recent usage (including the current day) may be incomplete. The API can provide up to one year of usage.
HTTP Endpoint
GET /v1/ai_usage/daily
Return value
{
"rows": [
{
"plan_id": String,
"user_id": String,
"user_email": String,
"day": String,
"editor_type": String,
"seat_credits_sum": Number,
"plan_credits_sum": Number,
"workspace_id": String,
"workspace_name": String,
"team_id": String,
"team_name": String,
"license_group_id": String,
"license_group_name": String,
"metering_period_start": String,
"metering_period_end": String
},
...
],
"next_cursor": String,
"has_next_page": Boolean
}
| Query parameters | Description |
|---|---|
| start_date Required |
|
| end_date Required |
|
| user_email |
|
| limit |
|
| cursor |
|
| Response fields | Description |
|---|---|
| plan_id |
|
| user_id |
|
| user_email |
|
| day |
|
| editor_type |
|
| seat_credits_sum |
|
| plan_credits_sum |
|
| workspace_id |
|
| workspace_name |
|
| team_id |
|
| team_name |
|
| license_group_id |
|
| license_group_name |
|
| metering_period_start |
|
| metering_period_end |
|
| next_cursor |
|
| has_next_page |
|
| Error codes | Description |
|---|---|
| 400 | A query parameter was missing or malformed (for example, an invalid date, a start_date before 2025-12-01 or more than 366 days in the past, an end_date before the start_date, an end_date in the future, a range longer than 366 days, an out-of-range limit, or an invalid cursor). |
| 401 | The token is missing, invalid, or the plan is deleted or deactivated. |
| 403 | The token does not have the org:ai_metering_usage_read scope, or is a resource-restricted plan access token. |
Examples
-
Get all users' daily usage for May 2026:
curl -H 'X-Figma-Token: <TOKEN>' 'https://api.figma.com/v1/ai_usage/daily?start_date=2026-05-01&end_date=2026-05-31' -
Get a single user's daily usage for a date range:
curl -H 'X-Figma-Token: <TOKEN>' 'https://api.figma.com/v1/ai_usage/daily?start_date=2026-05-01&end_date=2026-05-31&user_email=jane@example.com'
Notes on the data
Keep the following in mind when interpreting the response:
- Row grain. Usage is aggregated by user ×
editor_type×day× workspace × team. Because workspace and team are part of the grain, a single user can produce multiple rows for the samedayandeditor_type(for example, when they used AI in more than one workspace or team that day). - Day boundaries are UTC. The
dayfield buckets usage by UTC calendar date, with boundaries at midnight (00:00:00Z). - Metering-period boundaries. When two metering periods fall on the same
day, all of that day's usage is attributed to the later metering period. As a result, the totals returned here may not exactly match the per-period usage shown in the admin dashboard in Figma. - Container names reflect the most recent value. When a workspace, team, or billing group is renamed during a
day, that day's rows use the most recent name. - Earliest available data. AI credit usage has only been collected since
2025-12-01, sostart_datemust be on or after this date; an earlier value returns a400. - Field availability. The
workspace_id,workspace_name,team_id,team_name, andlicense_group_namefields have only been populated since2026-05-29. Rows for earlier days returnnullfor these fields.
Limits
- Page size (
limit): between 1 and 1000 rows per request, inclusive. Defaults to 1000 when unspecified. A value below 1 or above 1000 returns a400. - Date range:
start_dateandend_dateare UTCYYYY-MM-DDcalendar dates.start_datemust be on or after2025-12-01(when collection began) and no more than 366 days before the current UTC day.end_datemust be on or afterstart_dateand no later than the current UTC day. The inclusive range may not exceed 366 days, so you cannot retrieve more than 366 days of data in a single request. Requests that violate any of these constraints return a400.
Pagination
The API sorts returned rows by day, then user, then editor_type. The maximum number of rows the endpoint can return at a time is 1000. You can set a lower value using the limit parameter.
If there are more rows than the limit, the API paginates the response. The JSON response sets has_next_page to true and returns a next_cursor value. To fetch the next page, pass that value back as the cursor query parameter, keeping the other parameters the same.
The cursor is an opaque bookmark tied to the exact query that produced it. When fetching subsequent pages, keep start_date, end_date, and user_email identical to the original request and change only the cursor. Changing any other parameter while paginating can cause rows to be duplicated or skipped.
curl -H 'X-Figma-Token: <TOKEN>' 'https://api.figma.com/v1/ai_usage/daily?start_date=2026-05-01&end_date=2026-05-31&cursor=<NEXT_CURSOR>'
When has_next_page is false, next_cursor is an empty string and there are no more rows to fetch.