curl --request GET \
--url https://api.monid.ai/v1/resources/{resourceId} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.monid.ai/v1/resources/{resourceId}"
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/{resourceId}', 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/{resourceId}",
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/{resourceId}"
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/{resourceId}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.monid.ai/v1/resources/{resourceId}")
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{
"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>"
}
]
}
}{
"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"
}Get a resource
Get a single workspace-owned resource. External detail is a separate on-demand live fetch — see GET /v1/resources//external/.
curl --request GET \
--url https://api.monid.ai/v1/resources/{resourceId} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.monid.ai/v1/resources/{resourceId}"
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/{resourceId}', 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/{resourceId}",
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/{resourceId}"
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/{resourceId}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.monid.ai/v1/resources/{resourceId}")
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{
"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>"
}
]
}
}{
"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).
256Path Parameters
Resource identifier (ULID).
Response
The resource
Resource identifier (ULID).
Lifecycle state.
READY, PROVISIONING, ACTIVE, EXPIRING, SUSPENDED, RELEASED, PROVISION_FAILED Resource display name (e.g. "Machine").
Short one-line description.
Detailed description.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Metered usage pricing (absent for rent-only resources).
Show child attributes
Show child attributes