Projects
Projects are the containers that group your designs. Use this API to list them or create new ones — useful when automating workspace setup or building multi-tenant integrations.
Each project returned includes its id (required for design creation) and its name.
List projects
Sample list request
curl -H "x-api-key: {YOUR-API-KEY}" https://api.abyssale.com/projectsList response
Returns an array of project objects.
| Field | Type | Description |
|---|---|---|
id | string (uuid) | Unique identifier of the project. |
name | string | Name of the project. |
created_at_ts | integer | Unix timestamp of when the project was created. |
List response example
[
{
"id": "9d00e9fe-9bd5-4471-acad-baa702a867e9",
"name": "Animation Tests",
"created_at_ts": 1654763057
},
{
"id": "bdf9ab44-f5fd-47ad-881d-a45906901233",
"name": "HTML5 Tests",
"created_at_ts": 1663767647
}
]Create project
Sample create request
curl -X POST \
-H "x-api-key: {YOUR-API-KEY}" \
-H "Content-Type: application/json" \
-d '{"name": "Summer Campaign 2024"}' \
https://api.abyssale.com/projectsRequest body
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Name of the project. Between 2 and 100 characters, and unique in the workspace. Surrounding whitespace is trimmed before storing — see below. |
Errors
| Status | id | errors[0].code | When |
|---|---|---|---|
400 | out_of_range | out_of_range | name shorter than 2 or longer than 100 characters. |
400 | missing_required | missing_required | name absent. |
400 | project_already_exists | — | A project of that name already exists in this workspace. |
name is the only field, so a validation failure produces a single problem and its code becomes the response id. invalid_payload appears only when a response carries more than one distinct problem code — see Errors. project_already_exists is not a field problem and carries no errors[].
Length is checked before trimming
Names are compared trimmed, so " Summer " collides with an existing "Summer". But the 2–100 length check runs on the value as sent — so " a " passes validation and is then stored as the single character a. Trim on your side if you want the length you validate to be the length you get.
{
"id": "out_of_range",
"message": "name: Length must be between 2 and 100.",
"errors": [
{ "path": "name", "code": "out_of_range", "message": "Length must be between 2 and 100." }
]
}Create response
Returns the created project object.
| Field | Type | Description |
|---|---|---|
id | string (uuid) | Unique identifier of the new project. |
name | string | Name of the project. |
created_at_ts | integer | Unix timestamp of when the project was created. |
Create response example
{
"id": "cb2c4add-4867-11f0-96f2-0a00d9eb8f78",
"name": "Summer Campaign 2024",
"created_at_ts": 1749827107
}Related
- Designs — list designs within a project
- Workspace Templates — duplicate templates into a project
- Authentication — required for all API requests
- Node.js SDK · Python SDK — every method, config, retries and the polling helpers
