---
title: "List resources"
method: GET
path: "/v1/resources"
tags: ["Resources"]
---

# List resources

`GET /v1/resources`

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`).

## Query parameters

- `limit` integer — Max items per page (server-side cap applies).
- `cursor` string — Cursor returned by the previous page.
- `provider` 'apify' | 'pdl' | 'opoint' | 'tikhub' | 'exa' | 'minimax' | 'bytedance' | 'suzanne' | 'akta' | 'saperly' | 'apollo' | 'censusdata.xyz' | 'defillama' | 'sfs' | 'semrush' | 'elevenlabs' | 'octen' | 'mint' | 'context.dev' | 'surf' — Filter by provider slug (e.g. 'saperly').
- `resourceType` 'phone_number' | 'file_system' | 'asset_library' — Filter by resource type — requires `provider` (store SK prefix is ordered).
- `state` 'READY' | 'PROVISIONING' | 'ACTIVE' | 'EXPIRING' | 'SUSPENDED' | 'RELEASED' | 'PROVISION_FAILED' — Filter by lifecycle state.

## Response `200`

Resources page

- object
  - `items` Resource[], required
    - `resourceId` string, required — Resource identifier (ULID).
    - `provider` string, required
    - `providerName` string
    - `resourceSlug` string, required
    - `resourceType` string, required
    - `externalId` string, required
    - `identifier` string, required
    - `releasable` boolean, required
    - `state` 'READY' | 'PROVISIONING' | 'ACTIVE' | 'EXPIRING' | 'SUSPENDED' | 'RELEASED' | 'PROVISION_FAILED', required — Lifecycle state.
    - `provisionedBy` string, required
    - `releasedBy` string
    - `renewal` ResourceRenewal
      - `price` Price, 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'
        - `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', required
        - `selectors` object[]
          - `label` string, required
          - `key` string, required
          - `in` 'body' | 'queryParam' | 'pathParam' | 'output', required
        - `variants` object[]
          - `when` object, required
          - `price` union, required
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
          - `label` string
        - `tiers` object[]
          - `label` string, required
          - `when` object, required
          - `selector` object
            - `label` string, required
            - `key` string, required
            - `in` 'body' | 'queryParam' | 'pathParam' | 'output', required
          - `price` union, required
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
        - `notes` string[]
      - `renewLead` object, required — How long before `currentPeriodEnd` charging starts.
        - `unit` string, required
        - `count` number, required
      - `startedAt` string, date-time, required
      - `currentPeriodStart` string, date-time, required
      - `currentPeriodEnd` string, date-time, required
      - `renewAttemptAt` string, date-time, required
      - `cycle` number, required
      - `lastAttempt` object
        - `at` string, date-time, required
        - `outcome` 'SUCCEEDED' | 'FAILED', required
        - `reason` string
      - `cancelledAt` string, date-time
    - `createdAt` string, date-time, required
    - `updatedAt` string, date-time, required
    - `releasedAt` string, date-time
    - `releaseReasonCode` string
    - `releaseReason` string
    - `phoneNumber` string
    - `country` string
    - `numberType` string
    - `name` string
    - `totalBytes` integer
    - `objectCount` integer
    - `lastMutationAt` string, date-time
    - `externalResources` ExternalResourceSummary[]
      - `kind` string, required
      - `displayName` string, required
      - `label` string
    - `syncedAt` string, date-time
  - `cursor` string — Opaque cursor for the next page; absent on the last page.

## Other responses

- `400` — Bad request — input failed validation
- `401` — Unauthorized — missing or invalid credentials
- `403` — Forbidden — caller has no workspace or no access
- `500` — Internal server error

---

[API](https://skmtc.net/monid/apis/monid-api.md) · [All operations](https://skmtc.net/monid/apis/monid-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/monid/monid-api/versions/164b6b6f2d36/schema)
