List projects
GET /api/projects
List the account's editor draft projects. The full project JSON is not included — fetch a project by ID for that.
Authentication
- Option 1:
x-api-key: YOUR_API_KEY(header). API key for authentication. Create one in your dashboard. - Option 2:
Authorization: Bearer YOUR_ACCESS_TOKEN. Dashboard JWT in Authorization: Bearer <token>, only on operations that explicitly list this scheme. Prefer x-api-key for REST integrations. OAuth for hosted MCP is a separate connection at https://mcp.zvid.io/mcp.
Create API keys at app.zvid.io/api-keys. Keep credentials on your server.
Parameters
| Parameter | Location | Type | Required | Description and constraints |
|---|---|---|---|---|
page | query | integer | No | Default: 1. Minimum: 1. |
limit | query | integer | No | Default: 20. Minimum: 1. Maximum: 100. |
Request
The shell examples read credentials from ZVID_API_KEY (or ZVID_ACCESS_TOKEN for Bearer authentication). Set that variable in your environment. Replace sample project, template, job, and asset identifiers with values from your own account.
This operation does not take a request body.
Request example
curl --request GET 'https://api.zvid.io/api/projects' \
--header "x-api-key: $ZVID_API_KEY"
Responses
HTTP 200
Projects for the authenticated account
Content type: application/json.
Required properties: projects, pagination.
| Field | Type | Required | Description and constraints |
|---|---|---|---|
response.projects | array of ProjectSummary | Yes | |
response.pagination | Pagination | Yes |
Nested field: response.projects
Array item: response.projects[]
Schema: ProjectSummary.
Example response
{
"projects": [
{
"id": "prj_PkHw73Ul4qBgr3HJRx9t",
"userId": 5,
"name": "promo-draft",
"type": "video",
"version": 2,
"createdAt": "2026-07-04T13:56:27.000Z",
"updatedAt": "2026-07-04T14:23:33.000Z"
}
],
"pagination": {
"page": 1,
"limit": 20,
"total": 1,
"totalPages": 1
}
}
HTTP 401
Unauthorized
Content type: application/json.
Unknown properties are rejected. Required properties: error.
| Field | Type | Required | Description and constraints |
|---|---|---|---|
response.error | string | Yes | Error type |
response.message | string | No | Human-readable error message |
Schema definitions
The following definitions describe the fields referenced above. Expand a definition to inspect its complete contract.
ProjectList
Required properties: projects, pagination.
| Field | Type | Required | Description and constraints |
|---|---|---|---|
ProjectList.projects | array of ProjectSummary | Yes | |
ProjectList.pagination | Pagination | Yes |
Nested field: ProjectList.projects
Array item: ProjectList.projects[]
Schema: ProjectSummary.
ProjectSummary
One project as returned by the project list endpoint (no project JSON — fetch the project by ID for that).
Required properties: id, name, type, version.
| Field | Type | Required | Description and constraints |
|---|---|---|---|
ProjectSummary.id | string | Yes | |
ProjectSummary.userId | integer | No | |
ProjectSummary.name | string | Yes | |
ProjectSummary.type | "video" / "image" | Yes | |
ProjectSummary.version | integer | Yes | |
ProjectSummary.createdAt | string | No | Format: date-time. |
ProjectSummary.updatedAt | string | No | Format: date-time. |
Pagination
Standard pagination envelope for list endpoints.
Required properties: page, limit, total, totalPages.
| Field | Type | Required | Description and constraints |
|---|---|---|---|
Pagination.page | integer | Yes | |
Pagination.limit | integer | Yes | |
Pagination.total | integer | Yes | |
Pagination.totalPages | integer | Yes | |
Pagination.hasNext | boolean | No | Whether there are more pages after the current one |
Pagination.hasPrev | boolean | No | Whether there are pages before the current one |
AuthenticationError
Unknown properties are rejected. Required properties: error.
| Field | Type | Required | Description and constraints |
|---|---|---|---|
AuthenticationError.error | string | Yes | Error type |
AuthenticationError.message | string | No | Human-readable error message |