Ezel API

Ezel API as documented publicly: 26 operations. Contract generated from the documentation by API Evangelist (2026-11-07); not the provider's own document.

GitHub OpenAPI

Operations 26

0 of 26 operations are conformant: apis.io called them with no credentials and the responses matched this contract; 1 more answered but could not be checked against a schema. Checked 2026-11-12. how this works · status file

POST /api/v1/ask POST /api/v1/ask #
GET /api/v1/matters GET /api/v1/matters #
POST /api/v1/matters POST /api/v1/matters #
POST /api/v1/matters/{matterId}/files Upload file #
GET /api/v1/review-tables/{tableId} Get review table #
GET /api/v1/usage Usage #
GET /api/v1/whoami GET /api/v1/whoami #
POST /ask Ask a general U.S. legal question. #
GET /cases/{clusterId} Fetch the full opinion text and metadata for a case. #
GET /matters List the user's matters, pinned first, each with a document count. #
POST /matters Create a matter. #
DELETE /matters/{matterId} Delete a matter. #
GET /matters/{matterId} Get one matter with its document count. #
POST /matters/{matterId}/ask Ask a question answered only from the documents in a specific matter. #
GET /matters/{matterId}/files List the documents in a matter, newest first. #
POST /matters/{matterId}/files Upload a document as multipart/form-data. #
DELETE /matters/{matterId}/files/{fileId} Remove a file from a matter and delete it from storage. #
POST /matters/{matterId}/review-tables Create a review table: a grid of documents (rows) by questions (columns), where each cell is an AI-extracted answer with a cited quote and page. #
POST /matters/{matterId}/search Keyword or regex search across a matter's documents, returning page-level snippets. #
GET /mcp GET /mcp observed #
GET /review-tables/{tableId} Return the table with its columns, rows, and cells. #
POST /review-tables/{tableId}/run Fill any pending cells and retry errored ones. #
GET /usage Storage usage and current message-limit status. #
GET /whoami Verify a key and return the account behind it. #

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/ezel-ai:ezel-ai-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

ezel-ai-openapi-generated.yml Raw ↑
openapi: 3.1.0
info:
  title: Ezel API
  version: '2026-11-07'
  description: 'GENERATED FROM DOCUMENTATION by API Evangelist on 2026-11-07: 26 operation(s) read from 3 public documentation page(s) (each operation
    names its page in x-source). This is not the provider''s published contract; Ezel has published no machine-readable contract that the pipeline
    could find. Engine: oss.'
  x-evidence-tiers:
    code-example: 15
    documentation: 11
    pages-with-code: 2
    pages-read: 3
  x-generated-from: documentation
  x-provenance: generated
  x-authored-by: API Evangelist
  x-generated: '2026-11-07'
  x-generator: generate-contract-from-docs.py
  x-engine: oss
  x-sources:
  - https://ezel.ai/docs
  - https://ezel.ai/llms-full.txt
  - https://ezel.ai/llms.txt
