Fahali Enterprise Engines API

The Engines API from Fahali Enterprise — 5 operation(s) for engines.

GitHub OpenAPI

Operations 5

GET /api/engines/status Engine liveness (public) #
GET /api/engines/{key}/board Engine board, market-wide #
GET /api/engines/{key}/board/{symbol} Engine board, one symbol #
GET /api/engines/fall-warning-8h Fall warning (8h) board, market-wide #
GET /api/engines/fall-warning-8h/{symbol} Fall warning (8h) board, one symbol #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/fahaliai-com:fahaliai-com-engines-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

fahaliai-com-engines-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Fahali Intelligence Engines API
  version: 1.0.0
  description: Structured market intelligence endpoints for AI agents, MCP tools, and institutional consumers. All responses conform to the canonical Fahali Intelligence schema family. Observation, not financial advice — every surface carries this disclaimer.
servers:
- url: https://app.fahaliai.com
  description: Production
- url: http://localhost:5000
  description: Local development
tags:
- name: Engines
paths:
  /api/engines/status:
    get:
      summary: Engine liveness (public)
      description: 'Per-engine status across the engine roster served by the backend registry: last fired, 1h/24h/7d counts, and a firing/active/quiet/dormant status (event-gated engines are quiet by design). Includes market-session context. Requires a Firebase session or an API key.'
      operationId: getEngineStatus
      responses:
        '200':
          description: Engine status
          content:
            application/json:
              schema:
                type: object
                properties:
                  engines:
                    type: array
                    items:
                      type: object
                  market_context:
                    type: object
                  asof:
                    type: string
                    format: date-time
      tags:
      - Engines
  /api/engines/{key}/board:
    get:
      summary: Engine board, market-wide
      operationId: getEngineBoard
      description: Public, read-only. Observation, not advice. Numbers are served from the published board and the judged record; nothing is filled in when absent.
      parameters:
      - name: key
        in: path
        required: true
        description: Engine key with underscores, e.g. fall_warning_8h.
        schema:
          type: string
      - name: limit
        in: query
        required: false
        description: 'Market-wide read only: keep the top N symbols by p descending; symbols_total records the pre-slice count. Ignored on a symbol read.'
        schema:
          type: integer
          minimum: 1
          maximum: 200
          default: 50
      responses:
        '200':
          description: Board envelope (status ok or partial; partial names the block that timed out or failed).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EngineBoardEnvelope'
        '404':
          description: Engine not in the roster (status unavailable; a hyphenated key whose underscore form exists is named in roster.reason).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EngineBoardEnvelope'
        '503':
          description: Board dependencies could not be constructed; every block is null with reason board_deps_failed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EngineBoardEnvelope'
      tags:
      - Engines
  /api/engines/{key}/board/{symbol}:
    get:
      summary: Engine board, one symbol
      operationId: getEngineBoardSymbol
      description: Public, read-only. Observation, not advice. Numbers are served from the published board and the judged record; nothing is filled in when absent.
      parameters:
      - name: key
        in: path
        required: true
        description: Engine key with underscores, e.g. fall_warning_8h.
        schema:
          type: string
      - name: symbol
        in: path
        required: true
        description: Instrument symbol (case-insensitive).
        schema:
          type: string
      responses:
        '200':
          description: Board envelope (status ok or partial; partial names the block that timed out or failed).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EngineBoardEnvelope'
        '404':
          description: Engine not in the roster (status unavailable; a hyphenated key whose underscore form exists is named in roster.reason).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EngineBoardEnvelope'
        '503':
          description: Board dependencies could not be constructed; every block is null with reason board_deps_failed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EngineBoardEnvelope'
      tags:
      - Engines
  /api/engines/fall-warning-8h:
    get:
      summary: Fall warning (8h) board, market-wide
      operationId: getFallWarnings
      description: Public, read-only. Observation, not advice. Numbers are served from the published board and the judged record; nothing is filled in when absent.
      parameters:
      - name: limit
        in: query
        required: false
        description: 'Market-wide read only: keep the top N symbols by p descending; symbols_total records the pre-slice count. Ignored on a symbol read.'
        schema:
          type: integer
          minimum: 1
          maximum: 200
          default: 50
      responses:
        '200':
          description: Board envelope (status ok or partial; partial names the block that timed out or failed).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EngineBoardEnvelope'
        '404':
          description: Engine not in the roster (status unavailable; a hyphenated key whose underscore form exists is named in roster.reason).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EngineBoardEnvelope'
        '503':
          description: Board dependencies could not be constructed; every block is null with reason board_deps_failed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EngineBoardEnvelope'
      tags:
      - Engines
  /api/engines/fall-warning-8h/{symbol}:
    get:
      summary: Fall warning (8h) board, one symbol
      operationId: getFallWarningsSymbol
      description: Public, read-only. Observation, not advice. Numbers are served from the published board and the judged record; nothing is filled in when absent.
      parameters:
      - name: symbol
        in: path
        required: true
        description: Instrument symbol (case-insensitive).
        schema:
          type: string
      responses:
        '200':
          description: Board envelope (status ok or partial; partial names the block that timed out or failed).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EngineBoardEnvelope'
        '404':
          description: Engine not in the roster (status unavailable; a hyphenated key whose underscore form exists is named in roster.reason).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EngineBoardEnvelope'
        '503':
          description: Board dependencies could not be constructed; every block is null with reason board_deps_failed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EngineBoardEnvelope'
      tags:
      - Engines
