Users¶
Users are the property managers your application manages. Listings and accounts always belong to a user.
| Endpoint | Method | Scope | Token Tier | Description |
|---|---|---|---|---|
/api/v1/users/ |
GET | user:read |
Both | List all users (paginated) |
/api/v1/users/ |
POST | user:write |
App-level only | Create a new user |
/api/v1/users/<id>/ |
GET | user:read |
Both | Retrieve a user |
/api/v1/users/<id>/credentials/ |
GET | user:read |
Both | List credentials for a user |
/api/v1/users/<id>/ |
DELETE | user:write |
App-level only | Delete a user |
Try it out
Explore parameters, schemas, and live requests in the Swagger UI.
User Status¶
Every user resource includes a read-only status attribute describing its lifecycle state. It is derived from enabled-listing state and updates automatically as listings are enabled or disabled.
| Value | Meaning |
|---|---|
new |
Created, but no listings enabled yet. |
active |
Has at least one enabled listing. |
inactive |
Was active before; no listings currently enabled. |
List Users¶
Returns a paginated list of all users owned by the authenticated application.
Request¶
| Parameter | Description |
|---|---|
filter[email] |
Exact, case-insensitive match on the user's email. Email is unique, so this returns at most one user — use it to recover a user's id from an email. A non-owned email yields an empty list. |
sort |
created-at or -created-at (default: newest first). |
page[number], page[size] |
Standard pagination. Default page size 25, maximum 100. |
User-scoped tokens
When using a user-scoped token, this endpoint returns only the user the token is bound to.
Response¶
{
"data": [
{
"type": "users",
"id": "456",
"attributes": {
"first-name": "John",
"last-name": "Doe",
"email": "john@example.com",
"locale": "en-GB",
"created-at": "2026-05-20T18:03:11Z",
"status": "active"
}
}
],
"meta": {
"pagination": {"page": 1, "pages": 1, "count": 1}
}
}
| Field | Description |
|---|---|
first-name, last-name |
The user's name. |
email |
The user's email. Unique across Beyond. |
locale |
The user's locale as a BCP 47 language tag. |
created-at |
When the user was created. |
status |
Lifecycle state — see User Status. |
Retrieve a User¶
GET /api/v1/users/<id>/ returns a single user, with the same attributes as
the list entries above. 404 when the user is not owned by your application.
Create User¶
Create a new user managed by your application. Users created via this endpoint are managed by the OAuth2 application and cannot log in directly (password is randomly generated).
App-level token required
This endpoint requires an app-level token. Requests with a user-scoped token will receive 403 Forbidden.
Request¶
{
"data": {
"type": "users",
"attributes": {
"first-name": "John",
"last-name": "Doe",
"email": "john@example.com",
"locale": "en-GB"
}
}
}
| Field | Description |
|---|---|
first-name, last-name |
Required. |
email |
Required. Must be unique — an existing email is a 409 Conflict. |
locale |
Optional, defaults to en. A supported BCP 47 tag: en, en-GB, en-AU, en-CA, ja, fr, pt, de, es, or it. Used in messages that explain the reason for price changes. |
Returns 201 Created with the created user resource, including its id —
store it, every other user-scoped call needs it.
List User Credentials¶
Returns the login credentials that are visible for the requested user.
- App-level tokens can list all credentials for the user.
- User-scoped tokens default to the bound credential. Admin credentials can list all credentials for that user; non-admin credentials only see themselves.
- Each credential object has its own
id. Use thatcredential_idwhen requesting a user-scoped token that must enforce one credential's visibility and grants.
Response¶
{
"data": [
{
"type": "credentials",
"id": "789",
"attributes": {
"created-at": "2026-05-20T18:03:11Z",
"last-login": "2026-08-01T07:40:02Z",
"credential-type": "email",
"global-permissions": "Admin",
"email": "john@example.com"
}
}
],
"meta": {
"pagination": {"page": 1, "pages": 1, "count": 1}
}
}
| Field | Description |
|---|---|
created-at |
When the credential was created. |
last-login |
Last login with this credential; null if never used. |
credential-type |
How the credential authenticates (e.g. email). |
global-permissions |
The credential's permission level on the account. |
email |
The credential's login email; null for credential types without one. |
Delete User¶
Soft-delete a user managed by your application. This anonymizes the user's email, disables all enabled listings, removes managed accounts, and marks the user as deleted.
Returns 204 No Content on success.
App-level token required
This endpoint requires an app-level token. Requests with a user-scoped token will receive 403 Forbidden.
Use cases¶
- Onboarding. Create the user first, then add an account for them — the account sync imports their listings.
- Id recovery. Look up a user's
idwithfilter[email]instead of storing a separate mapping. - Offboarding. Delete the user when the property manager leaves your platform; their listings stop syncing and their accounts are removed.
Errors¶
| Status | Cause |
|---|---|
400 |
Malformed request body or missing required attribute on create. |
401 |
Missing or invalid bearer token. |
403 |
Token lacks the required scope, or a user-scoped token calling an app-level-only operation (create, delete). |
404 |
No user with that id is owned by your application. |
409 |
Create with an email that already exists. |
429 |
Rate limit exceeded. See Rate Limiting. |