Skip to content

Provisioning API · Internal testing only

listPersonas

GET
/personas
curl --request GET \
--url 'https://api.builders.ac/api/provisioning/v1alpha1/personas?limit=20&order=created_at.asc' \
--header 'Authorization: Bearer <token>'
limit
integer
default: 20 >= 1 <= 100
starting_after
string
>= 1 characters <= 2048 characters

Opaque cursor returned as next_cursor by a previous Persona page for the same Account, order, and filters.

order
string
default: created_at.desc
Allowed values: created_at.asc created_at.desc

Creation-time order with ID as the tie-breaker. Legacy rows with null created_at always sort last.

workspace_id
Array<string>
>= 1 items <= 100 items

One to 100 comma-separated, case-insensitive Workspace TypeIDs. Omit to span every accessible workspace.

external_customer_id
string
>= 1 characters <= 255 characters /^[^\u0000]+$/

Exact UTF-8 end-customer reference; U+0000 is rejected.

external_id
string
>= 1 characters <= 255 characters /^[^\u0000]+$/

Exact, case-sensitive UTF-8 partner identifier; U+0000 is rejected.

search
string
>= 1 characters <= 255 characters /^[^\u0000]+$/

Case-insensitive literal UTF-8 substring search over first name, last name, and full name; U+0000 is rejected.

created[gte]
string format: date-time
/^(?!0000)\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d{1,6})?(?:Z|\+00:00)(?![\s\S])/

Inclusive ISO-8601 UTC lower bound (Z or +00:00).

created[lte]
string format: date-time
/^(?!0000)\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d{1,6})?(?:Z|\+00:00)(?![\s\S])/

Inclusive ISO-8601 UTC upper bound (Z or +00:00); must not precede created[gte].

Persona page

Media typeapplication/json
object
data
required
Array<object>
object
id
required

Canonical lowercase TypeID. Legacy Personas can encode UUIDv4; new Personas created through this API encode UUIDv7.

string
>= 30 characters <= 30 characters /^per_[0-7][0-9a-hjkmnp-tv-z]{25}$/
object
required
Allowed value: persona
workspace_id
required
string
>= 30 characters <= 30 characters /^wsp_[0-7][0-9a-hjkmnp-tv-z]{25}$/
first_name
required

New API writes are non-blank; a legacy row can contain an empty value.

string
<= 255 characters
last_name
required

New API writes are non-blank; a legacy row can contain an empty value.

string
<= 255 characters
external_id
required

Opaque and case-sensitive; unique per owning Account within the Persona resource type.

string | null
>= 1 characters <= 255 characters
created_at
required

Null only for legacy rows; new API-created Personas always carry a timestamp.

string | null format: date-time
updated_at
required

Null only for legacy rows; new API-created Personas always carry a timestamp.

string | null format: date-time
has_more
required
boolean
next_cursor
required
string | null
Example
{
"data": [
{
"id": "per_01k5n7qd2vb8ye4ka3mzt9rf6x",
"object": "persona",
"workspace_id": "wsp_01k5n2rf8bd3xa9e7m4jt6vq5h",
"first_name": "Ava",
"last_name": "Stone",
"external_id": "crm-8421",
"created_at": "2026-04-15T09:15:04Z",
"updated_at": "2026-04-16T11:02:37Z"
}
],
"has_more": true,
"next_cursor": "eyJjcmVhdGVkX2F0IjoiMjAyNi0wNC0xNVQwOToxNTowNFoiLCJpZCI6ImluYl8wMWs1bmM5dGU0dnI3YmQyaHE4eW0zeHo2YSJ9"
}
x-correlation-id
string

The id of this request, echoed on every response and repeated in the correlation_id member of a problem body. Quote it in support requests.

Authentication required. The example shows authentication_required; this status is also answered with invalid_api_key. Branch on code, not on the status.

Media typeapplication/problem+json
object
type
required
string format: uri-reference
title
required
string
status
required
integer
detail
required
string
code
required

Extensible enum. Branch on this, never on title. New codes may appear at any time, so treat an unrecognised one as its HTTP status; GET /problems lists every code this version can answer with, and GET /problems/{code} resolves one.

string
retryable
required
boolean
retry_after
string format: date-time
correlation_id
required
string
errors
object
key
additional properties
Array<string>
Example
{
"type": "https://api.builders.ac/api/provisioning/v1alpha1/problems/authentication_required",
"title": "Authentication required",
"status": 401,
"detail": "Provide an active Provisioning API Key as a Bearer token.",
"code": "authentication_required",
"retryable": false,
"correlation_id": "9f1c2b7a-3d5e-4c81-9a77-2f6b0e4d51c3"
}
x-correlation-id
string

