Monid Controls API

The Controls API from Monid — 6 operation(s) for controls.

Operations 8

GET /v1/controls/workspace/budgets List workspace budget controls
GET /v1/controls/workspace/budgets/{budgetControlId} Get a workspace budget control
PATCH /v1/controls/workspace/budgets/{budgetControlId} Update a workspace budget control
GET /v1/controls/workspace/budgets/{budgetControlId}/runs List runs linked to a budget control
GET /v1/controls/workspace/run-caps List workspace run cap controls
GET /v1/controls/workspace/run-caps/{runCapControlId} Get a workspace run cap control
PATCH /v1/controls/workspace/run-caps/{runCapControlId} Update a workspace run cap control
GET /v1/controls/workspace/run-caps/{runCapControlId}/runs List runs linked to a run cap control

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/monid-controls-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

monid-controls-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Monid Controls API
  version: 0.1.0
  description: Agentic payment platform for data — agents discover and buy data on demand. Authenticated `/v1/*` routes accept a Monid API key or Clerk JWT as a Bearer token. All errors return `{ code, message }`. List endpoints use cursor pagination; consult each operation schema for its last-page cursor encoding.
servers:
- url: https://api.monid.ai
  description: Production
- url: https://monid.ai
  description: Public registry alias (public/v1 only)
