Suki Dictation API

REST + WebSocket API for real-time clinical dictation. Partners open a dictation session, stream audio to a WebSocket, and receive transcribed clinical text. Designed for both in-field dictation (into a single EHR field) and scratchpad mode for free-form capture. Also exposed through the Suki Dictation SDK as a hosted iframe for fast web integration.

Suki Dictation 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 Dictation, Speech Recognition, WebSocket, and Clinical Voice. The published artifact set on APIs.io includes API documentation, an OpenAPI specification, SDKs, and 1 Naftiko capability spec.

OpenAPI Specification

suki-dictation-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Suki Dictation API
  description: |
    REST control plane for clinical dictation sessions on Suki Speech
    Service. Partners open a dictation session, stream audio over the
    paired WebSocket endpoint (`wss://sdp.suki-stage.com/api/v1/dictation/sessions/{sessionId}/audio`),
    and receive real-time transcription. Supports both in-field
    dictation (single EHR field) and scratchpad mode.
  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: Dictation
    description: Dictation Session Lifecycle
security:
  - SdpSukiToken: []
paths:
  /dictation/sessions:
    post:
      tags: [Dictation]
      summary: Create Dictation Session
      operationId: createDictationSession
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DictationSessionCreate'
      responses:
        '201':
          description: Dictation session created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DictationSession'
  /dictation/sessions/{sessionId}/end:
    post:
      tags: [Dictation]
      summary: End Dictation Session
      operationId: endDictationSession
      parameters:
        - name: sessionId
          in: path
          required: true
          schema: { type: string, format: uuid }
      responses:
        '200':
          description: Session ended; final transcript returned
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DictationResult'
components:
  securitySchemes:
    SdpSukiToken:
      type: apiKey
      in: header
      name: sdp_suki_token
  schemas:
    DictationSessionCreate:
      type: object
      required: [providerId]
      properties:
        providerId: { type: string }
        mode: { type: string, enum: [in-field, scratchpad], default: in-field }
        languageCode: { type: string, example: en-US }
        fieldHint:
          type: string
          description: Free-text hint describing the target EHR field
    DictationSession:
      type: object
      properties:
        sessionId: { type: string, format: uuid }
        providerId: { type: string }
        mode: { type: string }
        status: { type: string, enum: [open, ended] }
        audioWebsocketUrl: { type: string, format: uri }
        createdAt: { type: string, format: date-time }
    DictationResult:
      type: object
      properties:
        sessionId: { type: string, format: uuid }
        transcript: { type: string }
        durationMs: { type: integer }
        confidence: { type: number, format: float, minimum: 0, maximum: 1 }