Sarj AI Developer API · Authentication Profile

Sarj Ai Developer Api Authentication

Authentication

Sarj AI Developer API secures its APIs with http and oauth2 across 3 declared security schemes, as derived from its OpenAPI definitions. OAuth 2.0 is offered via the authorizationCode flow(s).

voice AIvoice agentsconversational AIArabic AIoutbound callstelephonyspeech to texttext to speechvoice cloningMCPagent-nativeSaudi ArabiaMENA
Methods: http, oauth2 Schemes: 3 OAuth flows: authorizationCode API key in: header

Security Schemes

ApiKeyAuth http
scheme: bearer
BearerAuth http
scheme: bearer
MCP OAuth oauth2
· flows: authorizationCode

Source

Authentication Profile

Raw ↑
generated: '2026-08-09'
method: searched
docs: https://platform-docs.sarj.ai/getting-started
source: >-
  openapi/sarj-ai-developer-api-developer-openapi.json, openapi/sarj-ai-developer-api-stt-openapi.json,
  openapi/sarj-ai-developer-api-tts-openapi.json, https://platform-docs.sarj.ai/getting-started,
  https://platform-docs.sarj.ai/mcp-server, https://platform-api.sarj.ai/.well-known/oauth-authorization-server
summary:
  types:
    - http
    - oauth2
  http_schemes:
    - bearer
  oauth2_flows:
    - authorizationCode
  api_key_in:
    - header
  key_management: dashboard
schemes:
  - name: ApiKeyAuth
    type: http
    scheme: bearer
    description: 'API key from the Sarj.ai dashboard. Pass as: Authorization: Bearer <api-key>'
    header: Authorization
    sources:
      - openapi/sarj-ai-developer-api-developer-openapi.json
    applies_to: https://platform-api.sarj.ai/api/v1
  - name: BearerAuth
    type: http
    scheme: bearer
    description: The same Sarj.ai API key, used against the Speech-to-Text and Text-to-Speech hosts.
    header: Authorization
    sources:
      - openapi/sarj-ai-developer-api-stt-openapi.json
      - openapi/sarj-ai-developer-api-tts-openapi.json
    applies_to:
      - https://stt-rnnt-ar.sarj.ai/openai/v1
      - https://sarj-omni-tts.sarj.ai/v1
  - name: MCP OAuth
    type: oauth2
    description: >-
      Browser-based sign-in used only by the hosted MCP server. The client is registered dynamically (RFC 7591), the
      user signs in, and an API key is minted server-side and cached by the MCP client. Not declared in any OpenAPI.
    flows:
      - flow: authorizationCode
        authorizationUrl: https://platform-api.sarj.ai/api/v1/oauth/authorize
        tokenUrl: https://platform-api.sarj.ai/api/v1/oauth/token
        registrationUrl: https://platform-api.sarj.ai/api/v1/oauth/register
        pkce: S256
        scopes: 1
    sources:
      - https://platform-api.sarj.ai/.well-known/oauth-authorization-server
      - https://platform-docs.sarj.ai/mcp-server
    applies_to: https://platform-api.sarj.ai/api/v1/mcp
key_lifecycle:
  issued_at: https://platform.sarj.ai/api-keys
  display: shown once at creation
  rotation: generate a new key from the dashboard; no documented programmatic rotation
  storage_guidance: 'documented as an environment variable (SARJ_API_KEY)'
  scoping: account and organization
  revocation: not documented
unauthenticated_operations:
  - operationId: getHealth
    path: /health
    note: Health check is explicitly documented as requiring no authentication.
findings:
  - id: single-credential-across-three-hosts
    detail: >-
      One API key authenticates the call API, Speech-to-Text and Text-to-Speech across three different hosts. There is
      no per-service credential and no scoping, so a key leaked from a transcription workload can also place billable
      outbound phone calls.
  - id: no-oauth-for-rest
    detail: >-
      OAuth exists only for the MCP transport. Direct REST and SDK integrators have no authorization-code path and no
      scoped tokens — only long-lived bearer API keys.
x-evidence:
  - url: https://platform-docs.sarj.ai/getting-started
    http_status: 200
  - url: https://platform-docs.sarj.ai/mcp-server
    http_status: 200
  - url: https://platform-api.sarj.ai/.well-known/oauth-authorization-server
    http_status: 200