Skip to content

List workspaces

Viewing v1— superseded by v2

GET
/v1/workspaces
curl --request GET \
--url https://api.app.layer.ai/api/v1/workspaces \
--header 'Authorization: Bearer <token>'

v1 is superseded. v1 was superseded by v2 on 2026-08-26. A sunset date has not been announced yet; v1 will be deprecated as a whole before removal. Migrate with the v2 migration guide.

List all workspaces the authenticated user belongs to, with Creative Units balance details.

limit
Limit

Maximum number of results to return.

integer
default: 20 >= 1 <= 100

Maximum number of results to return.

cursor
Cursor

Cursor from a previous response to get the next page.

string
nullable

Cursor from a previous response to get the next page.

Successful Response

Media typeapplication/json
ListWorkspacesOutput
object
workspaces
required
Workspaces

All workspaces the authenticated user belongs to, ordered by most recently active first.

Array<object>
WorkspaceInfo
object
workspace_id
required
Workspace Id

The workspace’s unique identifier.

string format: uuid
slug
required
Slug

The workspace slug (its representation in the app URL).

string
name
required
Name

The workspace display name.

string
balance_creative_units
required
Balance Creative Units

Total Creative Units balance before reservations.

number
reserved_creative_units
required
Reserved Creative Units

Creative Units reserved by in-progress generations.

number
available_creative_units
required
Available Creative Units

Usable balance (balance minus reserved). Can be negative.

number
last_active_at
required
Last Active At

When the current user was last active in this workspace.

string format: date-time
nullable
pagination
required
PaginationOutput
object
next_cursor
Next Cursor

Cursor to use to get the next page

string
nullable
has_more_results
required
Has More Results

If there are more results to page through

boolean
total_count
Total Count

Total number of results matching the query

integer
nullable
Examplegenerated
{
"workspaces": [
{
"workspace_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"slug": "example",
"name": "example",
"balance_creative_units": 1,
"reserved_creative_units": 1,
"available_creative_units": 1,
"last_active_at": "2026-04-15T12:00:00Z"
}
],
"pagination": {
"next_cursor": "example",
"has_more_results": true,
"total_count": 1
}
}

Unauthenticated — missing or invalid Bearer token.

Media typeapplication/problem+json
object
type
required
string
title
required
string
status
required
integer
detail
required
string
Example
{
"type": "https://api.layer.ai/errors/ERROR_CODE",
"title": "Error Title",
"status": 400,
"detail": "Human-readable description."
}

Forbidden — insufficient permissions, or the access token lacks the scope the operation requires.

Media typeapplication/problem+json
object
type
required
string
title
required
string
status
required
integer
detail
required
string
Example
{
"type": "https://api.layer.ai/errors/ERROR_CODE",
"title": "Error Title",
"status": 400,
"detail": "Human-readable description."
}

Resource not found.

Media typeapplication/problem+json
object
type
required
string
title
required
string
status
required
integer
detail
required
string
Example
{
"type": "https://api.layer.ai/errors/ERROR_CODE",
"title": "Error Title",
"status": 400,
"detail": "Human-readable description."
}

The outcome of the request with this Idempotency-Key is not known yet: it is still running, or it failed without a stored response. Retry after the number of seconds in Retry-After.

Media typeapplication/problem+json
object
type
required
string
title
required
string
status
required
integer
detail
required
string
Example
{
"type": "https://api.layer.ai/errors/ERROR_CODE",
"title": "Error Title",
"status": 400,
"detail": "Human-readable description."
}

Invalid input parameters, or an Idempotency-Key reused for a different request.

Media typeapplication/problem+json
object
type
required
string
title
required
string
status
required
integer
detail
required
string
Example
{
"type": "https://api.layer.ai/errors/ERROR_CODE",
"title": "Error Title",
"status": 400,
"detail": "Human-readable description."
}

Rate limited — retry after the number of seconds in Retry-After.

Media typeapplication/problem+json
object
type
required
string
title
required
string
status
required
integer
detail
required
string
Example
{
"type": "https://api.layer.ai/errors/ERROR_CODE",
"title": "Error Title",
"status": 400,
"detail": "Human-readable description."
}

Internal server error.

Media typeapplication/problem+json
object
type
required
string
title
required
string
status
required
integer
detail
required
string
Example
{
"type": "https://api.layer.ai/errors/ERROR_CODE",
"title": "Error Title",
"status": 400,
"detail": "Human-readable description."
}