Ando Calls API

Call detail and transcript routes.

OpenAPI Specification

ando-calls-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  description: Generated from Ando's accepted public API v1 contract metadata. Current routes preserve legacy /api/v1 response envelopes while converging on the public https://api.ando.so/v1 shape.
  title: Ando Public Calls API
  version: v1
servers:
- description: Canonical public API host.
  url: https://api.ando.so/v1
tags:
- description: Call detail and transcript routes.
  name: Calls
paths:
  /calls/{callId}:
    get:
      description: Returns call metadata, participants, summary, and timing.
      operationId: getCall
      parameters:
      - description: Call identifier.
        in: path
        name: callId
        required: true
        schema:
          description: Call identifier.
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CallResponse'
          description: Call details.
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/Conflict'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          $ref: '#/components/responses/InternalError'
      security:
      - AndoApiKey: []
      - BearerApiKey: []
      summary: Get a call
      tags:
      - Calls
      x-ando-compatibility-mode: legacy_api_v1_compatibility
      x-ando-migration-target: standard_public
      x-ando-rate-limit-policy: implicit_legacy
      x-ando-route-id: api.api_v1_calls_by_callid.get
      x-ando-canonical-host: api.ando.so
      x-ando-documentation-owner: api_platform
      x-ando-principal-kind: workspace_api_key
      x-ando-public-api-route-class: public_data
      x-ando-public-path: /v1/calls/:callId
      x-ando-runtime-owner: api_platform
      x-ando-status-probe-owner: none
      x-ando-rollback-runtime: express
      x-ando-selected-runtime: express
      x-ando-target-runtime: convex_http
  /calls/{callId}/transcript:
    get:
      description: Returns transcript segments for a call.
      operationId: getCallTranscript
      parameters:
      - description: Call identifier.
        in: path
        name: callId
        required: true
        schema:
          description: Call identifier.
          type: string
      - description: Maximum number of records to return.
        in: query
        name: limit
        schema:
          description: Maximum number of records to return.
          type: integer
          minimum: 1
      - description: Pagination cursor.
        in: query
        name: cursor
        schema:
          description: Pagination cursor.
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CallTranscriptResponse'
          description: Call transcript.
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/Conflict'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          $ref: '#/components/responses/InternalError'
      security:
      - AndoApiKey: []
      - BearerApiKey: []
      summary: Get a call transcript
      tags:
      - Calls
      x-ando-compatibility-mode: legacy_api_v1_compatibility
      x-ando-migration-target: standard_public
      x-ando-rate-limit-policy: implicit_legacy
      x-ando-route-id: api.api_v1_calls_by_callid_transcript.get
      x-ando-canonical-host: api.ando.so
      x-ando-documentation-owner: api_platform
      x-ando-principal-kind: workspace_api_key
      x-ando-public-api-route-class: public_data
      x-ando-public-path: /v1/calls/:callId/transcript
      x-ando-runtime-owner: api_platform
      x-ando-status-probe-owner: none
      x-ando-rollback-runtime: express
      x-ando-selected-runtime: express
      x-ando-target-runtime: convex_http
