Monid Resources API

The Resources API from Monid — 5 operation(s) for resources.

Operations 5

GET /v1/resources List resources
GET /v1/resources/{resourceId}/external/{kind} Get a resource's live external detail
GET /v1/resources/{resourceId}/events List a resource's lifecycle events
POST /v1/resources/{resourceId}/release Release a resource
GET /v1/resources/{resourceId} Get a resource

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-resources-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-resources-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Monid Resources 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: Resources
paths:
  /v1/resources:
    get:
      tags:
      - Resources
      summary: List resources
      description: Cursor-paginated list of the workspace's provider resources (durable, workspace-owned provider assets, e.g. phone numbers), newest first. Optional `provider`/`resourceType`/`state` filters (`resourceType` requires `provider`).
      security:
      - Bearer: []
      parameters:
      - schema:
          type: integer
          exclusiveMinimum: 0
          maximum: 100
          description: Max items per page (server-side cap applies).
        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
      - schema:
          type: string
          enum:
          - apify
          - pdl
          - opoint
          - tikhub
          - exa
          - minimax
          - bytedance
          - suzanne
          - akta
          - saperly
          - apollo
          - censusdata.xyz
          - defillama
          - elevenlabs
          description: Filter by provider slug (e.g. 'saperly').
        required: false
        description: Filter by provider slug (e.g. 'saperly').
        name: provider
        in: query
      - schema:
          type: string
          enum:
          - phone_number
          description: Filter by resource type — requires `provider` (store SK prefix is ordered).
        required: false
        description: Filter by resource type — requires `provider` (store SK prefix is ordered).
        name: resourceType
        in: query
      - schema:
          type: string
          enum:
          - READY
          - PROVISIONING
          - ACTIVE
          - EXPIRING
          - SUSPENDED
          - RELEASED
          - PROVISION_FAILED
          description: Filter by lifecycle state.
        required: false
        description: Filter by lifecycle state.
        name: state
        in: query
      responses:
        '200':
          description: Resources page
          content:
            application/json:
              schema:
                type: object
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/Resource'
                  cursor:
                    type: string
                    description: Opaque cursor for the next page; absent on the last page.
                required:
                - items
        '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/resources/{resourceId}/external/{kind}:
    get:
      tags:
      - Resources
      summary: Get a resource's live external detail
      description: Live detail of one external kind (from the resource's `externalResources` summaries), fetched fresh from the provider and sanitized — never secrets or upstream ids. Nothing is persisted; the response is upstream truth at this moment.
      security:
      - Bearer: []
      parameters:
      - schema:
          type: string
          description: Resource identifier (ULID).
        required: true
        description: Resource identifier (ULID).
        name: resourceId
        in: path
      - schema:
          type: string
          description: External kind (from `externalResources[].kind`).
        required: true
        description: External kind (from `externalResources[].kind`).
        name: kind
        in: path
      responses:
        '200':
          description: Live external detail
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExternalResourceDetail'
        '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: Resource (or external kind) not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '502':
          description: The provider could not be reached
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/resources/{resourceId}/events:
    get:
      tags:
      - Resources
      summary: List a resource's lifecycle events
      description: Cursor-paginated lifecycle events for a resource, oldest first — the renew history IS these events.
      security:
      - Bearer: []
      parameters:
      - schema:
          type: string
          description: Resource identifier (ULID).
        required: true
        description: Resource identifier (ULID).
        name: resourceId
        in: path
      - schema:
          type: integer
          exclusiveMinimum: 0
          maximum: 100
          description: Max items per page (server-side cap applies).
        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
      - schema:
          type: string
          enum:
          - apify
          - pdl
          - opoint
          - tikhub
          - exa
          - minimax
          - bytedance
          - suzanne
          - akta
          - saperly
          - apollo
          - censusdata.xyz
          - defillama
          - elevenlabs
          description: Filter by provider slug (e.g. 'saperly').
        required: false
        description: Filter by provider slug (e.g. 'saperly').
        name: provider
        in: query
      - schema:
          type: string
          enum:
          - phone_number
          description: Filter by resource type — requires `provider` (store SK prefix is ordered).
        required: false
        description: Filter by resource type — requires `provider` (store SK prefix is ordered).
        name: resourceType
        in: query
      - schema:
          type: string
          enum:
          - READY
          - PROVISIONING
          - ACTIVE
          - EXPIRING
          - SUSPENDED
          - RELEASED
          - PROVISION_FAILED
          description: Filter by lifecycle state.
        required: false
        description: Filter by lifecycle state.
        name: state
        in: query
      responses:
        '200':
          description: Lifecycle events page
          content:
            application/json:
              schema:
                type: object
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/ResourceEvent'
                  cursor:
                    type: string
                    description: Opaque cursor for the next page; absent on the last page.
                required:
                - items
        '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: Resource not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/resources/{resourceId}/release:
    post:
      tags:
      - Resources
      summary: Release a resource
      description: 'Request the release of a workspace-owned resource. Asynchronous and idempotent: a renewable resource stays usable until its paid-through date, then is released upstream; a non-renewable one is released immediately. Poll GET /v1/resources/{resourceId} for the authoritative state.'
      security:
      - Bearer: []
      parameters:
      - schema:
          type: string
          description: Resource identifier (ULID).
        required: true
        description: Resource identifier (ULID).
        name: resourceId
        in: path
      responses:
        '202':
          description: Release requested (asynchronous, idempotent)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourceReleaseAccepted'
        '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: Resource not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: Resource is already released, or not releasable right now
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/resources/{resourceId}:
    get:
      tags:
      - Resources
      summary: Get a resource
      description: Get a single workspace-owned resource. External detail is a separate on-demand live fetch — see GET /v1/resources/{resourceId}/external/{kind}.
      security:
      - Bearer: []
      parameters:
      - schema:
          type: string
          description: Resource identifier (ULID).
        required: true
        description: Resource identifier (ULID).
        name: resourceId
        in: path
      responses:
        '200':
          description: The resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Resource'
        '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: Resource 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
    Resource:
      type: object
      properties:
        resourceId:
          type: string
          description: Resource identifier (ULID).
        provider:
          type: string
        resourceSlug:
          type: string
        resourceType:
          type: string
        externalId:
          type: string
        identifier:
          type: string
        state:
          type: string
          enum:
          - READY
          - PROVISIONING
          - ACTIVE
          - EXPIRING
          - SUSPENDED
          - RELEASED
          - PROVISION_FAILED
          description: Lifecycle state.
        provisionedBy:
          type: string
        releasedBy:
          type: string
        renewal:
          $ref: '#/components/schemas/ResourceRenewal'
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
        releasedAt:
          type: string
          format: date-time
        releaseReasonCode:
          type: string
        releaseReason:
          type: string
        phoneNumber:
          type: string
        country:
          type: string
        numberType:
          type: string
        externalResources:
          type: array
          items:
            $ref: '#/components/schemas/ExternalResourceSummary'
        syncedAt:
          type: string
          format: date-time
      required:
      - resourceId
      - provider
      - resourceSlug
      - resourceType
      - externalId
      - identifier
      - state
      - provisionedBy
      - createdAt
      - updatedAt
    ResourceReleaseAccepted:
      type: object
      properties:
        resourceId:
          type: string
        state:
          type: string
          enum:
          - EXPIRING
        message:
          type: string
      required:
      - resourceId
      - state
      - message
    Price:
      type: object
      properties:
        type:
          type: string
        amount:
          anyOf:
          - type: object
            properties:
              value:
                type: number
              currency:
                type: string
                enum:
                - USD
            required:
            - value
            - currency
          - type: object
            properties:
              type:
                type: string
                enum:
                - PER_TOKEN
              amount:
                type: object
                properties:
                  value:
                    type: number
                  currency:
                    type: string
                    enum:
                    - USD
                required:
                - value
                - currency
              per:
                type: number
              unit:
                type: string
                enum:
                - token
                - character
            required:
            - type
            - amount
            - per
            - unit
        flatFee:
          type: object
          properties:
            value:
              type: number
            currency:
              type: string
              enum:
              - USD
          required:
          - value
          - currency
        period:
          type: object
          properties:
            unit:
              type: string
              enum:
              - MINUTE
              - DAY
              - MONTH
            count:
              type: integer
              exclusiveMinimum: 0
          required:
          - unit
          - count
        per:
          type: object
          properties:
            unit:
              type: string
              enum:
              - MINUTE
              - DAY
              - MONTH
            count:
              type: integer
              exclusiveMinimum: 0
          required:
          - unit
          - count
        selectors:
          type: array
          items:
            type: object
            properties:
              label:
                type: string
              key:
                type: string
              in:
                type: string
                enum:
                - body
                - queryParam
                - pathParam
            required:
            - label
            - key
            - in
        variants:
          type: array
          items:
            type: object
            properties:
              when:
                type: object
                additionalProperties:
                  anyOf:
                  - type: string
                  - type: number
              amount:
                anyOf:
                - type: object
                  properties:
                    value:
                      type: number
                    currency:
                      type: string
                      enum:
                      - USD
                  required:
                  - value
                  - currency
                - type: object
                  properties:
                    type:
                      type: string
                      enum:
                      - PER_TOKEN
                    amount:
                      type: object
                      properties:
                        value:
                          type: number
                        currency:
                          type: string
                          enum:
                          - USD
                      required:
                      - value
                      - currency
                    per:
                      type: number
                    unit:
                      type: string
                      enum:
                      - token
                      - character
                  required:
                  - type
                  - amount
                  - per
                  - unit
              label:
                type: string
            required:
            - when
            - amount
        notes:
          type: array
          items:
            type: string
      required:
      - type
      - amount
      description: User-facing price (markup applied).
    ResourceEvent:
      type: object
      properties:
        eventId:
          type: string
        type:
          type: string
        cycle:
          type: number
        amount:
          type: object
          properties:
            value:
              type: number
            currency:
              type: string
          required:
          - value
          - currency
        reason:
          type: string
        at:
          type: string
          format: date-time
      required:
      - eventId
      - type
      - at
    ExternalResourceDetail:
      type: object
      properties:
        kind:
          type: string
        displayName:
          type: string
        label:
          type: string
        data:
          type: object
          additionalProperties: {}
      required:
      - kind
      - displayName
      - data
    ResourceRenewal:
      type: object
      properties:
        price:
          $ref: '#/components/schemas/Price'
        renewLead:
          type: object
          properties:
            unit:
              type: string
            count:
              type: number
          required:
          - unit
          - count
          description: How long before `currentPeriodEnd` charging starts.
        startedAt:
          type: string
          format: date-time
        currentPeriodStart:
          type: string
          format: date-time
        currentPeriodEnd:
          type: string
          format: date-time
        renewAttemptAt:
          type: string
          format: date-time
        cycle:
          type: number
        lastAttempt:
          type: object
          properties:
            at:
              type: string
              format: date-time
            outcome:
              type: string
              enum:
              - SUCCEEDED
              - FAILED
            reason:
              type: string
          required:
          - at
          - outcome
        cancelledAt:
          type: string
          format: date-time
      required:
      - price
      - renewLead
      - startedAt
      - currentPeriodStart
      - currentPeriodEnd
      - renewAttemptAt
      - cycle
    ExternalResourceSummary:
      type: object
      properties:
        kind:
          type: string
        displayName:
          type: string
        label:
          type: string
      required:
      - kind
      - displayName
  securitySchemes:
    Bearer:
      type: http
      scheme: bearer
      description: 'Monid API key (`Authorization: Bearer mk_...`) or Clerk-issued JWT.'