components:
  schemas:
    EngineBoardEnvelope:
      type: object
      description: 'Engine board envelope. Every block is {value, reason}: a null value always carries a reason (for example engine_not_in_roster, board_missing:engine_off_or_not_published, symbol_not_evaluated, no_judged_rows_yet, read_timeout:<ms>ms, read_failed:<code>, board_deps_failed). record.strata holds the engine''s own judged strata only; record.withheldOnly is present whenever record.strata.value is, and is true when every own stratum is withheld.'
      required:
      - status
      - engine
      - asOf
      - dataState
      - roster
      - board
      - record
      properties:
        status:
          type: string
          enum:
          - ok
          - partial
          - unavailable
        engine:
          type: string
        asOf:
          type: string
          format: date-time
        dataState:
          type: string
        roster:
          type: object
          description: 'Reason-coded null: value is the engine''s roster entry, or null with a reason saying why it is absent.'
          required:
          - value
          properties:
            value:
              type:
              - object
              - 'null'
            reason:
              type: string
        board:
          type: object
          description: 'Reason-coded null: value is the latest published board, or null with a reason saying why it is absent.'
          required:
          - value
          properties:
            value:
              type:
              - object
              - 'null'
              properties:
                symbols:
                  type: object
                  description: Per-symbol entries; on the market-wide read, the top `limit` by p descending.
                symbols_total:
                  type: integer
                  description: Pre-slice symbol count (market-wide read only).
                standing:
                  type: array
                  items:
                    type: object
                top:
                  type: array
                  items:
                    type: object
            reason:
              type: string
        symbol:
          type: object
          description: 'Reason-coded null: value is this symbol''s board entry (symbol read only), or null with a reason saying why it is absent.'
          required:
          - value
          properties:
            value:
              type:
              - object
              - 'null'
            reason:
              type: string
        record:
          type: object
          properties:
            strata:
              type: object
              description: 'Reason-coded null: value is the engine''s own judged strata, or null with a reason saying why it is absent.'
              required:
              - value
              properties:
                value:
                  type:
                  - array
                  - 'null'
                  items:
                    type: object
                reason:
                  type: string
            grade:
              type: object
              description: 'Reason-coded null: value is the engine''s measured verification grade, or null with a reason saying why it is absent.'
              required:
              - value
              properties:
                value:
                  type:
                  - object
                  - 'null'
                reason:
                  type: string
            withheldOnly:
              type: boolean
        boardAgeSeconds:
          type:
          - number
          - 'null'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: Firebase ID token (logged-in user) for billing and portfolio endpoints.