The id of this request, echoed on every response and repeated in the correlation_id member of a problem body. Quote it in support requests.

Account inactive. The example shows account_inactive; this status is also answered with insufficient_proof. Branch on code, not on the status.

Media typeapplication/problem+json
object
type
required
string format: uri-reference
title
required
string
status
required
integer
detail
required
string
code
required

Extensible enum. Branch on this, never on title. New codes may appear at any time, so treat an unrecognised one as its HTTP status; GET /problems lists every code this version can answer with, and GET /problems/{code} resolves one.

string
retryable
required
boolean
retry_after
string format: date-time
correlation_id
required
string
errors
object
key
additional properties
Array<string>
Example
{
"type": "https://api.builders.ac/api/provisioning/v1alpha1/problems/account_inactive",
"title": "Account inactive",
"status": 403,
"detail": "This account is inactive.",
"code": "account_inactive",
"retryable": false,
"correlation_id": "9f1c2b7a-3d5e-4c81-9a77-2f6b0e4d51c3"
}
x-correlation-id
string

The id of this request, echoed on every response and repeated in the correlation_id member of a problem body. Quote it in support requests.

Validation failed. The example shows validation_error; this status is also answered with idempotency_mismatch, invalid_sealed_value, mailbox_upload_unavailable, provider_credentials_invalid, domains_not_bound, sequencer_targets_mixed. Branch on code, not on the status.

Media typeapplication/problem+json
object
type
required
string format: uri-reference
title
required
string
status
required
integer
detail
required
string
code
required

Extensible enum. Branch on this, never on title. New codes may appear at any time, so treat an unrecognised one as its HTTP status; GET /problems lists every code this version can answer with, and GET /problems/{code} resolves one.

string
retryable
required
boolean
retry_after
string format: date-time
correlation_id
required
string
errors
object
key
additional properties
Array<string>
Example
{
"type": "https://api.builders.ac/api/provisioning/v1alpha1/problems/validation_error",
"title": "Validation failed",
"status": 422,
"detail": "One or more request fields are invalid.",
"code": "validation_error",
"retryable": false,
"correlation_id": "9f1c2b7a-3d5e-4c81-9a77-2f6b0e4d51c3",
"errors": {
"display_name": [
"The display name must not be blank."
]
}
}
x-correlation-id
string

The id of this request, echoed on every response and repeated in the correlation_id member of a problem body. Quote it in support requests.

Rate limit exceeded. The example shows rate_limit_exceeded.

Media typeapplication/problem+json
object
type
required
string format: uri-reference
title
required
string
status
required
integer
detail
required
string
code
required

Extensible enum. Branch on this, never on title. New codes may appear at any time, so treat an unrecognised one as its HTTP status; GET /problems lists every code this version can answer with, and GET /problems/{code} resolves one.

string
retryable
required
boolean
retry_after
string format: date-time
correlation_id
required
string
errors
object
key
additional properties
Array<string>
Example
{
"type": "https://api.builders.ac/api/provisioning/v1alpha1/problems/rate_limit_exceeded",
"title": "Rate limit exceeded",
"status": 429,
"detail": "Too many requests were made for this policy.",
"code": "rate_limit_exceeded",
"retryable": true,
"correlation_id": "9f1c2b7a-3d5e-4c81-9a77-2f6b0e4d51c3",
"retry_after": "2026-04-15T09:16:04Z"
}
x-correlation-id
string

The id of this request, echoed on every response and repeated in the correlation_id member of a problem body. Quote it in support requests.

Service unavailable. The example shows service_unavailable; this status is also answered with encryption_keys_unavailable, provider_unreachable. Branch on code, not on the status.

Media typeapplication/problem+json
object
type
required
string format: uri-reference
title
required
string
status
required
integer
detail
required
string
code
required

Extensible enum. Branch on this, never on title. New codes may appear at any time, so treat an unrecognised one as its HTTP status; GET /problems lists every code this version can answer with, and GET /problems/{code} resolves one.

string
retryable
required
boolean
retry_after
string format: date-time
correlation_id
required
string
errors
object
key
additional properties
Array<string>
Example
{
"type": "https://api.builders.ac/api/provisioning/v1alpha1/problems/service_unavailable",
"title": "Service unavailable",
"status": 503,
"detail": "Retry the request later; the service is temporarily unavailable.",
"code": "service_unavailable",
"retryable": true,
"correlation_id": "9f1c2b7a-3d5e-4c81-9a77-2f6b0e4d51c3"
}
x-correlation-id
string

The id of this request, echoed on every response and repeated in the correlation_id member of a problem body. Quote it in support requests.