Suki Auth API

Authentication and token-issuance endpoints used by partners and partner-managed providers to obtain access tokens for the Suki Speech Service. Issues JWTs, exposes JWKS for verification, and registers provider accounts. Every call to Ambient, Dictation, and Form Filling APIs carries the partner token in the `sdp_suki_token` header.

Suki Auth API is one of 5 APIs that Suki AI publishes on the APIs.io network, described by a machine-readable OpenAPI specification.

This API exposes 1 machine-runnable capability that can be deployed as REST, MCP, or Agent Skill surfaces via Naftiko.

Tagged areas include Authentication, Tokens, JWT, and JWKS. The published artifact set on APIs.io includes API documentation, an OpenAPI specification, and 1 Naftiko capability spec.

OpenAPI Specification

suki-auth-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Suki Auth API
  description: |
    Partner authentication and token-issuance endpoints used to obtain
    `sdp_suki_token` access tokens for calling Suki Speech Service
    Ambient, Dictation, Form Filling, and Info APIs. Tokens are JWTs;
    the JWKS endpoint exposes verification keys.
  version: '1.0.0'
  contact:
    name: Suki for Partners
    url: https://developer.suki.ai
servers:
  - url: https://sdp.suki-stage.com/api/v1
    description: Suki Speech Service staging environment
tags:
  - name: Auth
    description: Provider Registration And Token Issuance
paths:
  /auth/register:
    post:
      tags: [Auth]
      summary: Register Provider
      operationId: registerProvider
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProviderRegistration'
      responses:
        '201':
          description: Provider registered
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Provider'
  /auth/login:
    post:
      tags: [Auth]
      summary: Login And Obtain Token
      operationId: loginProvider
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LoginRequest'
      responses:
        '200':
          description: Access token issued
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TokenResponse'
  /auth/jwks:
    get:
      tags: [Auth]
      summary: Get JWKS
      operationId: getJwks
      responses:
        '200':
          description: JSON Web Key Set used to verify Suki-issued JWTs
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Jwks'
components:
  schemas:
    ProviderRegistration:
      type: object
      required: [partnerProviderId, name]
      properties:
        partnerProviderId: { type: string, description: Partner-owned provider identifier }
        name: { type: string }
        npi: { type: string, description: National Provider Identifier }
        specialty: { type: string }
        email: { type: string, format: email }
    Provider:
      type: object
      properties:
        providerId: { type: string }
        partnerProviderId: { type: string }
        name: { type: string }
        specialty: { type: string }
        createdAt: { type: string, format: date-time }
    LoginRequest:
      type: object
      required: [partnerId, partnerSecret]
      properties:
        partnerId: { type: string }
        partnerSecret: { type: string }
        providerId: { type: string, description: Optional provider to scope token to }
    TokenResponse:
      type: object
      properties:
        sdpSukiToken: { type: string, description: JWT to send in the sdp_suki_token header }
        tokenType: { type: string, example: Bearer }
        expiresIn: { type: integer, description: Seconds until expiry }
    Jwks:
      type: object
      properties:
        keys:
          type: array
          items:
            type: object
            properties:
              kty: { type: string }
              kid: { type: string }
              use: { type: string }
              alg: { type: string }
              n: { type: string }
              e: { type: string }