Eigenpal Models API

List text, vision, and OCR models configured for the current tenant environment. This is a catalog inventory, not a live provider health probe.

Operations 2

GET /v1/models List configured models #
GET /v1/parsing/readiness Inspect document parsing configuration #

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/eigenpal:eigenpal-models-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

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

eigenpal-models-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Eigenpal Models API
  version: 1.0.0
  description: Public REST API for inspecting automations, starting and monitoring runs, managing files, collecting human reviews, and running evaluations.
  contact:
    name: Eigenpal
    url: https://eigenpal.com
  license:
    name: Apache-2.0
    url: https://www.apache.org/licenses/LICENSE-2.0
servers:
- url: https://api.eigenpal.com
  description: Production (canonical API hostname)
security:
- bearerAuth: []
tags:
- name: Models
  description: List text, vision, and OCR models configured for the current tenant environment. This is a catalog inventory, not a live provider health probe.
paths:
  /v1/models:
    get:
      operationId: models.list
      summary: List configured models
      description: 'List text, vision, and OCR models configured for this tenant''s environment from the workspace model catalog. This is a cheap read-only inventory: it does not call providers. `health` is `configured` or `unconfigured` from local credentials, never a live probe. Secrets and provider endpoints are never returned.'
      tags:
      - Models
      parameters:
      - in: query
        name: capability
        schema:
          description: Return only models that support this capability (`text`, `vision`, or `ocr`).
          type: string
          enum:
          - text
          - vision
          - ocr
        description: Return only models that support this capability (`text`, `vision`, or `ocr`).
      responses:
        '200':
          description: Configured models
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListModelsResponse'
        '400':
          description: Validation error. Request shape did not match the spec.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorEnvelope'
        '401':
          description: Missing or invalid API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorEnvelope'
        '403':
          description: API key lacks required scope
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorEnvelope'
        '404':
          description: Resource not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorEnvelope'
        '413':
          description: Payload too large. Upload exceeded the per-request size cap.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorEnvelope'
        '429':
          description: Rate limit exceeded
          headers:
            Retry-After:
              description: Seconds until the next request may succeed
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorEnvelope'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorEnvelope'
        '503':
          description: Rate-limit accounting is temporarily unavailable. The request was not processed; retry.
          headers:
            Retry-After:
              description: Seconds until the next request may succeed
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorEnvelope'
  /v1/parsing/readiness:
    get:
      operationId: models.parserReadiness
      summary: Inspect document parsing configuration
      description: Read deployment-approved OCR/vision defaults and configuration readiness for ai.parse-v2. Does not probe live providers or worker native binaries. Run document smoke tests to verify live readiness.
      tags:
      - Models
      responses:
        '200':
          description: Parsing configuration readiness
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ParsingReadiness'
        '400':
          description: Validation error. Request shape did not match the spec.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorEnvelope'
        '401':
          description: Missing or invalid API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorEnvelope'
        '403':
          description: API key lacks required scope
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorEnvelope'
        '404':
          description: Resource not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorEnvelope'
        '413':
          description: Payload too large. Upload exceeded the per-request size cap.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorEnvelope'
        '429':
          description: Rate limit exceeded
          headers:
            Retry-After:
              description: Seconds until the next request may succeed
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorEnvelope'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorEnvelope'
        '503':
          description: Rate-limit accounting is temporarily unavailable. The request was not processed; retry.
          headers:
            Retry-After:
              description: Seconds until the next request may succeed
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorEnvelope'
components:
  schemas:
    ApiErrorEnvelope:
      type: object
      properties:
        issues:
          type: array
          items:
            $ref: '#/components/schemas/ApiErrorIssue'
        requestId:
          type: string
          description: Request id echoed via the x-request-id header
        hint:
          description: Suggested fix for known error patterns
          type: string
        docsUrl:
          description: Link to relevant docs
          type: string
        conflictingWorkflowId:
          description: Present on 409 workflow_name_conflict responses. Id of the workflow that already owns the requested name.
          type: string
      required:
      - issues
      - requestId
      additionalProperties: false
    ApiErrorIssue:
      type: object
      properties:
        field:
          type: string
          description: JSON path of the offending field, or "<root>"
        message:
          type: string
          description: Human-readable error message
        code:
          type: string
          description: Machine-readable error code (e.g. invalid_value, not_found, api_trigger_disabled, manual_trigger_disabled)
        severity:
          type: string
          enum:
          - error
          - warning
          description: Issue severity
      required:
      - field
      - message
      - code
      - severity
      additionalProperties: false
    PublicModel:
      type: object
      properties:
        id:
          type: string
        kind:
          type: string
          enum:
          - llm
          - ocr
        provider:
          type: string
        label:
          type: string
        capabilities:
          minItems: 1
          type: array
          items:
            type: string
            enum:
            - text
            - vision
            - ocr
        configured:
          type: boolean
        available:
          type: boolean
        health:
          type: string
          enum:
          - configured
          - unconfigured
          - unknown
          description: 'Configuration state only: `configured` means credentials are present in this environment; `unconfigured` means the catalog entry exists but credentials are missing. This list does not probe live providers, so it never reports healthy/degraded/outage. `unknown` is reserved and is not emitted by this endpoint.'
        defaultFor:
          type: array
          items:
            type: string
            enum:
            - text
            - vision
            - ocr
        location:
          type: string
          enum:
          - local
          - hosted
          description: '`local` means on-prem / no cloud provider egress (`local: true` or tesseract). `hosted` means the provider is a cloud API. Endpoints are never returned.'
        limits:
          $ref: '#/components/schemas/PublicModelLimits'
        cost:
          description: Static Eigenpal credit rates when known without a live vendor catalog. Omitted for OpenParser OCR and for LLMs (token prices are not part of this catalog).
          $ref: '#/components/schemas/PublicModelCost'
        aliases:
          type: array
          items:
            type: string
        tags:
          type: array
          items:
            type: string
        capabilityRank:
          description: Optional picker rank. Higher is more capable. Omitted on catalog rows that do not set it. Does not change role defaults.
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
      required:
      - id
      - kind
      - provider
      - label
      - capabilities
      - configured
      - available
      - health
      - defaultFor
      - location
      - aliases
      - tags
      additionalProperties: false
    ListModelsResponse:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/PublicModel'
        total:
          type: integer
          minimum: 0
          maximum: 9007199254740991
      required:
      - data
      - total
      additionalProperties: false
    PublicModelLimits:
      type: object
      properties:
        requestTimeoutSeconds:
          type: integer
          exclusiveMinimum: 0
          maximum: 9007199254740991
        maxConcurrentRequests:
          type: integer
          exclusiveMinimum: 0
          maximum: 9007199254740991
      additionalProperties: false
    ParsingReadiness:
      type: object
      properties:
        stepType:
          type: string
          const: ai.parse-v2
        imageReading:
          type: string
          enum:
          - configured
          - unconfigured
        providers:
          type: object
          properties:
            ocr:
              anyOf:
              - type: string
              - type: 'null'
            vision:
              anyOf:
              - type: string
              - type: 'null'
          required:
          - ocr
          - vision
          additionalProperties: false
        nativeExtraction:
          type: string
          const: requires-worker-probe
        liveProbe:
          type: boolean
          const: false
        warnings:
          type: array
          items:
            type: string
      required:
      - stepType
      - imageReading
      - providers
      - nativeExtraction
      - liveProbe
      - warnings
      additionalProperties: false
    PublicModelCost:
      type: object
      properties:
        creditsPerPage:
          type: number
          minimum: 0
        unit:
          type: string
          const: credits
      required:
      - unit
      additionalProperties: false
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: 'API key issued from Settings → API Keys. Pass as `Authorization: Bearer <key>`.'
x-provenance:
  method: harvested
  publisher: Eigenpal
  source: https://docs.eigenpal.com/api-reference/openapi.json
  note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json);
    stamped by stamp-openapi-provenance.py (roadmap#793)