Skip to main content
Salfio Docs

Search documentation

Type to search this documentation.

List organization users

GET/usersList organization users

Returns the authenticated organization's members. Creation and deletion of users are managed through the Salfio dashboard's invitation flow and are intentionally not exposed via the API.

Responses

200Users belonging to the caller's organization.application/json

Headers

X-RateLimit-Limit

The request cap for the tighter of the per-organization / per-endpoint windows that applied to this request.

X-RateLimit-Remaining

Requests remaining in the current window.

X-RateLimit-Reset

Unix timestamp (seconds) when the current window resets.

value
allOf · 2 options
Option 1objectEnvelope
datavaluerequired

The response payload — shape depends on the endpoint.

metaobjectrequired

Pagination metadata — populated on list endpoints, empty on single-resource endpoints.

Show child attributes
cursornull | string

Opaque cursor to pass to the next request.

hasMoreboolean | null

True when further pages of results are available.

Option 2object
dataarray of object
Show child attributes
Show array items

Organization user. Identity-bound fields (`email`) are readable but not writable via this API — identity is owned upstream. The spec mentions `phone`, but the current user model does not carry one — tracked as a follow-up.

createdAtstring · date-timerequired
emailstring · emailrequired

Read-only on this API surface.

firstNamestringrequired
idstring · uuidrequired
imageUrlnull | string · uri
lastNamestringrequired
updatedAtstring · date-timerequired
Example response
{
  "data": [
    {
      "createdAt": "2026-06-09T00:00:00Z",
      "email": "alice@acme.com",
      "firstName": "Alice",
      "id": "00000000-0000-0000-0000-000000000000",
      "imageUrl": "https://example.com",
      "lastName": "Morgan",
      "updatedAt": "2026-06-09T00:00:00Z"
    }
  ],
  "meta": {
    "cursor": "string",
    "hasMore": true
  }
}
401Missing or invalid bearer token. The message is intentionally opaque — do not rely on it to distinguish "missing" from "invalid".application/json
objectErrorEnvelope
errorobjectrequired
Show child attributes
codestringrequired

Machine-readable error category.

one of "unauthorized", "forbidden", "not_found", "invalid_argument", "conflict", "rate_limited", "internal_error", "not_implemented"

detailsobject

Optional per-code context (field names, retry windows, …).

messagestringrequired

Human-readable description — intended for operator logs, not end-user display.

Example response
{
  "error": {
    "code": "unauthorized",
    "message": "Authentication required"
  }
}
429Per-organization or per-endpoint rate limit exceeded.application/json

Headers

Retry-After

Seconds the client should wait before retrying.

objectErrorEnvelope
errorobjectrequired
Show child attributes
codestringrequired

Machine-readable error category.

one of "unauthorized", "forbidden", "not_found", "invalid_argument", "conflict", "rate_limited", "internal_error", "not_implemented"

detailsobject

Optional per-code context (field names, retry windows, …).

messagestringrequired

Human-readable description — intended for operator logs, not end-user display.

Example response
{
  "error": {
    "code": "rate_limited",
    "details": {
      "retry_after_seconds": 30
    },
    "message": "Rate limit exceeded"
  }
}

Documentation menu