REST API
Authenticate every request with your organization API key.
Authorization: Bearer <api_key>
You can also send x-api-key: <api_key>. Create or copy a key from Settings. The Try it panels on this page send live requests with that key.
Base URL: https://www.monial.co/api/v1
Credits: querying, exporting, and pushing over API or MCP is free. Credits are used for monitoring only (lists and keywords). Monitoring a company or account costs 10 credits per run. Each new keyword result costs 10 credits. A 402 is returned when a monitor or keyword run does not have enough credits.
MCP tools use the same functions and the same credit, limit, and list rules — only the transport layer differs.
API key
Used by the Try it panels on this page. Sent as Authorization: Bearer.
Paste a key below, or sign in to load or create one for your organization.
GET /api/v1/data
Query signals, accounts, or people. Signal rows include the public firehose (organizationId null) plus monitor signals for your organization.
There is no paging. Pass limit (default 25, max 100). API and MCP return at most 100 rows per call. The console UI can page through every matching row.
| Query | Type | Description |
|---|---|---|
type | signals | accounts | people | Required. Dataset to return |
search | string | Free-text search |
limit | number | Rows to return, default 25, max 100 |
list | string | Existing list id to append these rows, or a name to create a new list |
filters | JSON string | Optional filter object (see below) |
types | string | Comma-separated signal types |
industry | string | string[] | Account industry contains. Comma-separated or JSON array; matches any |
location | string | string[] | Account location contains. Comma-separated or JSON array; matches any |
techStack | string | string[] | Account tech stack contains. Comma-separated or JSON array; matches any |
minHeadcount | number | Minimum headcount |
maxHeadcount | number | Maximum headcount |
hasEmail | boolean | Only people with an email |
includeDecisionMakers | boolean | When type=accounts, nest decision makers on each account |
fromDate | string | Inclusive start date YYYY-MM-DD. Omit for the beginning |
toDate | string | Inclusive end date YYYY-MM-DD. Defaults to today |
filters JSON shape:
{
"types": ["PERSON_JOB_CHANGE"],
"industry": ["Software", "Fintech"],
"location": ["San Francisco", "New York"],
"techStack": ["Snowflake", "dbt"],
"minHeadcount": 50,
"maxHeadcount": 2000,
"hasEmail": true,
"includeDecisionMakers": true,
"fromDate": "2026-01-01",
"toDate": "2026-08-28"
}
Signal types:
PERSON_JOB_CHANGEACCOUNT_TECH_STACK_CHANGEACCOUNT_HEADCOUNT_CHANGEACCOUNT_JOB_HIRINGACCOUNT_RECENT_FUNDING_ROUNDACCOUNT_RECENT_MERGERS_AND_ACQUISITIONSACCOUNT_DECISION_MAKER_CHANGEACCOUNT_DATA_CHANGEACCOUNT_NEW_ANNOUNCEMENT
This call does not consume credits. If list is set, list in the response is the created or updated list metadata.
Signal items nest person and/or account with id, name, imageUrl, and linkedinUrl. Account and people items already include linkedinUrl.
Example
curl -s "https://www.monial.co/api/v1/data?type=signals&search=funding&limit=25" \
-H "Authorization: Bearer $MONIAL_API_KEY"
curl -s "https://www.monial.co/api/v1/data?type=people&hasEmail=true&limit=50" \
-H "Authorization: Bearer $MONIAL_API_KEY"
curl -s "https://www.monial.co/api/v1/data?type=accounts&includeDecisionMakers=true&limit=25" \
-H "Authorization: Bearer $MONIAL_API_KEY"
curl -s "https://www.monial.co/api/v1/data?type=signals&limit=25&list=SF%20enterprise" \
-H "Authorization: Bearer $MONIAL_API_KEY"
Try it
GET /api/v1/data?type=signals&limit=25
GET /api/v1/lists
Return saved list ids, names, and monitor settings for the authenticated organization. This call does not consume credits.
curl -s "https://www.monial.co/api/v1/lists" \
-H "Authorization: Bearer $MONIAL_API_KEY"
Try it
GET /api/v1/lists
GET /api/v1/lists/:id
Return items in a list, paginated (page default 1, limit default 100, max 100). There is no overall cap — page through every member. Each item includes signals, decision makers (accounts), and related entity fields. This call does not consume credits.
curl -s "https://www.monial.co/api/v1/lists/$LIST_ID?page=1&limit=100" \
-H "Authorization: Bearer $MONIAL_API_KEY"
Try it
GET /api/v1/lists/%3Aid?page=1&limit=100
POST /api/v1/lists
Create a list.
{
"name": "SF enterprise",
"webhookUrl": "https://example.com/webhook",
"monitor": true,
"monitorInterval": "7d",
"filters": {
"tab": "accounts",
"location": ["San Francisco", "New York"],
"techStack": ["Snowflake", "dbt"],
"minHeadcount": 200
},
"selected": [
{ "id": "acct_123", "type": "account" },
{ "id": "person_456", "type": "person" }
]
}
curl -s -X POST "https://www.monial.co/api/v1/lists" \
-H "Authorization: Bearer $MONIAL_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"SF enterprise","selected":[{"id":"acct_123","type":"account"}]}'
Try it
POST /api/v1/lists
POST /api/v1/lists/upload
Create a list from LinkedIn company or profile URLs.
{
"name": "Inbound demo accounts",
"urls": [
"https://www.linkedin.com/company/acme",
"https://www.linkedin.com/in/janedoe"
],
"monitor": true,
"monitorInterval": "7d"
}
curl -s -X POST "https://www.monial.co/api/v1/lists/upload" \
-H "Authorization: Bearer $MONIAL_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"Inbound","urls":["https://www.linkedin.com/company/acme"],"monitor":true}'
Try it
POST /api/v1/lists/upload
POST /api/v1/lists/:id/monitor
Set or remove a list monitor. Each company / account on the list costs 10 credits per run.
{ "interval": "7d" }
interval must be 1h, 1d, 7d, 14d, or 30d. Pass null to delete the monitor.
{ "interval": null }
curl -s -X POST "https://www.monial.co/api/v1/lists/$LIST_ID/monitor" \
-H "Authorization: Bearer $MONIAL_API_KEY" \
-H "Content-Type: application/json" \
-d '{"interval":"7d"}'
Try it
POST /api/v1/lists/%3Aid/monitor
POST /api/v1/lists/:id/push-to-platform
Push the list's people or accounts to an outbound tool. Pushing does not consume credits.
Clay receives one webhook POST per row. Heyreach creates a list and adds LinkedIn profiles. Instantly creates a lead list. Smartlead creates a drafted campaign (email required).
| Field | Type | Description |
|---|---|---|
platform | clay | heyreach | instantly | smartlead | Destination |
webhookUrl | string | Required for Clay |
apiKey | string | Required for Heyreach, Instantly, Smartlead |
curl -s -X POST "https://www.monial.co/api/v1/lists/$LIST_ID/push-to-platform" \
-H "Authorization: Bearer $MONIAL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"platform": "clay",
"webhookUrl": "https://api.clay.com/v3/sources/webhook/..."
}'
curl -s -X POST "https://www.monial.co/api/v1/lists/$LIST_ID/push-to-platform" \
-H "Authorization: Bearer $MONIAL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"platform": "instantly",
"apiKey": "YOUR_INSTANTLY_KEY"
}'
POST /api/v1/push-to-platform has been removed. Use this list-scoped path instead.
Try it
POST /api/v1/lists/%3Aid/push-to-platform
GET /api/v1/keywords
Return keyword scrapers for the authenticated organization. This call does not consume credits.
Each item includes id, query, scrapper (SEARCH_SOCIAL_POSTS, SEARCH_JOBS, or SEARCH_NEWS), interval, webhookUrl, nextRunAt, and isRunning.
curl -s "https://www.monial.co/api/v1/keywords" \
-H "Authorization: Bearer $MONIAL_API_KEY"
Try it
GET /api/v1/keywords
POST /api/v1/keywords
Create a keyword scraper. interval defaults to 7d (1h, 1d, 7d, 14d, or 30d). Optional webhookUrl receives signals from this keyword. Each new result costs 10 credits.
{
"query": "series A",
"scrapper": "SEARCH_NEWS",
"interval": "7d",
"webhookUrl": "https://example.com/webhook"
}
curl -s -X POST "https://www.monial.co/api/v1/keywords" \
-H "Authorization: Bearer $MONIAL_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query":"series A","scrapper":"SEARCH_NEWS","interval":"7d"}'
Try it
POST /api/v1/keywords
PATCH /api/v1/keywords/:id
Update a keyword scraper's query, scrapper, interval, or webhook URL.
{
"query": "series B",
"scrapper": "SEARCH_SOCIAL_POSTS",
"interval": "1d",
"webhookUrl": "https://example.com/webhook"
}
curl -s -X PATCH "https://www.monial.co/api/v1/keywords/$KEYWORD_ID" \
-H "Authorization: Bearer $MONIAL_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query":"series B","interval":"1d"}'
Try it
PATCH /api/v1/keywords/%3Aid
DELETE /api/v1/keywords/:id
Delete a keyword scraper.
curl -s -X DELETE "https://www.monial.co/api/v1/keywords/$KEYWORD_ID" \
-H "Authorization: Bearer $MONIAL_API_KEY"
Try it
DELETE /api/v1/keywords/%3Aid
Errors
| Status | Meaning |
|---|---|
401 | Missing or invalid API key |
400 | Invalid type, filters, or payload |
402 | Insufficient credits for a monitor or keyword run |
410 | Endpoint moved (old /push-to-platform) |