Management APIs / Members

Add a member

POSThttps://api.spice.ai/v1/members

Adds a new member to the organization with the specified roles.

Authorizations

  • AuthorizationstringRequired

    Bearer <token>. Authentication lists the tokens it accepts.

Header parameters

  • X-Org-Namestring

    The organization to act on, by handle. Omit it to act on the organization the credential is bound to; sending it blank is a 400, not the same as omitting it. A user credential may name any organization its owner belongs to; a machine credential is pinned to its own. A portal session token is bound to none, so it must send this header on every route but GET /v1/orgs (400 org_assertion_required otherwise).

    • Pattern: ^[A-Za-z0-9._-]{1,255}$

Body

application/jsonRequired

  • usernamestringRequired

    The username of the user to add

  • rolesarray of string

    Roles to assign to the new member

    • Default: ["member"]

Responses

201Member added successfullyapplication/json
  • user_idinteger

  • usernamestring

  • rolesarray of string

  • created_atstring (date-time)

400Invalid request body

401Unauthorized

403Insufficient scope, not an org admin/owner, or only owners can assign the admin or owner role

404User not found

409User is already a member of this organization

curl -X POST "https://api.spice.ai/v1/members" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "username": "string"
  }'
{
  "user_id": 0,
  "username": "string",
  "roles": [
    "string"
  ],
  "created_at": "2026-01-01T00:00:00Z"
}

application/json

POSThttps://api.spice.ai/v1/orgs/{orgId}/members

The org is orgId in the path. Adds a new member to the organization with the specified roles.

Authorizations

  • AuthorizationstringRequired

    Bearer <token>. Authentication lists the tokens it accepts.

Path parameters

  • orgIdintegerRequired

    The org id from GET /v1/orgs

    • Minimum: 1

Header parameters

  • X-Org-Namestring

    When present, X-Org-Name must name the same org as orgId. Otherwise the request returns org_path_mismatch (400).

    • Pattern: ^[A-Za-z0-9._-]{1,255}$

Body

application/jsonRequired

  • usernamestringRequired

    The username of the user to add

  • rolesarray of string

    Roles to assign to the new member

    • Default: ["member"]

Responses

201Member added successfullyapplication/json
  • user_idinteger

  • usernamestring

  • rolesarray of string

  • created_atstring (date-time)

400Bad Request

Invalid request body. orgId is not a valid org id (invalid_org_id), or X-Org-Name does not name that org (org_path_mismatch).

401Unauthorized

403Forbidden

Insufficient scope, not an org admin/owner, or only owners can assign the admin or owner role. The caller is not a member of the org (org_forbidden). A machine credential named a different org (org_assertion_mismatch). The org is deleted (org_deleted).

404User not found

409User is already a member of this organization

OpenAPIapi.spice.ai/openapi.json

curl -X POST "https://api.spice.ai/v1/orgs/<orgId>/members" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "username": "string"
  }'
{
  "user_id": 0,
  "username": "string",
  "roles": [
    "string"
  ],
  "created_at": "2026-01-01T00:00:00Z"
}

application/json