List all workspace templates
Sample request
curl -X GET "https://api.abyssale.com/workspace-templates" \
-H "x-api-key: $ABYSSALE_API_KEY"import abyssale from '@abyssale/sdk';
const { data, error } = await abyssale.listWorkspaceTemplates();
if (error) console.error(error.id, error.message);
else console.log(data);from abyssale import Abyssale
with Abyssale() as client:
result = client.list_workspace_templates()
print(result)Example 200 response
[
{
"id": "64238d01-d402-474b-8c2d-fbc957e9d290",
"name": "Brand master",
"type": "static",
"created_at": 1649942114,
"updated_at": 1649942114,
"preview_url": "string",
"category_id": "1c7a9e35-0b62-4d18-8f4a-2e5c7b90d146",
"category_name": "Brand assets"
}
]Example 400 error response
{
"id": "invalid_payload",
"message": "malformed id category_id",
"errors": [
{
"path": "category_id",
"code": "invalid_payload",
"message": "malformed"
}
]
}Retrieve the organisation-level master designs shared across your workspace.
Behaviour, limits and caveats
A workspace template lives in a category (category_id), not a project — it belongs to the organisation until you duplicate it into a project with POST /workspace-templates/{companyTemplateId}/use. Designs, which do live in a project, are listed by GET /designs; the two listings never overlap.
Items have the same shape as a design, except the grouping fields are named category_id / category_name.
Query parameters
category_id string (uuid)
Unique identifier (UUID) of a workspace category. List the available ids with GET /workspace-template-categories. Categories are optional, so this filter only ever returns categorised templates — omit it to include those at the workspace root.
type string
Filter workspace templates by one of these types: static, animated, printer, printer_multipage. An unknown value is ignored and the full unfiltered list is returned — this never answers 400 (long-standing behavior existing integrations rely on). One of "static", "printer", "animated", "printer_multipage".
Response 200
The workspace's shared templates.
Errors
Every failure uses the shared error envelope — {id, message, errors?}. Branch on id, never on message. See Errors.
| Status | When |
|---|---|
400 | category_id is not a UUID. The only way this endpoint answers 400: an unknown type is ignored rather than rejected, so it never does. |
401 | Unauthorized — missing or invalid API key. |
429 | Too Many Requests. |
500 | Internal Server Error — an unexpected error occurred on our side. |
