Usage API
List your team's finished API tasks and the credits each one used, for billing exports and cost reports.
To call this endpoint, use an API key of an active member of a Studio or Enterprise team. Any member can call it, not only owners and admins. With any other API key, the request returns 403.
List usage records
Returns one page of your team's usage records, newest first by default. Without start_time and end_time, the records cover the last 30 days. Calling this endpoint is free.
The records include these tasks:
- API tasks that finished as
SUCCEEDEDorFAILED - Tasks of every current member of the team, from any of their API keys
- Tasks you deleted, and tasks whose files have expired
The records leave out these tasks:
- Tasks that are still
PENDINGorIN_PROGRESS, andCANCELEDtasks - Tasks of people who have left the team
- Creative Lab tasks
- Tasks that Meshy's AI agents ran
- Work done in the Meshy web app
A task appears in the records only after it finishes, in the window of its created_at. Meshy charges credits when it creates a task, so a task that's still running is missing from the records. Before you reconcile the records with your credit balance, pull recent windows again, or export after a short delay.
If your team has a data retention period, the window starts no earlier than that period allows.
Request
curl "https://api.meshy.ai/openapi/v1/usage/tasks?page_size=50&start_time=2026-08-01T00:00:00Z&end_time=2026-09-01T00:00:00Z" \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Response
[
{
"task_id": "018a210d-8ba4-705c-b111-1f1776f7f578",
"endpoint": "image-to-3d",
"status": "SUCCEEDED",
"created_at": 1755787000000,
"finished_at": 1755787045000,
"consumed_credits": 20,
"api_key_name": "production",
"api_key_suffix": "a1b2",
"metadata": {
"user": "alex@example.com",
"team": "fab"
}
},
{
"task_id": "018a210d-1c22-7e0f-9d3a-4a5b6c7d8e9f",
"endpoint": "text-to-3d-refine",
"status": "FAILED",
"created_at": 1755786000000,
"finished_at": 1755786030000,
"consumed_credits": 0,
"api_key_name": "production",
"api_key_suffix": "a1b2",
"metadata": {}
}
]
Parameters
- Name
- page_num
- Type
- integer
- default 1
- Description
The page to return, from
1to255. A value above255returns400. One window holds at most 255 pages, so split a large export into shorter windows.
- Name
- page_size
- Type
- integer
- default 10
- Description
Number of records per page, from
1to100. A value from101to255returns 100 records, and a value above255returns400.
- Name
- sort_by
- Type
- string
- default -created_at
- Description
The sort order.
Available values:
+created_at: oldest first-created_at: newest first
In a URL, write
+as%2B. Otherwise the+is read as a space, and the request returns400.
- Name
- start_time
- Type
- string
- Description
The start of the window, as an RFC 3339 timestamp, for example
2026-08-01T00:00:00Z. The records include tasks created at or after this time. Leave it out to start the window 30 days beforeend_time.The window can span at most 366 days. A longer window returns
400, so split a longer export into several windows.
- Name
- end_time
- Type
- string
- Description
The end of the window, as an RFC 3339 timestamp. The records include tasks created before this time. Leave it out to end the window at the time of your request.
- Name
- endpoints
- Type
- string
- Description
A comma-separated list of the endpoints to include, by the same names as the
endpointfield. Leave it out to include every endpoint. An unknown name returns400.Available values:
text-to-3d: every Text to 3D task, preview and refinetext-to-3d-preview: preview tasks onlytext-to-3d-refine: refine tasks onlyimage-to-3dmulti-image-to-3dretextureremeshconvertresizeuv-unwrapriganimatetext-to-motiontext-to-imageimage-to-imageprint-multi-colorprint-repairprint-analyzeprint-split
- Name
- status
- Type
- string
- Description
The status to include,
SUCCEEDEDorFAILED. Leave it out to include both. Any other value returns400.
Returns
Returns an array of usage records. The array is empty when no records match.
Failure modes
- Name
400 - Bad Request- Description
A parameter is invalid, and the error message says which one. Fix the parameter, then send the request again.
- Name
401 - Unauthorized- Description
The API key is missing or invalid. Check the
Authorizationheader.
- Name
403 - Forbidden- Description
The API key's account isn't an active member of a Studio or Enterprise team. The message is
This endpoint is available on Studio and Enterprise plans. Use an API key of a Studio or Enterprise team member.
- Name
429 - Too Many Requests- Description
You sent too many requests. Wait the number of seconds in
Retry-After, then retry.
Usage record object
Example usage record object
{
"task_id": "018a210d-8ba4-705c-b111-1f1776f7f578",
"endpoint": "image-to-3d",
"status": "SUCCEEDED",
"created_at": 1755787000000,
"finished_at": 1755787045000,
"consumed_credits": 20,
"api_key_name": "production",
"api_key_suffix": "a1b2",
"metadata": {
"user": "alex@example.com",
"team": "fab"
}
}
- Name
- task_id
- Type
- string
- Description
The task ID, the same ID that the creating endpoint returned. To get the task itself, with its output URLs, send the ID to that endpoint's get route, for example
GET /openapi/v1/image-to-3d/{task_id}for animage-to-3drecord.
- Name
- endpoint
- Type
- string
- Description
The endpoint the task ran on, for example
image-to-3dorrig. A Text to 3D task shows its stage,text-to-3d-previewortext-to-3d-refine.Older records can have names of retired endpoints, which the
endpointsfilter doesn't accept.
- Name
- status
- Type
- string
- Description
The task's final status,
SUCCEEDEDorFAILED.
- Name
- created_at
- Type
- timestamp
- Description
Time the task was created, in Unix milliseconds.
- Name
- finished_at
- Type
- timestamp
- Description
Time the task finished, in Unix milliseconds.
nullif the task has no finish time.
- Name
- consumed_credits
- Type
- integer
- Description
Number of credits the task used, after refunds.
0for a failed task, because Meshy refunds it, and for a free task such as Analyze Printability.
- Name
- api_key_name
- Type
- string
- Description
The name of the API key that ran the task. For a task run with an app login, it's the app's name, for example
Meshy CLI.It's an empty string in some cases, for example:
- The task was never charged, such as an Analyze Printability task, which is free.
- The API key has been deleted.
- The API key was created in the last few minutes.
- Name
- api_key_suffix
- Type
- string
- Description
The last four characters of that API key, to tell keys with the same name apart. An empty string whenever
api_key_nameis empty, and for app logins such as the Meshy CLI.
- Name
- metadata
- Type
- object
- Description
The tags sent in the
X-Meshy-Metadataheader when the task was created.{}if none. See Metadata.