AIMLAPI · OpenAPI Overlay 1.0.0

AIMLAPI Inference API — API Evangelist enhancements

23 actions 23 updates documentation
Generated by API Evangelist Written by API Evangelist tooling for AIMLAPI's API. It is a proposal applied on top of the contract, not a document AIMLAPI publishes.
View Overlay File View on GitHub Overlay Specification

What the actions change

tagssummarydescriptionoperationIdcontacttermsOfServicex-documentationx-status-page

Targets 23 · first 16 shown; the file carries all of them

$.info
$
$.paths['/v1/chat/completions'].post
$.paths['/v1/responses'].post
$.paths['/v1/responses/:response_id'].get
$.paths['/v1/messages'].post
$.paths['/v1/embeddings'].post
$.paths['/v1/images/generations'].post
$.paths['/v1/images/edits'].post
$.paths['/v2/video/generations'].post
$.paths['/v2/video/generations'].get
$.paths['/v1/tts'].post
$.paths['/v1/stt/create'].post
$.paths['/v1/stt/:generation_id'].get
$.paths['/v2/generate/audio'].post
$.paths['/v2/generate/audio'].get

OpenAPI Overlay

Raw ↑
overlay: 1.0.0
info:
  title: AIMLAPI Inference API — API Evangelist enhancements
  version: 1.0.0
x-provenance:
  generated: '2026-08-30'
  method: generated
  provider: AIMLAPI
  providerId: aimlapi
  extends: openapi/aimlapi-inference-openapi.yml
  extends_source: https://api.aimlapi.com/docs-yaml
  description: >-
    OpenAPI Overlay 1.0.0 capturing API Evangelist enhancements to AIMLAPI's own
    published contract. The original is never mutated. Everything asserted here
    is documented by AIMLAPI somewhere — the overlay's job is to move it INTO the
    contract, where the published document leaves it out: authentication (every
    operation needs a bearer key and the spec declares none), error responses
    (the spec declares only 200s), the tracing and cost headers, and operation
    tags. It does NOT attempt to repair the colon-style path templating or the
    duplicated operationIds, because those change the document's identity rather
    than annotate it; they are recorded as findings in
    conformance/aimlapi-conformance.yml instead.
actions:
- target: $.info
  update:
    description: >-
      AI/ML API — a single OpenAI-compatible gateway to 1000+ models from OpenAI,
      Anthropic, Google, Meta, DeepSeek, Mistral, Alibaba, MiniMax, ElevenLabs,
      Kling and others, across chat, responses, embeddings, images, video, music,
      speech and OCR. Authenticate with a bearer API key from
      https://aimlapi.com/app/keys. Base URL https://api.aimlapi.com; an
      OpenAI client should be configured with https://api.aimlapi.com/v1.
    contact:
      name: AI/ML API Support
      email: help@aimlapi.com
      url: https://help.aimlapi.com/
    termsOfService: https://aimlapi.com/terms-and-conditions
    x-documentation: https://docs.aimlapi.com/
    x-status-page: https://status.aimlapi.com/
    x-model-catalogue: https://api.aimlapi.com/v1/models
    x-model-deprecations: https://api.aimlapi.com/v1/models/deprecations
- target: $
  update:
    security:
    - bearerAuth: []
    components:
      securitySchemes:
        bearerAuth:
          type: http
          scheme: bearer
          description: >-
            AIMLAPI API key, sent as `Authorization: Bearer <YOUR_AIMLAPI_KEY>`.
            Created at https://aimlapi.com/app/keys or via POST /v1/keys with a
            management key. Keys may carry model-category scopes (model:chat,
            model:responses, model:image, model:audio, model:video,
            model:embeddings, model:speech, model:ocr) and a USD spend threshold.
            Source: https://docs.aimlapi.com/faq/how-can-i-work-with-my-api-keys
    tags:
    - name: Chat
      description: OpenAI-compatible chat completions.
    - name: Responses
      description: OpenAI Responses-shaped inference.
    - name: Messages
      description: Anthropic Messages-shaped inference.
    - name: Embeddings
    - name: Images
    - name: Video
    - name: Speech
    - name: Music
    - name: OCR
    - name: Batches
- target: $.paths['/v1/chat/completions'].post
  update:
    tags:
    - Chat
    summary: Create a chat completion
    description: >-
      OpenAI-compatible chat completion across the full AIMLAPI model catalogue.
      Set `stream: true` for Server-Sent Events, in which case cost arrives in
      the final chunk under meta.usage rather than in a response header. The
      `provider` field pins execution to one upstream source with no fallback;
      `auto` (default) uses the fallback chain.
- target: $.paths['/v1/responses'].post
  update:
    tags:
    - Responses
    summary: Create a response
- target: $.paths['/v1/responses/:response_id'].get
  update:
    tags:
    - Responses
    summary: Retrieve a response
- target: $.paths['/v1/messages'].post
  update:
    tags:
    - Messages
    summary: Create a message (Anthropic-shaped)
- target: $.paths['/v1/embeddings'].post
  update:
    tags:
    - Embeddings
    summary: Create embeddings
- target: $.paths['/v1/images/generations'].post
  update:
    tags:
    - Images
    summary: Generate an image
