curl --request POST \
--url https://api.monid.ai/v1/inspect \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"provider": "exa",
"endpoint": "/search"
}
'import requests
url = "https://api.monid.ai/v1/inspect"
payload = {
"provider": "exa",
"endpoint": "/search"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({provider: 'exa', endpoint: '/search'})
};
fetch('https://api.monid.ai/v1/inspect', 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/inspect",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'provider' => 'exa',
'endpoint' => '/search'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.monid.ai/v1/inspect"
payload := strings.NewReader("{\n \"provider\": \"exa\",\n \"endpoint\": \"/search\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.monid.ai/v1/inspect")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"provider\": \"exa\",\n \"endpoint\": \"/search\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.monid.ai/v1/inspect")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"provider\": \"exa\",\n \"endpoint\": \"/search\"\n}"
response = http.request(request)
puts response.read_body{
"provider": "<string>",
"endpoint": "<string>",
"description": "<string>",
"tags": [
"<string>"
],
"categories": [
"<string>"
],
"providerName": "<string>",
"summary": "<string>",
"method": "GET",
"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>"
]
},
"docUrl": "<string>",
"notes": [
"<string>"
],
"promotion": {
"campaignId": "<string>",
"label": "<string>",
"discountPercent": 123,
"limits": {
"perMinute": 123,
"perHour": 123,
"perDay": 123
},
"baseEndpoint": "<string>"
},
"metrics": {
"status": "healthy",
"runTimeMs": {
"p50": 123,
"p95": 123
}
},
"hints": {},
"input": {
"pathParams": {},
"queryParams": {},
"body": {},
"bodyType": "json"
}
}{
"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"
}Get full endpoint details
Full endpoint details including input schema, pricing, and documentation. The provider’s endpoint detail is the single source of truth.
curl --request POST \
--url https://api.monid.ai/v1/inspect \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"provider": "exa",
"endpoint": "/search"
}
'import requests
url = "https://api.monid.ai/v1/inspect"
payload = {
"provider": "exa",
"endpoint": "/search"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({provider: 'exa', endpoint: '/search'})
};
fetch('https://api.monid.ai/v1/inspect', 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/inspect",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'provider' => 'exa',
'endpoint' => '/search'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.monid.ai/v1/inspect"
payload := strings.NewReader("{\n \"provider\": \"exa\",\n \"endpoint\": \"/search\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.monid.ai/v1/inspect")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"provider\": \"exa\",\n \"endpoint\": \"/search\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.monid.ai/v1/inspect")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"provider\": \"exa\",\n \"endpoint\": \"/search\"\n}"
response = http.request(request)
puts response.read_body{
"provider": "<string>",
"endpoint": "<string>",
"description": "<string>",
"tags": [
"<string>"
],
"categories": [
"<string>"
],
"providerName": "<string>",
"summary": "<string>",
"method": "GET",
"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>"
]
},
"docUrl": "<string>",
"notes": [
"<string>"
],
"promotion": {
"campaignId": "<string>",
"label": "<string>",
"discountPercent": 123,
"limits": {
"perMinute": 123,
"perHour": 123,
"perDay": 123
},
"baseEndpoint": "<string>"
},
"metrics": {
"status": "healthy",
"runTimeMs": {
"p50": 123,
"p95": 123
}
},
"hints": {},
"input": {
"pathParams": {},
"queryParams": {},
"body": {},
"bodyType": "json"
}
}{
"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).
256Body
Response
Endpoint details
Provider slug (e.g., "apify").
Endpoint path.
Tags for scoring and filtering (e.g., ["verified", "no-markup"]). no-markup = priced at the provider's standard rate with no platform fee added.
Depth-2 category paths — authored functional + derived provider (e.g. ["social-media/twitter"]). Empty when uncategorized.
Human-readable provider name (e.g., "Apify").
HTTP method for this endpoint.
GET, POST, PUT, DELETE, PATCH User-facing price (markup applied).
Show child attributes
Show child attributes
Provider documentation URL.
Operator-curated notes for agents — quirks, pitfalls, best practices.
Present ONLY on a limited-time promotion endpoint (/promo/...): a discounted copy of baseEndpoint — or a standalone offer without one — with stricter per-workspace limits, available while the campaign lasts.
Show child attributes
Show child attributes
Recent operational health (server-computed from run analytics). Omitted when analytics is unavailable.
Show child attributes
Show child attributes
Agent guidance map (phrase → hint), polymorphic by client: rendered command string for cli/api/mcp, structured target for web. Omitted for unknown clients.
Show child attributes
Show child attributes
Structured input — JSON Schema per param location (path, query, body).
Show child attributes
Show child attributes