servers:
- url: https://app.ezel.ai
paths:
  /api/v1/ask:
    post:
      operationId: post_api_v1_ask
      tags:
      - Api
      summary: POST /api/v1/ask
      x-source: https://ezel.ai/docs
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostApiV1AskRequest'
      responses:
        '201':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostApiV1AskResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl https://app.ezel.ai/api/v1/ask  -H \"Authorization: Bearer ezel_live_...\"  -H \"Content-Type: application/json\"  -d '{\"\
          question\":\"What is the holding of Gideon v. Wainwright?\"}' \n 200 \n {\n \"answer\" : \"Gideon v. Wainwright held that...\" ,\n \"\
          citations\" : [],\n \"sources\" : [],\n \"conversation_id\" : \"87a96194-...\" \n} \n POST /api/v1/matters/{matter_id}/ask \n Ask a\
          \ matter \n Ask a question answered from"
  /api/v1/caselaw/search:
    get:
      operationId: get_api_v1_caselaw_search
      tags:
      - Api
      summary: GET /api/v1/caselaw/search
      x-source: https://ezel.ai/docs
      parameters:
      - name: query
        in: query
        required: false
        schema:
          type: string
      responses:
        '200':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetApiV1CaselawSearchResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl \"https://app.ezel.ai/api/v1/caselaw/search?query=right+to+counsel\"  -H \"Authorization: Bearer ezel_live_...\" \n 200\
          \ \n {\n \"cases\" : [{\n \"case_name\" : \"Gideon v. Wainwright\" ,\n \"court\" : \"Supreme Court of the United States\" ,\n \"date_filed\"\
          \ : \"1963-03-18\" ,\n \"citation\" : \"372 U.S. 335\" ,\n \"cluster_id\" : 8954562\n }],\n \"count\" : 7\n} \n GET /api/v1/cases/{cluster_id}\
          \ \n Get a case \n Fetches the full o"
  /api/v1/matters:
    get:
      operationId: get_api_v1_matters
      tags:
      - Api
      summary: GET /api/v1/matters
      x-source: https://ezel.ai/docs
      responses:
        '200':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetApiV1MattersResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl https://app.ezel.ai/api/v1/matters  -H \"Authorization: Bearer ezel_live_...\" \n 200 \n {\n \"matters\" : [{\n \"id\"\
          \ : \"2a951d7c-...\" ,\n \"name\" : \"Acme acquisition\" ,\n \"client_name\" : \"Acme Corp\" ,\n \"document_count\" : 6\n }],\n \"total\"\
          \ : 1\n} \n POST /api/v1/matters \n Create matter \n Creates a new matter. The name must be unique within your account. \n Scopes \n\
          \ write \n Body \n name \n string required \n The "
    post:
      operationId: post_api_v1_matters
      tags:
      - Api
      summary: POST /api/v1/matters
      x-source: https://ezel.ai/docs
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostApiV1MattersRequest'
      responses:
        '201':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostApiV1MattersResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl https://app.ezel.ai/api/v1/matters  -H \"Authorization: Bearer ezel_live_...\"  -H \"Content-Type: application/json\" \
          \ -d '{\"name\":\"Acme acquisition\",\"client_name\":\"Acme Corp\"}' \n 201 \n { \"matter\" : { \"id\" : \"7d51cbad-...\" , \"name\"\
          \ : \"Acme acquisition\" , \"document_count\" : 0 } } \n GET /api/v1/matters/{matter_id} \n Get matter \n Returns a single matter with\
          \ its document count. \n Scopes \n read \n Pat"
  /api/v1/matters/{matterId}/files:
    post:
      operationId: post_api_v1_matters_matterId_files
      tags:
      - Api
      summary: Upload file
      description: Uploads a document into a matter as multipart/form-data.
      x-source: https://ezel.ai/docs
      parameters:
      - name: matterId
        in: path
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostApiV1MattersMatteridFilesRequest'
      responses:
        '201':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostApiV1MattersMatteridFilesResponse'
      x-evidence:
        kind: documentation
  /api/v1/review-tables/{tableId}:
    get:
      operationId: get_api_v1_review_tables_tableId
      tags:
      - Api
      summary: Get review table
      description: Returns the table with its columns, rows, and cells. Each cell has a status and when done, the extracted value plus a cited
        quote and page.
      x-source: https://ezel.ai/docs
      parameters:
      - name: tableId
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetApiV1ReviewTablesTableidResponse'
      x-evidence:
        kind: documentation
  /api/v1/usage:
    get:
      operationId: get_api_v1_usage
      tags:
      - Api
      summary: Usage
      description: Returns the account's storage usage and current message-limit status.
      x-source: https://ezel.ai/docs
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetApiV1UsageResponse'
      x-evidence:
        kind: documentation
  /api/v1/whoami:
    get:
      operationId: get_api_v1_whoami
      tags:
      - Api
      summary: GET /api/v1/whoami
      x-source: https://ezel.ai/docs
      responses:
        '200':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetApiV1WhoamiResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: 'curl https://app.ezel.ai/api/v1/whoami  -H "Authorization: Bearer ezel_live_..." '
  /ask:
    post:
      operationId: post_ask
      tags:
      - Ask
      summary: Ask a general U.S. legal question.
      x-source: https://ezel.ai/llms-full.txt
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostAskRequest'
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostAskResponse'
      x-evidence:
        kind: documentation
  /caselaw/search:
    get:
      operationId: get_caselaw_search
      tags:
      - Caselaw
      summary: Search real, citable U.S. case law (via CourtListener), ranked by relevance.
      x-source: https://ezel.ai/llms-full.txt
      parameters:
      - name: query
        in: query
        required: true
        schema:
          type: string
        description: Search query string
      - name: jurisdiction
        in: query
        required: false
        schema:
          type: string
        description: Filter by jurisdiction
      - name: year_start
        in: query
        required: false
        schema:
          type: integer
        description: Filter by start year
      - name: year_end
        in: query
        required: false
        schema:
          type: integer
        description: Filter by end year
      - name: published_only
        in: query
        required: false
        schema:
          type: boolean
        description: Only include published opinions
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetCaselawSearchResponse'
      x-evidence:
        kind: documentation
  /cases/{clusterId}:
    get:
      operationId: get_cases_clusterId
      tags:
      - Cases
      summary: Fetch the full opinion text and metadata for a case.
      x-source: https://ezel.ai/llms-full.txt
      parameters:
      - name: clusterId
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetCasesClusteridResponse'
      x-evidence:
        kind: documentation
  /matters:
    get:
      operationId: get_matters
      tags:
      - Matters
      summary: List the user's matters, pinned first, each with a document count.
      x-source: https://ezel.ai/llms-full.txt
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetMattersResponse'
      x-evidence:
        kind: documentation
    post:
      operationId: post_matters
      tags:
      - Matters
      summary: Create a matter.
      x-source: https://ezel.ai/llms-full.txt
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostMattersRequest'
      responses:
        '201':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostMattersResponse'
      x-evidence:
        kind: documentation
  /matters/{matterId}:
    delete:
      operationId: delete_matters_matterId
      tags:
      - Matters
      summary: Delete a matter.
      x-source: https://ezel.ai/llms-full.txt
      parameters:
      - name: matterId
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteMattersMatteridResponse'
      x-evidence:
        kind: documentation
    get:
      operationId: get_matters_matterId
      tags:
      - Matters
      summary: Get one matter with its document count.
      x-source: https://ezel.ai/llms-full.txt
      parameters:
      - name: matterId
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /matters/{matterId}/ask:
    post:
      operationId: post_matters_matterId_ask
      tags:
      - Matters
      summary: Ask a question answered only from the documents in a specific matter.
      x-source: https://ezel.ai/llms-full.txt
      parameters:
      - name: matterId
        in: path
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostMattersMatteridAskRequest'
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostMattersMatteridAskResponse'
      x-evidence:
        kind: documentation
  /matters/{matterId}/files:
    get:
      operationId: get_matters_matterId_files
      tags:
      - Matters
      summary: List the documents in a matter, newest first.
      x-source: https://ezel.ai/llms-full.txt
      parameters:
      - name: matterId
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
    post:
      operationId: post_matters_matterId_files
      tags:
      - Matters
      summary: Upload a document as multipart/form-data.
      x-source: https://ezel.ai/llms-full.txt
      parameters:
      - name: matterId
        in: path
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostMattersMatteridFilesRequest'
      responses:
        '201':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostMattersMatteridFilesResponse'
      x-evidence:
        kind: documentation
  /matters/{matterId}/files/{fileId}:
    delete:
      operationId: delete_matters_matterId_files_fileId
      tags:
      - Matters
      summary: Remove a file from a matter and delete it from storage.
      x-source: https://ezel.ai/llms-full.txt
      parameters:
      - name: matterId
        in: path
        required: true
        schema:
          type: string
      - name: fileId
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /matters/{matterId}/review-tables:
    post:
      operationId: post_matters_matterId_review_tables
      tags:
      - Matters
      summary: 'Create a review table: a grid of documents (rows) by questions (columns), where each cell is an AI-extracted answer with a cited
        quote and page.'
      x-source: https://ezel.ai/llms-full.txt
      parameters:
      - name: matterId
        in: path
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostMattersMatteridReviewTablesRequest'
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /matters/{matterId}/search:
    post:
      operationId: post_matters_matterId_search
      tags:
      - Matters
      summary: Keyword or regex search across a matter's documents, returning page-level snippets.
      x-source: https://ezel.ai/llms-full.txt
      parameters:
      - name: matterId
        in: path
        required: true
        schema:
          type: string
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostMattersMatteridSearchRequest'
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostMattersMatteridSearchResponse'
      x-evidence:
        kind: documentation
  /mcp:
    get:
      operationId: get_mcp
      tags:
      - Mcp
      summary: GET /mcp
      x-source: https://ezel.ai/docs
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: httpie
        snippet: http https://app.ezel.ai/mcp \
  /review-tables/{tableId}:
    get:
      operationId: get_review_tables_tableId
      tags:
      - Review Tables
      summary: Return the table with its columns, rows, and cells.
      x-source: https://ezel.ai/llms-full.txt
      parameters:
      - name: tableId
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetReviewTablesTableidResponse'
      x-evidence:
        kind: documentation
  /review-tables/{tableId}/run:
    post:
      operationId: post_review_tables_tableId_run
      tags:
      - Review Tables
      summary: Fill any pending cells and retry errored ones.
      x-source: https://ezel.ai/llms-full.txt
      parameters:
      - name: tableId
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /usage:
    get:
      operationId: get_usage
      tags:
      - Usage
      summary: Storage usage and current message-limit status.
      x-source: https://ezel.ai/llms-full.txt
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetUsageResponse'
      x-evidence:
        kind: documentation
  /whoami:
    get:
      operationId: get_whoami
      tags:
      - Whoami
      summary: Verify a key and return the account behind it.
      x-source: https://ezel.ai/llms-full.txt
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetWhoamiResponse'
      x-evidence:
        kind: documentation
components:
  schemas:
    PostApiV1AskRequest:
      type: object
      properties:
        question:
          type: string
    PostApiV1AskResponse:
      type: object
      properties:
        answer:
          type: string
        citations:
          type: array
          items: {}
        sources:
          type: array
          items: {}
        conversation_id:
          type: string
    GetApiV1CaselawSearchResponse:
      type: object
      properties:
        cases:
          type: array
          items:
            type: object
            properties:
              case_name:
                type: string
              court:
                type: string
              date_filed:
                type: string
                format: date
              citation:
                type: string
              cluster_id:
                type: integer
        count:
          type: integer
    GetApiV1MattersResponse:
      type: object
      properties:
        matters:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
              name:
                type: string
              client_name:
                type: string
              document_count:
                type: integer
        total:
          type: integer
    PostApiV1MattersRequest:
      type: object
      properties:
        name:
          type: string
        client_name:
          type: string
    PostApiV1MattersResponse:
      type: object
      properties:
        matter:
          type: object
          properties:
            id:
              type: string
            name:
              type: string
            document_count:
              type: integer
    PostApiV1MattersMatteridFilesRequest:
      type: object
      properties:
        file:
          type: string
          description: The document to upload.
      required:
      - file
    PostApiV1MattersMatteridFilesResponse:
      type: object
      properties:
        file:
          type: object
          description: Uploaded file metadata.
        file.id:
          type: string
          description: File identifier.
        file.filename:
          type: string
          description: Original filename.
        file.file_size:
          type: integer
          description: Size of the file in bytes.
    GetApiV1ReviewTablesTableidResponse:
      type: object
      properties:
        table:
          type: object
          description: Contains id and status of the table.
        columns:
          type: array
          description: Array of column definitions.
        rows:
          type: array
          description: Array of row information (e.g., filename).
        cells:
          type: array
          description: Array of cell objects with status, value, etc.
    GetApiV1UsageResponse:
      type: object
      properties:
        plan:
          type: string
          description: Account plan.
        storage:
          type: object
          description: Storage usage details.
        storage.used_bytes:
          type: integer
          description: Bytes used.
        storage.limit_bytes:
          type: integer
          description: Maximum bytes allowed.
        storage.used_percent:
          type: number
          description: Percentage of storage used.
        messages:
          type: object
          description: Message limit status.
        messages.within_limits:
          type: boolean
          description: Whether within limits.
        messages.status:
          type: string
          description: Status message.
        messages.reset_at:
          type: string
          description: Reset time if applicable.
    GetApiV1WhoamiResponse:
      type: object
      properties:
        user_id:
          type: string
        full_name:
          type: string
        plan:
          type: string
        scopes:
          type: array
          items:
            type: string
        enabled_features:
          type: array
          items:
            type: string
    PostAskRequest:
      type: object
      properties:
        question:
          type: string
          description: Legal question
        stream:
          type: boolean
          description: Whether to stream the answer
      required:
      - question
    PostAskResponse:
      type: object
      properties:
        answer:
          type: string
        citations:
          type: array
        sources:
          type: array
        conversation_id:
          type: string
    GetCaselawSearchResponse:
      type: object
      properties:
        cases:
          type: array
          description: List of matching cases
        count:
          type: integer
          description: Total number of matches
    GetCasesClusteridResponse:
      type: object
      properties:
        case_name:
          type: string
        court:
          type: string
        citation:
          type: string
        plain_text:
          type: string
          description: Full opinion text
        truncated:
          type: boolean
          description: Whether the opinion was truncated
    GetMattersResponse:
      type: object
      properties:
        matters:
          type: array
        matters.id:
          type: string
        matters.name:
          type: string
        matters.client_name:
          type: string
        matters.document_count:
          type: integer
        total:
          type: integer
    PostMattersRequest:
      type: object
      properties:
        name:
          type: string
          description: The matter name, required
        client_name:
          type: string
        description:
          type: string
        pinned:
          type: boolean
      required:
      - name
    PostMattersResponse:
      type: object
      properties:
        matter:
          type: object
        matter.id:
          type: string
        matter.name:
          type: string
        matter.document_count:
          type: integer
    DeleteMattersMatteridResponse:
      type: object
      properties:
        deleted:
          type: boolean
        released_documents:
          type: integer
        released_chats:
          type: integer
    PostMattersMatteridAskRequest:
      type: object
      properties:
        question:
          type: string
          description: Legal question
        stream:
          type: boolean
          description: Whether to stream the answer
      required:
      - question
    PostMattersMatteridAskResponse:
      type: object
      properties:
        answer:
          type: string
        citations:
          type: array
        sources:
          type: array
        conversation_id:
          type: string
    PostMattersMatteridFilesRequest:
      type: object
      properties:
        file:
          type: string
          description: File to upload
      required:
      - file
    PostMattersMatteridFilesResponse:
      type: object
      properties:
        file:
          type: object
        file.id:
          type: string
        file.filename:
          type: string
        file.file_size:
          type: integer
    PostMattersMatteridReviewTablesRequest:
      type: object
      properties:
        columns:
          type: array
          description: Array of column definitions
        all_documents:
          type: boolean
          description: Add every document in the matter as a row
        document_ids:
          type: array
          description: Specific document IDs to include as rows
        name:
          type: string
          description: Optional table name
        run:
          type: boolean
          description: Whether to start filling the table immediately
      required:
      - columns
    PostMattersMatteridSearchRequest:
      type: object
      properties:
        terms:
          type: string
          description: Search terms
        regex:
          type: string
          description: POSIX regex, case-insensitive
        match_all:
          type: boolean
          description: AND semantics
        count_only:
          type: boolean
          description: Return only counts
        max_results:
          type: integer
          description: Maximum results to return
    PostMattersMatteridSearchResponse:
      type: object
      properties:
        results:
          type: array
        results.document_id:
          type: string
        results.filename:
          type: string
        results.page:
          type: integer
        results.snippet:
          type: string
    GetReviewTablesTableidResponse:
      type: object
      properties:
        table:
          type: object
          description: Metadata about the table
        columns:
          type: array
          description: Column definitions
        rows:
          type: array
          description: Rows representing documents
        cells:
          type: array
          description: Cell values and statuses
    GetUsageResponse:
      type: object
      properties:
        plan:
          type: string
        storage:
          type: object
        storage.used_bytes:
          type: integer
        storage.limit_bytes:
          type: integer
        storage.used_percent:
          type: number
        messages:
          type: object
        messages.within_limits:
          type: boolean
        messages.status:
          type: string
        messages.reset_at:
          type: string
    GetWhoamiResponse:
      type: object
      properties:
        user_id:
          type: string
        full_name:
          type: string
        plan:
          type: string
        scopes:
          type: array
        enabled_features:
          type: array
  securitySchemes:
    bearer:
      type: http
      scheme: bearer
security:
- bearer: []
tags:
- name: Api
- name: Ask
- name: Caselaw
- name: Cases
- name: Matters
- name: Mcp
- name: Review Tables
- name: Usage
- name: Whoami