Skip to main content
Languages: every operation supports cURL, Node.js (TypeScript), Python, Go, Ruby, and PHP. The first 15 operations on this page show all six languages; the remaining 30 show cURL and TypeScript — the two most-used.

Organization API

Organization endpoints exposed by the Devotel CPaaS API Base path: /api/v1 Endpoint count: 45

Get the current organization

GET /api/v1/organization
Return the authenticated organization’s full profile: name, slug, plan, wallet balance, team-member and per-second rate limits, logo, branding, general settings, the resolved billing currency, and whether it is a subaccount. This is the record the dashboard shell and Settings → General load on every page.
string (enum: true|false)
Sandbox opt-in for Clerk-session-authenticated requests. Set to true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.

Get account-trust status

GET /api/v1/organization/account-status
Return a transparent, self-serve answer to “why is my account restricted and how do I fix it?”: an overall state plus a list of restrictions, each with a stable reason code, plain-language explanation, concrete remediation steps, and an appeal channel. Derived from the org’s existing restriction facts — it adds no new state.
string (enum: true|false)
Sandbox opt-in for Clerk-session-authenticated requests. Set to true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.

List organization API keys (SDK alias)

GET /api/v1/organization/api-keys
Backward-compatible alias of GET /settings/api-keys for the public SDK organization.apiKeys.list() — every API key on the organization, newest first (label, public prefix, last-four, type, state, expiry, scopes and minting role). Key plaintext is never returned — it is shown once, at create / rotate time. Owner, admin or developer.
string (enum: true|false)
Sandbox opt-in for Clerk-session-authenticated requests. Set to true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.

Get organization branding

GET /api/v1/organization/branding
Return the organization’s white-label branding record — logo and logomark URLs, primary and accent colours, dashboard name, support email, custom domain, favicon, legal links, and help-centre theming. Unset keys are returned as null so callers always receive the full shape. Requires the owner or admin role.
string (enum: true|false)
Sandbox opt-in for Clerk-session-authenticated requests. Set to true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.

Get default business hours

GET /api/v1/organization/business-hours
Return the organization-wide default business-hours and holiday-calendar schedule that cascades to any ACD queue, inbound route, or auto-attendant that has not configured its own. Returns null fields (not a 404) when no org default has been set yet.
string (enum: true|false)
Sandbox opt-in for Clerk-session-authenticated requests. Set to true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.

List custom domains

GET /api/v1/organization/domains
List the vanity / custom domains registered for the organization’s white-label dashboard, each with its verification status, CNAME target, SSL provisioning state, and any last error. Cursor-paginated via the cursor / limit query params. Requires the owner or admin role.
string (enum: true|false)
Sandbox opt-in for Clerk-session-authenticated requests. Set to true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.

List pending organization invites (SDK alias)

GET /api/v1/organization/invites
Backward-compatible alias of GET /settings/team/invites for the public SDK organization.invites.list() — every outstanding (unaccepted, unrevoked) team invitation on the organization, oldest first.
string (enum: true|false)
Sandbox opt-in for Clerk-session-authenticated requests. Set to true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.

Get KYB business-screening status

GET /api/v1/organization/kyb/status
Return the organization’s KYB / AML business-screening verdict for the signing entity — the legal name, country of incorporation, and declared beneficial owners run against the sanctioned-country denylist and the denied-parties watchlist. The verdict (clear / review) is a signal a super-admin reviews; it never auto-approves and never blocks sending.
string (enum: true|false)
Sandbox opt-in for Clerk-session-authenticated requests. Set to true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.

Get KYC verification status (legacy alias)

GET /api/v1/organization/kyc
Deprecated backward-compatible alias of GET /organization/kyc/status for pre-2026-06-09 SDK builds and hand-rolled integrations that read KYC state from the bare /organization/kyc path. Returns the same current KYC verification state; new integrations should call /organization/kyc/status instead.
string (enum: true|false)
Sandbox opt-in for Clerk-session-authenticated requests. Set to true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.

