Data API
API reference
One key, one base URL, one response envelope. Every endpoint below states the single scope it requires and whether it reaches the platform at request time.
- Base URL
- https://crmsolid.com/data-api/v2
- Version
- 2.0.0
- Endpoints
- 102
Authentication
Every request needs a key. Send it as a bearer token, or as x-api-key if that suits your client better. Keys are minted in the panel and are server-to-server credentials: anyone who opens devtools on a page that carries one has your whole quota.
curl https://crmsolid.com/data-api/v2/accounts/x/nasa \
-H "Authorization: Bearer psk_live_..."The envelope
Success is always data plus meta. Failure is always an error object. Branch on error.code, which is stable and enumerated, never on the message.
Success
{
"data": { "...": "the answer" },
"meta": { "cache_age_s": 3120, "cost": 1, "request_id": "req_..." }
}Failure
{
"error": {
"code": "quota_exceeded",
"message": "Monthly request budget spent.",
"request_id": "req_..."
}
}Conventions
Pagination. List endpoints take ?limit= (max 500) and ?cursor=. Follow meta.page.next_cursor until it is null; cursors are opaque and signed.
Request id. Every response carries X-Request-Id and meta.request_id. Quote it in support requests.
Headers on every response
X-RateLimit-LimitX-RateLimit-RemainingX-RateLimit-ResetX-Quota-LimitX-Quota-RemainingX-PlanX-Plan-LimitX-Plan-RemainingX-Plan-OverageX-Plan-Period-EndScopes
A key carries a set of scopes and each endpoint declares exactly one. A plan is the ceiling: asking for a scope your plan does not include is refused when the key is created, not on the first call.
directory:readRead the account and channel catalog across all seven platforms.
scrape:liveSensitiveFetch a profile or channel live from the source, bypassing the catalog.
insights:readEngagement rates, top posts, viral patterns, cohort benchmarks.
research:readFindings, runs and events from the autonomous research engine.
leads:readSensitiveLinkedIn company and contact data, and X follower-graph exports.
tools:useSensitiveRun the analysis tools: valuation, follower audit, scoring, and more.
Rate limits
Two buckets apply at once: a burst ceiling per minute and a quota per day, both from the tier your plan grants. Endpoints that reach a platform live are capped separately, so paging the catalogue fast never starves the fetchers.
| Tier | Per minute | Per day | Live per minute |
|---|---|---|---|
| free | 30 | 1,000 | 5 |
| standard | 120 | 25,000 | 20 |
| pro | 600 | 250,000 | 60 |
| unlimited | 6,000 | 10,000,000 | 600 |
Error codes
The complete set. Anything else is a bug on our side.
unauthorizedinvalid_keyforbidden_scopeforbidden_ipnot_foundinvalid_requestrate_limitedquota_exceededpayment_requiredsubscription_inactiveupstream_errorupstream_timeoutnot_configuredinternal_errorEndpoints
Grouped the way the API groups them. Paths are shown exactly as you call them.
Accounts5
Directory9
People2
Live scrape5
Insights32
Trends2
Identity5
Graph4
Watch10
Research4
Tools18
Leads6
Start on the free plan
A hundred requests, one key, no card. Enough to check the data is the data you need before any money moves.