tags:
- name: Controls
paths:
  /v1/controls/workspace/budgets:
    get:
      tags:
      - Controls
      summary: List workspace budget controls
      description: Cursor-paginated list of the workspace's budget controls with live usage counters.
      security:
      - Bearer: []
      parameters:
      - schema:
          type: integer
          exclusiveMinimum: 0
          maximum: 100
          description: Max items per page (server-side cap applies).
          example: 25
        required: false
        description: Max items per page (server-side cap applies).
        name: limit
        in: query
      - schema:
          type: string
          description: Cursor returned by the previous page.
        required: false
        description: Cursor returned by the previous page.
        name: cursor
        in: query
      responses:
        '200':
          description: Budget controls page
          content:
            application/json:
              schema:
                type: object
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/WorkspaceBudget'
                  cursor:
                    type:
                    - string
                    - 'null'
                    description: Opaque cursor for the next page. Null on the last page.
                required:
                - items
                - cursor
        '400':
          description: Bad request — input failed validation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized — missing or invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden — caller has no workspace or no access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/controls/workspace/budgets/{budgetControlId}:
    get:
      tags:
      - Controls
      summary: Get a workspace budget control
      security:
      - Bearer: []
      parameters:
      - schema:
          type: string
          description: Budget control ID (ULID).
          example: 01JC2Z0A9V8Q4R6T8Y0B2D4F6H
        required: true
        description: Budget control ID (ULID).
        name: budgetControlId
        in: path
      responses:
        '200':
          description: Budget control
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkspaceBudget'
        '400':
          description: Bad request — input failed validation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized — missing or invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden — caller has no workspace or no access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Budget control not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    patch:
      tags:
      - Controls
      summary: Update a workspace budget control
      description: Patch limitAmount and/or status. At least one field is required.
      security:
      - Bearer: []
      parameters:
      - schema:
          type: string
          description: Budget control ID (ULID).
          example: 01JC2Z0A9V8Q4R6T8Y0B2D4F6H
        required: true
        description: Budget control ID (ULID).
        name: budgetControlId
        in: path
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WorkspaceBudgetPatchRequest'
      responses:
        '200':
          description: Updated budget control
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkspaceBudget'
        '400':
          description: Bad request — input failed validation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized — missing or invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden — caller has no workspace or no access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Budget control not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/controls/workspace/budgets/{budgetControlId}/runs:
    get:
      tags:
      - Controls
      summary: List runs linked to a budget control
      description: Cursor-paginated list of run junctions for a budget control. Defaults to the current time window when windowStart is omitted.
      security:
      - Bearer: []
      parameters:
      - schema:
          type: string
          description: Budget control ID (ULID).
          example: 01JC2Z0A9V8Q4R6T8Y0B2D4F6H
        required: true
        description: Budget control ID (ULID).
        name: budgetControlId
        in: path
      - schema:
          type: string
          description: ISO 8601 timestamp selecting a specific window. Defaults to the current window when omitted.
          example: '2026-07-01T00:00:00.000Z'
        required: false
        description: ISO 8601 timestamp selecting a specific window. Defaults to the current window when omitted.
        name: windowStart
        in: query
      - schema:
          type: string
          enum:
          - HELD
          - SETTLED
          - RELEASED
          description: Filter runs by junction status.
        required: false
        description: Filter runs by junction status.
        name: status
        in: query
      - schema:
          type: integer
          exclusiveMinimum: 0
          maximum: 100
          description: Max items per page (server-side cap applies).
          example: 25
        required: false
        description: Max items per page (server-side cap applies).
        name: limit
        in: query
      - schema:
          type: string
          description: Cursor returned by the previous page.
        required: false
        description: Cursor returned by the previous page.
        name: cursor
        in: query
      responses:
        '200':
          description: Budget control runs page
          content:
            application/json:
              schema:
                type: object
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/WorkspaceBudgetRun'
                  cursor:
                    type:
                    - string
                    - 'null'
                    description: Opaque cursor for the next page. Null on the last page.
                required:
                - items
                - cursor
        '400':
          description: Bad request — input failed validation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized — missing or invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden — caller has no workspace or no access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Budget control not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/controls/workspace/run-caps:
    get:
      tags:
      - Controls
      summary: List workspace run cap controls
      description: Cursor-paginated list of the workspace's per-execution spending caps.
      security:
      - Bearer: []
      parameters:
      - schema:
          type: integer
          exclusiveMinimum: 0
          maximum: 100
          description: Max items per page (server-side cap applies).
          example: 25
        required: false
        description: Max items per page (server-side cap applies).
        name: limit
        in: query
      - schema:
          type: string
          description: Cursor returned by the previous page.
        required: false
        description: Cursor returned by the previous page.
        name: cursor
        in: query
      responses:
        '200':
          description: Run cap controls page
          content:
            application/json:
              schema:
                type: object
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/WorkspaceRunCap'
                  cursor:
                    type:
                    - string
                    - 'null'
                    description: Opaque cursor for the next page. Null on the last page.
                required:
                - items
                - cursor
        '400':
          description: Bad request — input failed validation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized — missing or invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden — caller has no workspace or no access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/controls/workspace/run-caps/{runCapControlId}:
    get:
      tags:
      - Controls
      summary: Get a workspace run cap control
      security:
      - Bearer: []
      parameters:
      - schema:
          type: string
          description: Run cap control ID (ULID).
          example: 01JC2Z0A9V8Q4R6T8Y0B2D4F6H
        required: true
        description: Run cap control ID (ULID).
        name: runCapControlId
        in: path
      responses:
        '200':
          description: Run cap control
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkspaceRunCap'
        '400':
          description: Bad request — input failed validation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized — missing or invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden — caller has no workspace or no access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Run cap control not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    patch:
      tags:
      - Controls
      summary: Update a workspace run cap control
      description: Patch limitAmount and/or status. At least one field is required.
      security:
      - Bearer: []
      parameters:
      - schema:
          type: string
          description: Run cap control ID (ULID).
          example: 01JC2Z0A9V8Q4R6T8Y0B2D4F6H
        required: true
        description: Run cap control ID (ULID).
        name: runCapControlId
        in: path
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WorkspaceRunCapPatchRequest'
      responses:
        '200':
          description: Updated run cap control
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkspaceRunCap'
        '400':
          description: Bad request — input failed validation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized — missing or invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden — caller has no workspace or no access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Run cap control not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/controls/workspace/run-caps/{runCapControlId}/runs:
    get:
      tags:
      - Controls
      summary: List runs linked to a run cap control
      description: Cursor-paginated list of run junctions for a run cap control.
      security:
      - Bearer: []
      parameters:
      - schema:
          type: string
          description: Run cap control ID (ULID).
          example: 01JC2Z0A9V8Q4R6T8Y0B2D4F6H
        required: true
        description: Run cap control ID (ULID).
        name: runCapControlId
        in: path
      - schema:
          type: string
          enum:
          - PASSED
          - BLOCKED
        required: false
        name: status
        in: query
      - schema:
          type: integer
          exclusiveMinimum: 0
          maximum: 100
          description: Max items per page (server-side cap applies).
          example: 25
        required: false
        description: Max items per page (server-side cap applies).
        name: limit
        in: query
      - schema:
          type: string
          description: Cursor returned by the previous page.
        required: false
        description: Cursor returned by the previous page.
        name: cursor
        in: query
      responses:
        '200':
          description: Run cap control runs page
          content:
            application/json:
              schema:
                type: object
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/WorkspaceRunCapRun'
                  cursor:
                    type:
                    - string
                    - 'null'
                    description: Opaque cursor for the next page. Null on the last page.
                required:
                - items
                - cursor
        '400':
          description: Bad request — input failed validation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized — missing or invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden — caller has no workspace or no access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Run cap control not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    Error:
      type: object
      properties:
        code:
          type: integer
          description: HTTP status code, duplicated in the body.
          example: 400
        message:
          type: string
          description: Human-readable error description.
          example: Bad Request
      required:
      - code
      - message
    WorkspaceRunCapRun:
      type: object
      properties:
        runCapControlId:
          type: string
        runId:
          type: string
          description: Run ID (ULID).
          example: 01JC2Z0A9V8Q4R6T8Y0B2D4F6H
        estimatedCost:
          type: number
          description: Estimated cost at check time, in dollars.
        currency:
          type: string
          enum:
          - USD
        snapshot:
          type: object
          properties:
            limitAmount:
              type: number
          required:
          - limitAmount
        status:
          type: string
          enum:
          - PASSED
          - BLOCKED
        createdAt:
          type: string
          format: date-time
      required:
      - runCapControlId
      - runId
      - estimatedCost
      - currency
      - snapshot
      - status
      - createdAt
    WorkspaceBudget:
      type: object
      properties:
        budgetControlId:
          type: string
          description: Budget control ID (ULID).
          example: 01JC2Z0A9V8Q4R6T8Y0B2D4F6H
        workspaceId:
          type: string
        period:
          type: string
          enum:
          - HOUR
          - DAY
          - WEEK
          - MONTH
        limitAmount:
          type: number
          description: Budget cap for the window, in dollars.
          example: 100
        spentAmount:
          type: number
          description: Settled spend in the current window, in dollars.
        heldAmount:
          type: number
          description: Outstanding holds for in-flight runs, in dollars.
        availableAmount:
          type: number
          description: limitAmount - spentAmount - heldAmount, in dollars.
        currency:
          type: string
          enum:
          - USD
        windowStart:
          type: string
          format: date-time
          description: ISO 8601 — which window the counters represent.
        status:
          type: string
          enum:
          - ACTIVE
          - PAUSED
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
      required:
      - budgetControlId
      - workspaceId
      - period
      - limitAmount
      - spentAmount
      - heldAmount
      - availableAmount
      - currency
      - windowStart
      - status
      - createdAt
      - updatedAt
    WorkspaceBudgetRun:
      type: object
      properties:
        budgetControlId:
          type: string
        runId:
          type: string
          description: Run ID (ULID).
          example: 01JC2Z0A9V8Q4R6T8Y0B2D4F6H
        holdAmount:
          type: number
          description: Estimated cost reserved at run start, in dollars.
        settledAmount:
          type:
          - number
          - 'null'
          description: Actual cost at settlement, in dollars. Null while HELD.
        currency:
          type: string
          enum:
          - USD
        status:
          type: string
          enum:
          - HELD
          - SETTLED
          - RELEASED
          - ABORTED
          - BLOCKED
        snapshot:
          type: object
          properties:
            period:
              type: string
              enum:
              - HOUR
              - DAY
              - WEEK
              - MONTH
            limitAmount:
              type: number
            windowStart:
              type: string
              format: date-time
          required:
          - period
          - limitAmount
          - windowStart
        createdAt:
          type: string
          format: date-time
        settledAt:
          type:
          - string
          - 'null'
          format: date-time
      required:
      - budgetControlId
      - runId
      - holdAmount
      - settledAmount
      - currency
      - status
      - snapshot
      - createdAt
      - settledAt
    WorkspaceRunCap:
      type: object
      properties:
        runCapControlId:
          type: string
          description: Run cap control ID (ULID).
          example: 01JC2Z0A9V8Q4R6T8Y0B2D4F6H
        workspaceId:
          type: string
        limitAmount:
          type: number
          description: Per-run spending cap, in dollars.
          example: 5
        currency:
          type: string
          enum:
          - USD
        status:
          type: string
          enum:
          - ACTIVE
          - PAUSED
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
      required:
      - runCapControlId
      - workspaceId
      - limitAmount
      - currency
      - status
      - createdAt
      - updatedAt
    WorkspaceBudgetPatchRequest:
      type: object
      properties:
        limitAmount:
          type: object
          properties:
            currency:
              type: string
              enum:
              - USD
            value:
              type: integer
              minimum: 0
            unit:
              type: string
              enum:
              - MICRO_DOLLAR
              - CENT
              - DOLLAR
          required:
          - currency
          - value
          - unit
        status:
          type: string
          enum:
          - ACTIVE
          - PAUSED
    WorkspaceRunCapPatchRequest:
      type: object
      properties:
        limitAmount:
          type: object
          properties:
            currency:
              type: string
              enum:
              - USD
            value:
              type: integer
              minimum: 0
            unit:
              type: string
              enum:
              - MICRO_DOLLAR
              - CENT
              - DOLLAR
          required:
          - currency
          - value
          - unit
        status:
          type: string
          enum:
          - ACTIVE
          - PAUSED
  securitySchemes:
    Bearer:
      type: http
      scheme: bearer
      description: 'Monid API key (`Authorization: Bearer mk_...`) or Clerk-issued JWT.'