Get eKYC identity-verification status

GET /api/v1/organization/kyc/idv/status
Return the organization’s current eKYC identity-verification state, reconciling any still-open session against the provider’s latest verdict. Also reports whether an IDV provider is configured for the platform, so the dashboard can hide the step when verification is unavailable.
string (enum: true|false)
Sandbox opt-in for Clerk-session-authenticated requests. Set to true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.

Get KYC verification status

GET /api/v1/organization/kyc/status
Return the organization’s current KYC verification state (not_started, pending_review, approved, or rejected). Once a submission exists it also echoes the submitted company name, country, industry, and the submitted / reviewed timestamps so the dashboard can render the verification banner accurately.
string (enum: true|false)
Sandbox opt-in for Clerk-session-authenticated requests. Set to true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.

Get curated LLM provider slice

GET /api/v1/organization/llm-provider
Return the curated LLM provider catalog (Devotel free base + Anthropic premium tiers), the org’s recorded provider selection, and the resolved provider. Non-curated catalog rows (evaluation / rejected) are exposed for audit but are never selectable — evaluation FIRST, then resale integration. Step 1 of the native multi-LLM program: recording a selection changes no in-flight routing yet. Requires the owner or admin role.
string (enum: true|false)
Sandbox opt-in for Clerk-session-authenticated requests. Set to true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.

Resolve the org’s curated LLM provider

GET /api/v1/organization/llm-provider/resolve
Resolve the caller org’s curated LLM provider — the org’s recorded selection when valid (and curated), otherwise the platform default. Redundant with the slice GET but is the SDK-facing gate the later-step integrations (step 2 inference routing, step 3 metering) query without the full catalog payload. Requires the owner or admin role.
string (enum: true|false)
Sandbox opt-in for Clerk-session-authenticated requests. Set to true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.

List organization members (SDK alias)

GET /api/v1/organization/members
Backward-compatible alias of GET /settings/team for the public SDK organization.members.list() — one page of the organization’s team roster (each member’s id, email, name, role and last-active time), with meta.pagination alongside request_id. Page with ?page= and ?pageSize= (default 25, maximum 200).
string (enum: true|false)
Sandbox opt-in for Clerk-session-authenticated requests. Set to true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.

Get reseller mode slice

GET /api/v1/organization/reseller
Return the organization’s reseller-mode slice: the capability flag, whether the caller is itself a subaccount, the effective reseller org its traffic resolves against, and the parent-scoped BYO provider registry (masked credentials). Subaccounts always receive an empty provider list — provider configuration is the reseller parent’s own surface. Requires the owner or admin role.
string (enum: true|false)
Sandbox opt-in for Clerk-session-authenticated requests. Set to true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.

Resolve reseller provider

