Create a project
Sample request
curl -X POST "https://api.abyssale.com/projects" \
-H "x-api-key: $ABYSSALE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Summer Campaign 2024"
}'import abyssale from '@abyssale/sdk';
const { data, error } = await abyssale.createProject({
"name": "Summer Campaign 2024"
});
if (error) console.error(error.id, error.message);
else console.log(data);from abyssale import Abyssale
with Abyssale() as client:
result = client.create_project({
"name": "Summer Campaign 2024"
})
print(result)Example request body
{
"name": "Summer Campaign 2024"
}Example 200 response
{
"version": "v2026-08-21",
"id": "d59adee9-4867-11f0-96f2-0a00d9eb8f78",
"name": "HTML5 Tests",
"created_at_ts": 1749827125,
"category_name": "HTML5 Tests"
}Example 400 error response
{
"id": "project_already_exists",
"message": "Project already exists with the same name"
}Create a new project to organize your designs. Assign designs to this project in the Abyssale editor to make them accessible via the API.
Request body
name string required
Name of the project Length 2–100 characters.
Response 200
Project created successfully
version string
The API version that produced this response, named by release date (vYYYY-MM-DD). Pattern ^v\d{4}-\d{2}-\d{2}$.
More about version
The API version that produced this response, named by release date (vYYYY-MM-DD). Stamped as a top-level field on JSON object bodies, success and error alike, so a client can always tell which contract answered. There is no version-selection parameter — a single version is maintained at a time.
Two kinds of body are not stamped. Array bodies (the listings) carry no envelope. And a body that already has a version key of its own is left alone — which in practice means Banner, whose version is the generated file's integer counter. So GET /banners/{bannerId} and the synchronous generate are the two responses that do not tell you which contract answered.
The value changes when a new version is released. Match the vYYYY-MM-DD shape rather than pinning today's literal, or your client breaks on the next release.
id string (uuid) always
Unique identifier of the project
name string always
Name of the project
created_at_ts integer always
Unix timestamp when the project was created
category_name string | null
Deprecated. Deprecated alias of name — the same string, under the old noun. It does not describe a category the project belongs to: a project has no parent category. Returned by the GET /projects listing only; the POST /projects read-back omits it. Read name.
Errors
Every failure uses the shared error envelope — {id, message, errors?}. Branch on id, never on message. See Errors.
| Status | When |
|---|---|
400 | Bad Request — name is missing, outside 2–100 characters, or already taken (project_already_exists). |
401 | Unauthorized — missing or invalid API key. |
429 | Too Many Requests. |
500 | Internal Server Error — an unexpected error occurred on our side. |
