curl --request GET \
--url https://api.monid.ai/v1/resources \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.monid.ai/v1/resources"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.monid.ai/v1/resources', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.monid.ai/v1/resources",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.monid.ai/v1/resources"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.monid.ai/v1/resources")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.monid.ai/v1/resources")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"items": [
{
"resourceId": "<string>",
"provider": "<string>",
"resourceSlug": "<string>",
"resourceType": "<string>",
"externalId": "<string>",
"identifier": "<string>",
"releasable": true,
"state": "READY",
"provisionedBy": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"providerName": "<string>",
"displayName": "<string>",
"description": "<string>",
"summary": "<string>",
"releasedBy": "<string>",
"renewal": {
"price": {
"type": "<string>",
"amount": {
"value": 123,
"currency": "USD"
},
"flatFee": {
"value": 123,
"currency": "USD"
},
"period": {
"unit": "MINUTE",
"count": 123
},
"per": {
"unit": "MINUTE",
"count": 123
},
"unit": "token",
"default": {
"type": "PER_CALL",
"amount": {
"value": 123,
"currency": "USD"
}
},
"selectors": [
{
"label": "<string>",
"key": "<string>",
"in": "body",
"offset": 1
}
],
"variants": [
{
"when": {},
"price": {
"type": "PER_CALL",
"amount": {
"value": 123,
"currency": "USD"
}
},
"label": "<string>"
}
],
"tiers": [
{
"label": "<string>",
"price": {
"type": "PER_CALL",
"amount": {
"value": 123,
"currency": "USD"
}
},
"when": {},
"selector": {
"label": "<string>",
"key": "<string>",
"in": "body",
"offset": 1
}
}
],
"notes": [
"<string>"
]
},
"renewLead": {
"unit": "<string>",
"count": 123
},
"startedAt": "2023-11-07T05:31:56Z",
"currentPeriodStart": "2023-11-07T05:31:56Z",
"currentPeriodEnd": "2023-11-07T05:31:56Z",
"renewAttemptAt": "2023-11-07T05:31:56Z",
"cycle": 123,
"lastAttempt": {
"at": "2023-11-07T05:31:56Z",
"outcome": "SUCCEEDED",
"reason": "<string>"
},
"cancelledAt": "2023-11-07T05:31:56Z"
},
"releasedAt": "2023-11-07T05:31:56Z",
"releaseReasonCode": "<string>",
"releaseReason": "<string>",
"phoneNumber": "<string>",
"country": "<string>",
"numberType": "<string>",
"name": "<string>",
"totalBytes": 123,
"objectCount": 123,
"lastMutationAt": "2023-11-07T05:31:56Z",
"expiresAt": "<string>",
"ttl": 123,
"activityTtl": 123,
"profileId": "<string>",
"profileSaveChanges": true,
"liveViewUrl": "<string>",
"interactiveLiveViewUrl": "<string>",
"cdpUrl": "<string>",
"baseUrl": "<string>",
"targetUrl": "<string>",
"timeoutSeconds": 123,
"proxyCountryCode": "<string>",
"externalResources": [
{
"kind": "<string>",
"displayName": "<string>",
"label": "<string>"
}
],
"syncedAt": "2023-11-07T05:31:56Z",
"usageBilling": {
"rateCard": [
{
"label": "<string>",
"ratePerUnit": 123,
"per": "<string>"
}
]
}
}
],
"cursor": "<string>"
}{
"code": 400,
"message": "Bad Request",
"hints": {},
"errorCode": "RATE_LIMITED"
}{
"code": 400,
"message": "Bad Request",
"hints": {},
"errorCode": "RATE_LIMITED"
}{
"code": 400,
"message": "Bad Request",
"hints": {},
"errorCode": "RATE_LIMITED"
}{
"code": 400,
"message": "Bad Request",
"hints": {},
"errorCode": "RATE_LIMITED"
}{
"code": 400,
"message": "Bad Request",
"hints": {},
"errorCode": "RATE_LIMITED"
}{
"code": 400,
"message": "Bad Request",
"hints": {},
"errorCode": "RATE_LIMITED"
}List 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). Three listing modes: by default the page holds TOP-LEVEL resources only; includeChildren=true lists everything (children included) in one flat page; parent=<id> lists ONLY that resource’s children.
curl --request GET \
--url https://api.monid.ai/v1/resources \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.monid.ai/v1/resources"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.monid.ai/v1/resources', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.monid.ai/v1/resources",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.monid.ai/v1/resources"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.monid.ai/v1/resources")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.monid.ai/v1/resources")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"items": [
{
"resourceId": "<string>",
"provider": "<string>",
"resourceSlug": "<string>",
"resourceType": "<string>",
"externalId": "<string>",
"identifier": "<string>",
"releasable": true,
"state": "READY",
"provisionedBy": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"providerName": "<string>",
"displayName": "<string>",
"description": "<string>",
"summary": "<string>",
"releasedBy": "<string>",
"renewal": {
"price": {
"type": "<string>",
"amount": {
"value": 123,
"currency": "USD"
},
"flatFee": {
"value": 123,
"currency": "USD"
},
"period": {
"unit": "MINUTE",
"count": 123
},
"per": {
"unit": "MINUTE",
"count": 123
},
"unit": "token",
"default": {
"type": "PER_CALL",
"amount": {
"value": 123,
"currency": "USD"
}
},
"selectors": [
{
"label": "<string>",
"key": "<string>",
"in": "body",
"offset": 1
}
],
"variants": [
{
"when": {},
"price": {
"type": "PER_CALL",
"amount": {
"value": 123,
"currency": "USD"
}
},
"label": "<string>"
}
],
"tiers": [
{
"label": "<string>",
"price": {
"type": "PER_CALL",
"amount": {
"value": 123,
"currency": "USD"
}
},
"when": {},
"selector": {
"label": "<string>",
"key": "<string>",
"in": "body",
"offset": 1
}
}
],
"notes": [
"<string>"
]
},
"renewLead": {
"unit": "<string>",
"count": 123
},
"startedAt": "2023-11-07T05:31:56Z",
"currentPeriodStart": "2023-11-07T05:31:56Z",
"currentPeriodEnd": "2023-11-07T05:31:56Z",
"renewAttemptAt": "2023-11-07T05:31:56Z",
"cycle": 123,
"lastAttempt": {
"at": "2023-11-07T05:31:56Z",
"outcome": "SUCCEEDED",
"reason": "<string>"
},
"cancelledAt": "2023-11-07T05:31:56Z"
},
"releasedAt": "2023-11-07T05:31:56Z",
"releaseReasonCode": "<string>",
"releaseReason": "<string>",
"phoneNumber": "<string>",
"country": "<string>",
"numberType": "<string>",
"name": "<string>",
"totalBytes": 123,
"objectCount": 123,
"lastMutationAt": "2023-11-07T05:31:56Z",
"expiresAt": "<string>",
"ttl": 123,
"activityTtl": 123,
"profileId": "<string>",
"profileSaveChanges": true,
"liveViewUrl": "<string>",
"interactiveLiveViewUrl": "<string>",
"cdpUrl": "<string>",
"baseUrl": "<string>",
"targetUrl": "<string>",
"timeoutSeconds": 123,
"proxyCountryCode": "<string>",
"externalResources": [
{
"kind": "<string>",
"displayName": "<string>",
"label": "<string>"
}
],
"syncedAt": "2023-11-07T05:31:56Z",
"usageBilling": {
"rateCard": [
{
"label": "<string>",
"ratePerUnit": 123,
"per": "<string>"
}
]
}
}
],
"cursor": "<string>"
}{
"code": 400,
"message": "Bad Request",
"hints": {},
"errorCode": "RATE_LIMITED"
}{
"code": 400,
"message": "Bad Request",
"hints": {},
"errorCode": "RATE_LIMITED"
}{
"code": 400,
"message": "Bad Request",
"hints": {},
"errorCode": "RATE_LIMITED"
}{
"code": 400,
"message": "Bad Request",
"hints": {},
"errorCode": "RATE_LIMITED"
}{
"code": 400,
"message": "Bad Request",
"hints": {},
"errorCode": "RATE_LIMITED"
}{
"code": 400,
"message": "Bad Request",
"hints": {},
"errorCode": "RATE_LIMITED"
}Authorizations
Monid API key (Authorization: Bearer mk_...) or Clerk-issued JWT. Each operation lists the ONE scope an API key needs. {resource}:* grants every action on that resource; * grants everything; Clerk sessions hold *. Operations with an empty list need no scope. Scope catalog: GET /v1/api-keys/scopes.
Headers
Model driving the calling agent. Optional; a value that is empty, longer than 256 characters or not printable ASCII is ignored (never an error).
256Agent harness or client making the call (e.g. a coding agent, an agent framework). Optional; a value that is empty, longer than 256 characters or not printable ASCII is ignored (never an error).
256Caller-side session identifier, so the calls of one agent session (discover → inspect → run → polling) can be correlated. Optional; a value that is empty, longer than 256 characters or not printable ASCII is ignored (never an error).
256Query Parameters
Max items per page (server-side cap applies).
x <= 100Cursor returned by the previous page.
Filter by provider slug (e.g. 'saperly').
apify, pdl, opoint, tikhub, exa, minimax, bytedance, suzanne, akta, saperly, apollo, censusdata.xyz, defillama, sfs, semrush, elevenlabs, octen, mint, context.dev, surf, agentmail, ahrefs, tinyfish, firecrawl, massive, hunterio, contactout, clay, alibaba, mrscraper, fundable, ploid, smolmachine, kling, recall, gemini, tendata, openai, vaquill, litescrape, typesafe, dataforseo, orbit, cloro, topaz, search1api, magichour, agentline, keenable, datalegion, channel3, anyapi, fishaudio, serpapi, stepfun, twitterdata.io, tavily, heygen, appllama, parallel, lev8, velabreakout Filter by resource type — requires provider (store SK prefix is ordered).
phone_number, file_system, asset_library, machine, email_account, email_inbox, email_domain, browser_session, browser_profile, voice Filter by lifecycle state.
READY, PROVISIONING, ACTIVE, EXPIRING, SUSPENDED, RELEASED, PROVISION_FAILED List ONLY the children of this resource (e.g. an email account's inboxes) instead of the workspace's top-level resources. 404 when the resource is not yours. Mutually exclusive with includeChildren.
1Include child resources (e.g. the inboxes inside an email account) in the flat workspace listing. Default: top-level resources only. Mutually exclusive with parent.
true, false