GET /api/v1/organization/reseller/resolve/{providerType}
Resolve one provider type for the caller against its reseller parent (or itself when it is the reseller org). Returns byo with the matched connection when the parent has an active configuration, otherwise `devotel_default — existing behavior. Requires the owner or admin role.
string
required
string (enum: true|false)
Sandbox opt-in for Clerk-session-authenticated requests. Set to true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.

Resolve a custom domain’s presentational branding

GET /api/v1/public/branding
Resolves a white-label custom domain to the organization that owns it and returns its effective branding (logo, logomark, favicon, primary/accent colours, dashboard name). Only presentational fields — no ids, provenance, or contact details. Unauthenticated + rate-limited because the pre-auth login/signup screens on the custom domain render this publicly anyway. A host that is not a registered, active custom domain returns 404.

Resolve a custom domain to its organization

GET /api/v1/public/resolve-domain
Resolves a white-label custom domain to the organization and tenant that own it. Pass the fully-qualified host (for example app.acme.com) as the required host query parameter and the endpoint returns the matching organization_id and tenant_id. Unauthenticated, rate-limited, and edge-cached — the dashboard edge middleware calls it on every request whose Host header is a customer’s own domain so it can load the right workspace. A host that is not a registered, active custom domain returns 404.

Resolve an organization to its branded domain

GET /api/v1/public/resolve-org-domain
Resolves a white-label organization id to the organization’s ACTIVE branded custom domain (for example app.acme.com). Used by the primary sign-in page, right after auth completes, to send a subaccount user HOME to their branded origin through Clerk’s satellite handshake instead of parking them on the platform domain. Unauthenticated, rate-limited, and edge-cached. An organization with no active custom domain returns 404.

List federation

GET /api/v1/users/me/presence/federation
string (enum: true|false)
Sandbox opt-in for Clerk-session-authenticated requests. Set to true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.

List schedule

GET /api/v1/users/me/presence/schedule
string (enum: true|false)
Sandbox opt-in for Clerk-session-authenticated requests. Set to true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.

List presence

GET /api/v1/users/presence
string (enum: true|false)
Sandbox opt-in for Clerk-session-authenticated requests. Set to true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.

Create an API key (SDK alias)

POST /api/v1/organization/api-keys
Backward-compatible alias of POST /settings/api-keys for the public SDK organization.apiKeys.create(...) — mints a new key; its plaintext is returned ONCE in this response. Store it now. Owner, admin or developer.
string
Stripe-style idempotency token. Pass a stable, client-generated value (1-255 chars) to dedupe retries on transient timeouts. The same key+credential+path replays the original response for 24h on 2xx (5min on 4xx, 30s on 5xx). Returns 409 if a concurrent request with the same key is already in flight; replayed responses include the Idempotency-Replay: true response header.
string (enum: true|false)
Sandbox opt-in for Clerk-session-authenticated requests. Set to true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.

Rotate an API key (SDK alias)

POST /api/v1/organization/api-keys/{id}/rotate
Backward-compatible alias of POST /settings/api-keys/:id/rotate for the public SDK organization.apiKeys.rotate(id) — mints a replacement and retires the old key (default 24h grace window; mode: "immediate" revokes in the same request). The new key’s plaintext is returned once. Owner, admin or developer.
string
required
Resource identifier
string
Stripe-style idempotency token. Pass a stable, client-generated value (1-255 chars) to dedupe retries on transient timeouts. The same key+credential+path replays the original response for 24h on 2xx (5min on 4xx, 30s on 5xx). Returns 409 if a concurrent request with the same key is already in flight; replayed responses include the Idempotency-Replay: true response header.
string (enum: true|false)
Sandbox opt-in for Clerk-session-authenticated requests. Set to true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.

Reset organization branding

POST /api/v1/organization/branding/reset
Clear the organization’s branding overrides and return every field to the platform default (or the parent’s inherited branding for a subaccount). Idempotent and audit-logged. Returns the reset branding record. Requires the owner or admin role.
string
Stripe-style idempotency token. Pass a stable, client-generated value (1-255 chars) to dedupe retries on transient timeouts. The same key+credential+path replays the original response for 24h on 2xx (5min on 4xx, 30s on 5xx). Returns 409 if a concurrent request with the same key is already in flight; replayed responses include the Idempotency-Replay: true response header.
string (enum: true|false)
Sandbox opt-in for Clerk-session-authenticated requests. Set to true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.

Add a custom domain

POST /api/v1/organization/domains
Register a vanity / custom domain for the organization’s white-label dashboard. Returns the created domain record in pending status with the CNAME target you must add at your DNS provider before verifying it. Requires the owner or admin role.
string
Stripe-style idempotency token. Pass a stable, client-generated value (1-255 chars) to dedupe retries on transient timeouts. The same key+credential+path replays the original response for 24h on 2xx (5min on 4xx, 30s on 5xx). Returns 409 if a concurrent request with the same key is already in flight; replayed responses include the Idempotency-Replay: true response header.
string (enum: true|false)
Sandbox opt-in for Clerk-session-authenticated requests. Set to true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.

Verify a custom domain

POST /api/v1/organization/domains/{domainId}/verify
Check the CNAME record for a registered custom domain and, once it resolves to the expected target, advance the domain toward the verified state and trigger TLS certificate provisioning. Returns the refreshed domain record. Requires the owner or admin role.
string
required
Custom-domain record identifier.
string
Stripe-style idempotency token. Pass a stable, client-generated value (1-255 chars) to dedupe retries on transient timeouts. The same key+credential+path replays the original response for 24h on 2xx (5min on 4xx, 30s on 5xx). Returns 409 if a concurrent request with the same key is already in flight; replayed responses include the Idempotency-Replay: true response header.
string (enum: true|false)
Sandbox opt-in for Clerk-session-authenticated requests. Set to true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.

Invite a member (SDK alias)

POST /api/v1/organization/invites
Backward-compatible alias of POST /settings/team/invite for the public SDK organization.invites.create({ email, role }) — sends a team-invitation email and stores the invite. Requires the owner or admin role.
string
Stripe-style idempotency token. Pass a stable, client-generated value (1-255 chars) to dedupe retries on transient timeouts. The same key+credential+path replays the original response for 24h on 2xx (5min on 4xx, 30s on 5xx). Returns 409 if a concurrent request with the same key is already in flight; replayed responses include the Idempotency-Replay: true response header.
string (enum: true|false)
Sandbox opt-in for Clerk-session-authenticated requests. Set to true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.

Resend a pending invite (SDK alias)

POST /api/v1/organization/invites/{id}/resend
Backward-compatible alias of POST /settings/team/invites/:email/resend for the public SDK organization.invites.resend(id) — re-sends the invitation email. The :id path parameter carries the invited email address (URL-encoded). Requires the owner or admin role.
string
required
Resource identifier
string
Stripe-style idempotency token. Pass a stable, client-generated value (1-255 chars) to dedupe retries on transient timeouts. The same key+credential+path replays the original response for 24h on 2xx (5min on 4xx, 30s on 5xx). Returns 409 if a concurrent request with the same key is already in flight; replayed responses include the Idempotency-Replay: true response header.
string (enum: true|false)
Sandbox opt-in for Clerk-session-authenticated requests. Set to true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.

Start an eKYC identity-verification session

POST /api/v1/organization/kyc/idv/session
Create a hosted government-ID + selfie-liveness capture session with the configured identity-verification provider and return the URL the applicant is redirected to. Returns 503 IDV_NOT_CONFIGURED until a provider is provisioned, and 409 once identity is already verified. A verified identity is a signal a super-admin reviews — it never auto-grants KYC.
string
Stripe-style idempotency token. Pass a stable, client-generated value (1-255 chars) to dedupe retries on transient timeouts. The same key+credential+path replays the original response for 24h on 2xx (5min on 4xx, 30s on 5xx). Returns 409 if a concurrent request with the same key is already in flight; replayed responses include the Idempotency-Replay: true response header.
string (enum: true|false)
Sandbox opt-in for Clerk-session-authenticated requests. Set to true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.

Submit KYC verification

POST /api/v1/organization/kyc/submit
Submit the organization’s Know Your Customer business details (legal name, website, country, industry, use case, and estimated monthly volume) for compliance review. The submission is queued for a super-admin to approve or reject, and a business-screening (KYB) check runs on the signing entity at the same time. Returns the resulting pending_review status.
string
Stripe-style idempotency token. Pass a stable, client-generated value (1-255 chars) to dedupe retries on transient timeouts. The same key+credential+path replays the original response for 24h on 2xx (5min on 4xx, 30s on 5xx). Returns 409 if a concurrent request with the same key is already in flight; replayed responses include the Idempotency-Replay: true response header.
string (enum: true|false)
Sandbox opt-in for Clerk-session-authenticated requests. Set to true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.

Update the current organization

PUT /api/v1/organization
Update the caller organization’s name, general settings JSONB, and monthly budget. Delegates to the same handler that backs PUT /settings/general, so the org-rename echo, settings-cache invalidation, and write-boundary security guards all apply. Returns the updated organization record. Requires the owner or admin role.
string
Stripe-style idempotency token. Pass a stable, client-generated value (1-255 chars) to dedupe retries on transient timeouts. The same key+credential+path replays the original response for 24h on 2xx (5min on 4xx, 30s on 5xx). Returns 409 if a concurrent request with the same key is already in flight; replayed responses include the Idempotency-Replay: true response header.
string (enum: true|false)
Sandbox opt-in for Clerk-session-authenticated requests. Set to true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.

Update organization branding

PUT /api/v1/organization/branding
Merge a partial branding patch into the organization’s white-label configuration. Only the keys you send are updated; send an explicit null to clear a field, or set inherit_from_parent to flip a subaccount back to inheriting its parent’s branding. Returns the updated branding record. Requires the owner or admin role.
string
Stripe-style idempotency token. Pass a stable, client-generated value (1-255 chars) to dedupe retries on transient timeouts. The same key+credential+path replays the original response for 24h on 2xx (5min on 4xx, 30s on 5xx). Returns 409 if a concurrent request with the same key is already in flight; replayed responses include the Idempotency-Replay: true response header.
string (enum: true|false)
Sandbox opt-in for Clerk-session-authenticated requests. Set to true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.

Update default business hours

PUT /api/v1/organization/business-hours
Set or patch the organization-wide default business-hours / holiday-calendar schedule. Diff-submit: an omitted field is untouched and an explicit null clears that default. A non-null holiday_calendar_id must reference a calendar owned by the caller’s org. Returns the updated schedule. Requires the owner or admin role.
string
Stripe-style idempotency token. Pass a stable, client-generated value (1-255 chars) to dedupe retries on transient timeouts. The same key+credential+path replays the original response for 24h on 2xx (5min on 4xx, 30s on 5xx). Returns 409 if a concurrent request with the same key is already in flight; replayed responses include the Idempotency-Replay: true response header.
string (enum: true|false)
Sandbox opt-in for Clerk-session-authenticated requests. Set to true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.

Record the org’s curated LLM provider selection

PUT /api/v1/organization/llm-provider
Record the caller org’s curated LLM provider selection (devotel free base or anthropic premium), or clear it back to the platform default with provider: null. A subaccount can never record a selection (403) — the curated lineup is a whitelabel-parent / root-org capability. Only curated catalog rows are writable; a still-evaluating or rejected provider is a 400. Requires the owner or admin role.
string
Stripe-style idempotency token. Pass a stable, client-generated value (1-255 chars) to dedupe retries on transient timeouts. The same key+credential+path replays the original response for 24h on 2xx (5min on 4xx, 30s on 5xx). Returns 409 if a concurrent request with the same key is already in flight; replayed responses include the Idempotency-Replay: true response header.
string (enum: true|false)
Sandbox opt-in for Clerk-session-authenticated requests. Set to true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.
string | null (enum: devotel|anthropic|null)
required
The curated provider to record, or null to clear back to the platform default.

Update a member’s role (SDK alias)

PUT /api/v1/organization/members/{id}
Backward-compatible alias of PUT /settings/team/:userId for the public SDK organization.members.update(id, { role }) — changes the member’s role inside the organization. The :id path parameter maps to the member’s user id. Requires the owner or admin role.
string
required
Resource identifier
string
Stripe-style idempotency token. Pass a stable, client-generated value (1-255 chars) to dedupe retries on transient timeouts. The same key+credential+path replays the original response for 24h on 2xx (5min on 4xx, 30s on 5xx). Returns 409 if a concurrent request with the same key is already in flight; replayed responses include the Idempotency-Replay: true response header.
string (enum: true|false)
Sandbox opt-in for Clerk-session-authenticated requests. Set to true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.

Connect a reseller BYO provider

PUT /api/v1/organization/reseller/providers/{providerType}
Create or replace one BYO provider connection on the caller’s own organization. Credentials are encrypted server-side (same enc:v1: envelope as channel credentials) and never echoed back. Only the reseller parent itself may call this — subaccounts receive 403. Returns the upserted connection’s provider type + status + the resulting resolution mode. Requires the owner or admin role.
string
required
string
Stripe-style idempotency token. Pass a stable, client-generated value (1-255 chars) to dedupe retries on transient timeouts. The same key+credential+path replays the original response for 24h on 2xx (5min on 4xx, 30s on 5xx). Returns 409 if a concurrent request with the same key is already in flight; replayed responses include the Idempotency-Replay: true response header.
string (enum: true|false)
Sandbox opt-in for Clerk-session-authenticated requests. Set to true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.

Update federation

PUT /api/v1/users/me/presence/federation/{provider}
string
required
string
Stripe-style idempotency token. Pass a stable, client-generated value (1-255 chars) to dedupe retries on transient timeouts. The same key+credential+path replays the original response for 24h on 2xx (5min on 4xx, 30s on 5xx). Returns 409 if a concurrent request with the same key is already in flight; replayed responses include the Idempotency-Replay: true response header.
string (enum: true|false)
Sandbox opt-in for Clerk-session-authenticated requests. Set to true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.

Update reseller mode flag

PATCH /api/v1/organization/reseller/mode
Flip the reseller-mode capability flag on the caller’s own organization. A subaccount can never flip itself into reseller mode (403) — the flag applies to whitelabel parent orgs only. Toggling off keeps the provider registry intact and immediately falls traffic back to the Devotel default. Requires the owner or admin role.
string (enum: true|false)
Sandbox opt-in for Clerk-session-authenticated requests. Set to true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.

Revoke an API key (SDK alias)

DELETE /api/v1/organization/api-keys/{id}
Backward-compatible alias of DELETE /settings/api-keys/:id for the public SDK organization.apiKeys.revoke(id) — revokes the key in place; it stops authenticating instantly. Returns 404 when no key carries that id. Owner, admin or developer.
string
required
Resource identifier
string (enum: true|false)
Sandbox opt-in for Clerk-session-authenticated requests. Set to true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.

Remove a custom domain

DELETE /api/v1/organization/domains/{domainId}
Remove a custom domain from the organization, tearing down its verification state and any provisioned TLS certificate. The domain must belong to the caller’s organization or the request is rejected. Requires the owner or admin role.
string
required
Custom-domain record identifier.
string (enum: true|false)
Sandbox opt-in for Clerk-session-authenticated requests. Set to true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.

Revoke a pending invite (SDK alias)

DELETE /api/v1/organization/invites/{id}
Backward-compatible alias of DELETE /settings/team/invites/:email for the public SDK organization.invites.revoke(id) — cancels the pending invitation so the emailed token can no longer be redeemed. The :id path parameter carries the invited email address (URL-encoded). Requires the owner or admin role.
string
required
Resource identifier
string (enum: true|false)
Sandbox opt-in for Clerk-session-authenticated requests. Set to true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.
Response: 204 No Content

Remove a member (SDK alias)

DELETE /api/v1/organization/members/{id}
Backward-compatible alias of DELETE /settings/team/:userId for the public SDK organization.members.remove(id) — tears down the member’s sessions and API keys and transfers their per-user assets. The :id path parameter maps to the member’s user id. Owner only.
string
required
Resource identifier
string (enum: true|false)
Sandbox opt-in for Clerk-session-authenticated requests. Set to true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.

Disconnect a reseller BYO provider

DELETE /api/v1/organization/reseller/providers/{providerType}
Remove one BYO provider connection from the caller’s own organization. The resolution flips back to the Devotel default immediately; deleting an absent connection is idempotent. Only the reseller parent itself may call this — subaccounts receive 403. Requires the owner or admin role.
string
required
string (enum: true|false)
Sandbox opt-in for Clerk-session-authenticated requests. Set to true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.

Delete federation

DELETE /api/v1/users/me/presence/federation/{provider}
string
required
string (enum: true|false)
Sandbox opt-in for Clerk-session-authenticated requests. Set to true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.