- target: $.paths['/v1/images/edits'].post
  update:
    tags:
    - Images
    summary: Edit an image
- target: $.paths['/v2/video/generations'].post
  update:
    tags:
    - Video
    summary: Submit a video generation
    description: >-
      Asynchronous. Returns a generation_id; poll GET /v2/video/generations with
      it. The generation_id is the same value returned in the x-inference-id
      response header.
- target: $.paths['/v2/video/generations'].get
  update:
    tags:
    - Video
    summary: Poll a video generation
    operationId: _v2_video_generations_get
    x-overlay-note: >-
      The published document reuses the POST's operationId here. OpenAPI requires
      operationId to be unique; this overlay supplies a distinct one.
- target: $.paths['/v1/tts'].post
  update:
    tags:
    - Speech
    summary: Text to speech
- target: $.paths['/v1/stt/create'].post
  update:
    tags:
    - Speech
    summary: Submit a speech-to-text transcription
- target: $.paths['/v1/stt/:generation_id'].get
  update:
    tags:
    - Speech
    summary: Poll a speech-to-text transcription
- target: $.paths['/v2/generate/audio'].post
  update:
    tags:
    - Music
    summary: Submit a music generation
- target: $.paths['/v2/generate/audio'].get
  update:
    tags:
    - Music
    summary: Poll a music generation
    operationId: _v2_generate_audio_get
- target: $.paths['/v2/generate/audio/preprocess'].post
  update:
    tags:
    - Music
    summary: Preprocess audio for music generation
- target: $.paths['/v1/ocr'].post
  update:
    tags:
    - OCR
    summary: Run OCR over a document
- target: $.paths['/v1/batches'].post
  update:
    tags:
    - Batches
    summary: Create a message batch
    description: >-
      Up to 100,000 requests per batch. The response carries expires_at and
      cancel_initiated_at; a batch can be cancelled with
      POST /v1/batches/cancel/{batch_id} while it is still processing.
- target: $.paths['/v1/batches'].get
  update:
    tags:
    - Batches
    summary: Get batch status or results
    operationId: _v1_batches_get
- target: $.paths['/v1/batches/cancel/:batch_id'].post
  update:
    tags:
    - Batches
    summary: Cancel a batch
    description: >-
      The only reversal operation in the AIMLAPI surface. Returns the final
      status; work already completed at cancellation time is reported in
      request_counts and appears to be billed.
- target: $.paths[*][*].responses
  update:
    '400':
      description: >-
        Bad Request — invalid or missing fields for the selected model. The body
        appends "Expected" / "Received" hints naming the offending parameter.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/AimlapiProblem'
    '401':
      description: Unauthorized — missing, expired or invalid API key.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/AimlapiProblem'
    '403':
      description: >-
        Forbidden — authenticated but out of credits, or a key acting outside its
        scopes.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/AimlapiProblem'
    '404':
      description: Not Found — unknown endpoint, model or resource.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/AimlapiProblem'
    '429':
      description: >-
        Too Many Requests — a rate or concurrency limit was hit. No Retry-After
        or RateLimit-* header is returned, so the backoff interval is not
        communicated.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/AimlapiProblem'
    '500':
      description: >-
        Internal Server Error. Also returned when an upstream partner model API
        fails, which makes a downstream failure indistinguishable from an
        AIMLAPI one.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/AimlapiProblem'
    '502':
      description: Bad Gateway — a downstream partner returned an invalid response.
    '503':
      description: Service Unavailable — the model or a partner service is down.
    '504':
      description: Gateway Timeout — the generation exceeded the time limit.
- target: $.components
  update:
    schemas:
      AimlapiProblem:
        type: object
        description: >-
          The AIMLAPI error envelope. Carries the RFC 9457 members title, status
          and instance, omits type and detail, and adds message, requestId,
          timestamp and error.
        properties:
          title:
            type: string
          status:
            type: integer
          instance:
            type: string
          message:
            type: string
          requestId:
            type: string
          timestamp:
            type: string
            format: date-time
          error:
            type: object
            properties:
              name:
                type: string
              message:
                type: string
      TracingHeaders:
        type: object
        description: Documentation-only schema for the response headers AIMLAPI returns.
        properties:
          x-inference-id:
            type: string
            description: >-
              Always present. The reference_id of the charge in
              GET /v2/billing/transactions and the inference_id in GET /v2/logs.
              For an async generation it equals the generation_id.
          x-client-request-id:
            type: string
            description: Echo of a valid X-Client-Request-Id you sent.
          x-aimlapi-credits-used:
            type: integer
            description: Credits charged. Non-streaming JSON responses only.
          x-aimlapi-usd-spent:
            type: number
            description: USD charged. Non-streaming JSON responses only.
    parameters:
      ClientRequestId:
        name: X-Client-Request-Id
        in: header
        required: false
        description: >-
          Your own correlation id, 1-128 characters from A-Z a-z 0-9 and . _ : -
          Stored, echoed back, and reported as client_request_id in GET /v2/logs.
          A value outside that alphabet is silently dropped — the request still
          runs and is still billed, and nothing in the response says so.
        schema:
          type: string
          maxLength: 128