components:
  schemas:
    CallParticipant:
      additionalProperties: false
      description: A participant in a call.
      properties:
        id:
          description: Participant workspace member identifier.
          type: string
          example: 01jzn7e61x3a7v9h2r7t2m3q4p
        name:
          description: Display name.
          type: string
          nullable: true
      required:
      - id
      - name
      type: object
    LegacyErrorResponse:
      additionalProperties: false
      description: Current compatibility error envelope used by legacy /api/v1 routes.
      properties:
        error:
          description: Error message.
          type: string
        error_code:
          description: Optional machine-readable error code.
          type: string
          nullable: true
        missing_scopes:
          description: Missing scopes.
          items:
            description: Scope.
            type: string
          type: array
      required:
      - error
      type: object
    PublicApiErrorResponse:
      additionalProperties: false
      description: Target public API error envelope.
      properties:
        error:
          additionalProperties: false
          description: Error details.
          properties:
            code:
              description: Machine-readable error code.
              type: string
            message:
              description: Human-readable error message.
              type: string
            request_id:
              description: Request identifier.
              type: string
              nullable: true
          required:
          - code
          - message
          type: object
      required:
      - error
      type: object
    CallTranscriptChapter:
      additionalProperties: false
      description: A summary chapter for a call transcript.
      properties:
        content:
          description: Chapter content.
          type: string
        end_ms:
          description: Chapter end offset in milliseconds.
          type: integer
        start_ms:
          description: Chapter start offset in milliseconds.
          type: integer
        title:
          description: Chapter title.
          type: string
      required:
      - title
      - content
      - start_ms
      - end_ms
      type: object
    CallTranscriptResponse:
      additionalProperties: false
      description: Current call transcript compatibility response.
      properties:
        call_id:
          description: Call identifier.
          type: string
          example: 01jzn7e61x3a7v9h2r7t2m3q4p
        conversation_name:
          description: Conversation name.
          type: string
          nullable: true
        duration_seconds:
          description: Call duration in seconds.
          type: number
          nullable: true
        pageInfo:
          $ref: '#/components/schemas/LegacyPageInfo'
        segments:
          description: Transcript segments.
          items:
            $ref: '#/components/schemas/CallTranscriptSegment'
          type: array
      required:
      - call_id
      - conversation_name
      - duration_seconds
      - segments
      - pageInfo
      type: object
    CallResponse:
      additionalProperties: false
      description: Call detail response.
      properties:
        chapters:
          description: Call summary chapters.
          items:
            $ref: '#/components/schemas/CallTranscriptChapter'
          type: array
        conversation_id:
          description: Conversation identifier.
          type: string
          example: 01jzn7e61x3a7v9h2r7t2m3q4p
        conversation_name:
          description: Conversation name.
          type: string
          nullable: true
        duration_seconds:
          description: Call duration in seconds.
          type: number
          nullable: true
        ended_at:
          description: Call end timestamp.
          type: string
          format: date-time
          nullable: true
        id:
          description: Call identifier.
          type: string
          example: 01jzn7e61x3a7v9h2r7t2m3q4p
        participants:
          description: Call participants.
          items:
            $ref: '#/components/schemas/CallParticipant'
          type: array
        started_at:
          description: Call start timestamp.
          type: string
          format: date-time
          nullable: true
        status:
          description: Call status.
          type: string
        summary:
          description: Call summary markdown.
          type: string
          nullable: true
      required:
      - id
      - conversation_id
      - conversation_name
      - status
      - duration_seconds
      - participants
      - summary
      - chapters
      - started_at
      - ended_at
      type: object
    CallTranscriptSegment:
      additionalProperties: false
      description: A transcript segment.
      properties:
        content:
          description: Transcript text.
          type: string
        end_ms:
          description: Segment end offset in milliseconds.
          type: integer
        speaker_name:
          description: Speaker display name.
          type: string
          nullable: true
        start_ms:
          description: Segment start offset in milliseconds.
          type: integer
      required:
      - speaker_name
      - content
      - start_ms
      - end_ms
      type: object
    LegacyPageInfo:
      additionalProperties: false
      description: Current compatibility pagination metadata with camelCase field names.
      properties:
        endCursor:
          description: Cursor for the last item.
          type: string
          nullable: true
        hasNextPage:
          description: Whether another page exists after this page.
          type: boolean
        hasPreviousPage:
          description: Whether another page exists before this page.
          type: boolean
        startCursor:
          description: Cursor for the first item.
          type: string
          nullable: true
      required:
      - hasNextPage
      - hasPreviousPage
      type: object
  responses:
    Forbidden:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/LegacyErrorResponse'
      description: Forbidden.
    Unauthorized:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/LegacyErrorResponse'
      description: Missing or invalid API key.
    RateLimited:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/PublicApiErrorResponse'
      description: Rate limit or quota exceeded.
    BadRequest:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/LegacyErrorResponse'
      description: Bad request.
    NotFound:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/LegacyErrorResponse'
      description: Not found.
    InternalError:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/LegacyErrorResponse'
      description: Internal server error.
    Conflict:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/LegacyErrorResponse'
      description: Conflict.
  securitySchemes:
    AndoApiKey:
      description: Workspace API key. Current accepted keys use the ando_sk_ prefix.
      in: header
      name: x-api-key
      type: apiKey
    BearerApiKey:
      bearerFormat: ando_sk
      description: Compatibility transport for workspace API keys.
      scheme: bearer
      type: http