> ## Documentation Index
> Fetch the complete documentation index at: https://docs.flex.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Public service status (auth, inference, billing, per-model)

> Public, unauthenticated status surface. Aggregates authentication
and inference health into a top-level
`status` (`ok | degraded | down`), plus per-component detail and an
active-only catalog of per-model health badges. `incidents` are
the manually-published current/recent incidents. `health_data_age_seconds`
is the age (in seconds) of the most recent health probe — clients
can show a "stale data" warning when this exceeds ~5 minutes.

Cached for 10 seconds and served with
`Cache-Control: public, max-age=10, stale-while-revalidate=60`,
so frequent polling is inexpensive.




## OpenAPI

````yaml /inference-api/openapi.yaml get /api/status
openapi: 3.1.0
info:
  title: FlexAI Inference API
  version: 1.0.0
  description: |
    OpenAI-compatible inference API for text, code, reasoning, vision, and
    embedding models hosted by FlexAI. Use any OpenAI SDK by pointing the
    `base_url` at this service.
  contact:
    name: FlexAI Support
    email: support@flex.ai
    url: https://docs.flex.ai/inference-api/overview
servers:
  - url: https://tokens.flex.ai
    description: Production
security:
  - bearerAuth: []
tags:
  - name: Chat
    description: Chat completions (streaming, tool use, vision).
  - name: Completions
    description: Legacy text completions.
  - name: Embeddings
    description: Generate vector embeddings for text.
  - name: Models
    description: Discover available models.
  - name: Usage
    description: Programmatic spend and quota for the calling key.
paths:
  /api/status:
    get:
      tags:
        - Status
      summary: Public service status (auth, inference, billing, per-model)
      description: >
        Public, unauthenticated status surface. Aggregates authentication

        and inference health into a top-level

        `status` (`ok | degraded | down`), plus per-component detail and an

        active-only catalog of per-model health badges. `incidents` are

        the manually-published current/recent incidents.
        `health_data_age_seconds`

        is the age (in seconds) of the most recent health probe — clients

        can show a "stale data" warning when this exceeds ~5 minutes.


        Cached for 10 seconds and served with

        `Cache-Control: public, max-age=10, stale-while-revalidate=60`,

        so frequent polling is inexpensive.
      operationId: getStatus
      responses:
        '200':
          description: Successful response
          headers:
            Cache-Control:
              schema:
                type: string
              description: public, max-age=10, stale-while-revalidate=60
          content:
            application/json:
              schema:
                type: object
                required:
                  - status
                  - components
                  - models
                  - incidents
                  - incidents_available
                  - generated_at
                properties:
                  status:
                    type: string
                    enum:
                      - ok
                      - degraded
                      - down
                    description: |
                      Worst-status wins. `unknown` on any component
                      (e.g. auth probe couldn't run) demotes to `degraded`
                      rather than masquerading as `ok`.
                  components:
                    type: array
                    items:
                      type: object
                      required:
                        - name
                        - status
                        - last_checked_at
                      properties:
                        name:
                          type: string
                          enum:
                            - auth
                            - billing
                            - inference
                        status:
                          type: string
                          enum:
                            - ok
                            - degraded
                            - down
                            - unknown
                        detail:
                          type: string
                          nullable: true
                        last_checked_at:
                          type: string
                          format: date-time
                  models:
                    type: array
                    description: Per-model badges, active catalog only.
                    items:
                      type: object
                      required:
                        - name
                        - status
                      properties:
                        name:
                          type: string
                        status:
                          type: string
                          enum:
                            - healthy
                            - unhealthy
                            - unknown
                        last_checked_at:
                          type: string
                          format: date-time
                          nullable: true
                        error:
                          type: string
                          nullable: true
                          description: >-
                            Neutral "probe failed" string when unhealthy. Never
                            includes hostnames or env-var names.
                  incidents:
                    type: array
                    items:
                      type: object
                      required:
                        - id
                        - title
                        - status
                        - severity
                        - started_at
                      properties:
                        id:
                          type: string
                        title:
                          type: string
                        status:
                          type: string
                          enum:
                            - investigating
                            - identified
                            - monitoring
                            - resolved
                        severity:
                          type: string
                          enum:
                            - minor
                            - major
                            - critical
                        started_at:
                          type: string
                          format: date-time
                        resolved_at:
                          type: string
                          format: date-time
                          nullable: true
                        customer_action:
                          type: string
                          nullable: true
                        body_md:
                          type: string
                          nullable: true
                  incidents_available:
                    type: boolean
                    description: |
                      `false` when `incidents.json` is missing, malformed,
                      or contains a row that fails validation. The page
                      still renders other components but should surface
                      "incidents temporarily unavailable" instead of
                      claiming "no current incidents".
                  generated_at:
                    type: string
                    format: date-time
                  health_data_age_seconds:
                    type: integer
                    nullable: true
      security: []
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: sk-xxxx
      description: |
        Virtual API key. Create one from the
        [FlexAI dashboard](https://tokens.flex.ai/dashboard/keys). Pass as
        `Authorization: Bearer sk-xxxx`.

````