---
title: "List provider resources"
method: POST
path: "/v1/discover/resources"
tags: ["Discover"]
---

# List provider resources

`POST /v1/discover/resources`

## Request

- Base URL: `https://api.monid.ai`
- URL: `https://api.monid.ai/v1/discover/resources`
- Auth: HTTP bearer

The resources providers offer, with display copy, prices (recurring rent and metered usage rates) and the endpoints that operate on them. Filter by `category` and/or `provider`.

## Headers

- `X-Monid-Agent-Model` string
- `X-Monid-Agent-Harness` string
- `X-Monid-Agent-Session-Id` string

## Request body

- DiscoverResourcesRequest
  - `category` string: Category node id to filter by (top group, leaf category, or provider node id).
  - `provider` string: Exact provider slug.

## Response `200`

Matching resources

- ProviderResourcesResponse
  - `items` ProviderResource[], required
    - `provider` string, required
    - `providerDisplayName` string, required
    - `providerUrl` string, uri: The provider's website, when known.
    - `providerDocsUrl` string, uri: The provider's API docs, when known.
    - `resource` string, required: Resource slug — unique with `provider`.
    - `resourceType` string, required
    - `displayName` string, required
    - `displayDescription` string, required
    - `summary` string, required
    - `pricing` object, required
      - `rent` ResourceRent, nullable, required: Recurring rent, or null when the resource charges no rent (free to hold, or billed by usage only).
        - `type` 'BY_PERIOD', required
        - `amount` object, required
          - `value` number, required
          - `currency` 'USD', required
        - `period` object, required
          - `unit` 'MINUTE' | 'DAY' | 'MONTH', required
          - `count` integer, required
      - `rateCard` ResourceRateLine[], required: Metered usage rates (empty when the resource is not usage-billed).
        - `label` string, required
        - `ratePerUnit` number, required: USD per `per` unit.
        - `per` string, required
      - `firstPeriodChargedAtCreation` boolean, required: True when the call that creates the resource charges the first rent period (so the rent is not charged twice).
    - `endpoints` ResourceEndpoint[], required: The endpoints that operate on this resource and are visible to the caller, with what each does to it.
      - `endpoint` string, required
      - `displayName` string, required
      - `price` PublicPrice, required: User-facing price (markup applied).
        - `type` string, required
        - `amount` object, required
          - `value` number, required
          - `currency` 'USD', required
        - `flatFee` object
          - `value` number, required
          - `currency` 'USD', required
        - `period` object
          - `unit` 'MINUTE' | 'DAY' | 'MONTH', required
          - `count` integer, required
        - `per` union
          - object
            - `unit` 'MINUTE' | 'DAY' | 'MONTH', required
            - `count` integer, required
          - number
        - `unit` 'token' | 'character' | 'second' | 'image' | 'credit' | 'result' | 'gb-month' | 'step' | 'byte'
        - `default` union
          - object
            - `type` 'PER_CALL', required
            - `amount` object, required
              - …
          - object
            - `type` 'PER_RESULT', required
            - `amount` object, required
              - …
            - `flatFee` object
              - …
          - object
            - `type` 'METERED', required
            - `amount` object, required
              - …
            - `per` object, required
              - …
          - object
            - `type` 'PER_UNIT', required
            - `amount` object, required
              - …
            - `per` number, required
            - `unit` 'token' | 'character' | 'second' | 'image' | 'credit' | 'result' | 'gb-month' | 'step' | 'byte', required
        - `selectors` object[]
          - `label` string, required
          - `key` string, required
          - `in` 'body' | 'queryParam' | 'pathParam' | 'output', required
          - `offset` integer
        - `variants` object[]
          - `when` object, required
          - `price` union, required
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
          - `label` string
        - `tiers` object[]
          - `label` string, required
          - `when` object
          - `selector` object
            - `label` string, required
            - `key` string, required
            - `in` 'body' | 'queryParam' | 'pathParam' | 'output', required
            - `offset` integer
          - `price` union, required
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
      - `effects` string[], required: What this endpoint does to the resource (derived from the endpoint's resource lifecycle).
    - `categories` string[], required: Category node ids — the union of those endpoints' categories.

## Other responses

- `400`: Bad request — input failed validation
- `401`: Unauthorized — missing or invalid credentials
- `403`: Forbidden — caller has no workspace or no access
- `429`: Rate limited (errorCode `RATE_LIMITED`, message `Rate limited. Retry after Ns.`) — the `Retry-After` header carries whole seconds until the caller may retry; `RateLimit-Limit/-Remaining/-Reset` describe the binding limit as numbers only (also sent on allowed responses that matched a rule; responses that matched no rule, or an `unlimited` exemption, carry none of them). Applies to every authenticated `/v1` route (per API key / user / workspace); POST /v1/run additionally enforces per-provider/endpoint run limits.
- `500`: Internal server error

## Changes

- **2026-10-21** `47b1a281e325`: 4 warning
  - added the new `byte` enum value to the `items/items/endpoints/items/price/default/anyOf[subschema #4]/unit` response property for the response status `200`
  - added the new `byte` enum value to the `items/items/endpoints/items/price/tiers/items/price/anyOf[subschema #4]/unit` response property for the response status `200`
  - added the new `byte` enum value to the `items/items/endpoints/items/price/unit` response property for the response status `200`
  - added the new `byte` enum value to the `items/items/endpoints/items/price/variants/items/price/anyOf[subschema #4]/unit` response property for the response status `200`
- **2026-10-20** `631143e91790`: 8 info
  - added the new optional `header` request parameter `X-Monid-Agent-Harness`
  - added the new optional `header` request parameter `X-Monid-Agent-Model`
  - added the new optional `header` request parameter `X-Monid-Agent-Session-Id`
  - removed the `PROMO_REDEEM_DISABLED` enum value from the `errorCode` response property for the response status `400`
  - …4 more
- …earlier changes not shown

[Operation history](https://skmtc.dev/monid/apis/monid-api/changes/v1/discover/resources/post.md)

---

[API](https://skmtc.dev/monid/apis/monid-api.md) · [All operations](https://skmtc.dev/monid/apis/monid-api/llms.txt) · [OpenAPI document](https://skmtc.dev/monid/apis/monid-api/revisions/79c4c3aaa5ff?raw)
