Authentication
POST
/api/v1/auth/switch-org

Issue a new Bearer token bound to a different organization.

The caller must be an interactive user (not an API key) and must be an active member of the target organization. Role is re-derived from the new org's OrganizationMember row - switching orgs can legitimately change your role.

Authorization

AuthorizationBearer <token>

JWT access token. Use: Authorization: Bearer .

In: header

Header Parameters

Authorization?string|null
X-API-Key?string|null
X-EFFICIENTAI-API-KEY?string|null
X-Workspace-Id?string

Optional workspace scope. When omitted, the backend uses the active/default workspace from your organization context.

Formatuuid

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

curl -X POST "https://example.com/api/v1/auth/switch-org" \  -H "Content-Type: application/json" \  -d '{    "organization_id": "string"  }'
{  "access_token": "string",  "refresh_token": "string",  "token_type": "Bearer",  "expires_in": 0,  "user": {    "id": "string",    "email": "string",    "name": "string",    "first_name": "string",    "last_name": "string",    "organization_id": "string",    "role": "string",    "has_password": false,    "email_is_placeholder": false  }}

Community & contact

  1. Found a bug or have a feature request? Open a GitHub issue.
  2. Join our Discord for faster replies!