Request
POST /v1/discover
Headers
| Header | Required | Description |
|---|---|---|
Authorization | Yes | Bearer <api-key> |
Content-Type | Yes | application/json |
Body
| Field | Type | Required | Description |
|---|---|---|---|
query | string | Yes | A short natural language search query (1-1000 characters) |
limit | number | No | Maximum results to return (default 5, max 40) |
minScore | number | No | Minimum relevance score. Results scoring below this are filtered out. Scores fall in (0, 1), so useful values are in that range (default 0.2; the schema accepts up to 2, but values above 1 return no results) |
Example Request
curl -X POST https://api.monid.ai/v1/discover \
-H "Authorization: Bearer monid_live_..." \
-H "Content-Type: application/json" \
-d '{
"query": "twitter posts about AI",
"limit": 5
}'
const response = await fetch("https://api.monid.ai/v1/discover", {
method: "POST",
headers: {
"Authorization": "Bearer monid_live_...",
"Content-Type": "application/json",
},
body: JSON.stringify({
query: "twitter posts about AI",
limit: 5,
}),
});
const data = await response.json();
import requests
response = requests.post(
"https://api.monid.ai/v1/discover",
headers={
"Authorization": "Bearer monid_live_...",
"Content-Type": "application/json",
},
json={
"query": "twitter posts about AI",
"limit": 5,
},
)
data = response.json()
Response
200 OK
| Field | Type | Description |
|---|---|---|
results | array | Matching endpoints |
results[].provider | string | Provider slug |
results[].providerName | string | undefined | Provider display name (may be absent) |
results[].endpoint | string | Endpoint path |
results[].description | string | Endpoint description |
results[].score | number | Final relevance score in (0, 1), used for sorting |
results[].tags | string[] | Endpoint tags |
results[].scoreBreakdown | object | Per-signal breakdown of the score (querierScore plus one entry per signal) |
results[].price | object | Pricing information |
results[].price.type | string | Pricing model, e.g. "PER_CALL", "PER_RESULT" (other types such as "BY_PERIOD", "PER_UNIT_MATRIX", "METERED" may appear with additional fields) |
results[].price.amount | object | Price as { "value": number, "currency": "USD" } |
results[].hints | object | undefined | Ready-to-use next-step commands (may be absent) |
query | string | The original search query |
count | number | Number of results returned |
Example Response
{
"results": [
{
"provider": "apify",
"providerName": "Apify",
"endpoint": "/apidojo/tweet-scraper",
"description": "Scrape tweets by search terms, hashtags, or user handles",
"score": 0.87,
"tags": ["twitter", "social-media"],
"scoreBreakdown": { "querierScore": 0.82 },
"price": {
"type": "PER_CALL",
"amount": {
"value": 0.003,
"currency": "USD"
}
}
}
],
"query": "twitter posts about AI",
"count": 1
}
Next Step
UsePOST /v1/inspect to get full details for a discovered endpoint.