MonialDocs

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.

QueryTypeDescription
typesignals | accounts | peopleRequired. Dataset to return
searchstringFree-text search
limitnumberRows to return, default 25, max 100
liststringExisting list id to append these rows, or a name to create a new list
filtersJSON stringOptional filter object (see below)
typesstringComma-separated signal types
industrystring | string[]Account industry contains. Comma-separated or JSON array; matches any
locationstring | string[]Account location contains. Comma-separated or JSON array; matches any
techStackstring | string[]Account tech stack contains. Comma-separated or JSON array; matches any
minHeadcountnumberMinimum headcount
maxHeadcountnumberMaximum headcount
hasEmailbooleanOnly people with an email
includeDecisionMakersbooleanWhen type=accounts, nest decision makers on each account
fromDatestringInclusive start date YYYY-MM-DD. Omit for the beginning
toDatestringInclusive 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_CHANGE
  • ACCOUNT_TECH_STACK_CHANGE
  • ACCOUNT_HEADCOUNT_CHANGE
  • ACCOUNT_JOB_HIRING
  • ACCOUNT_RECENT_FUNDING_ROUND
  • ACCOUNT_RECENT_MERGERS_AND_ACQUISITIONS
  • ACCOUNT_DECISION_MAKER_CHANGE
  • ACCOUNT_DATA_CHANGE
  • ACCOUNT_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).

FieldTypeDescription
platformclay | heyreach | instantly | smartleadDestination
webhookUrlstringRequired for Clay
apiKeystringRequired 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

StatusMeaning
401Missing or invalid API key
400Invalid type, filters, or payload
402Insufficient credits for a monitor or keyword run
410Endpoint moved (old /push-to-platform)