Quickstart
Get from zero to your first API call in about five minutes. The CRM Solid Public API gives you programmatic access to your contacts, Telegram messaging, sales pipeline, tasks, finance, and email inbox.
All requests go to the production host:
https://api.crmsolid.comEvery request must include an Authorization: Bearer <token> header, where the token is a CRM Solid API key. Keys use the format csk_live_<keyId><secret> — for example csk_live_xxx.
Get started
Section titled “Get started”-
Create an API key.
Open the CRM Solid app at app.crmsolid.com and go to Settings → Developers. Create a new key and grant it the scopes you need (for example
contacts:readortelegram:send). Copy the fullcsk_live_…value immediately — the secret is only shown once. -
Make your first request.
Verify your key by calling
GET https://api.crmsolid.com/v1/me. This returns the workspace identity associated with the key and is the simplest connectivity smoke-test — any valid key may call it, no specific scope required.Terminal window curl -s https://api.crmsolid.com/v1/me \-H "Authorization: Bearer csk_live_xxx"// Native fetch in Node 18+ (or `import fetch from 'node-fetch'`)const res = await fetch('https://api.crmsolid.com/v1/me', {headers: { Authorization: 'Bearer csk_live_xxx' },});const data = await res.json();console.log(data);import requestsr = requests.get("https://api.crmsolid.com/v1/me",headers={"Authorization": "Bearer csk_live_xxx"},)print(r.json())A successful response looks like this:
{"id": 42,"name": "Acme Inc.","createdAt": "2024-01-15T09:00:00Z","apiKey": {"keyId": "abc123def456","scopes": ["contacts:read", "telegram:send"]}} -
Send a Telegram message.
With a key that has the
telegram:sendscope, enqueue an outbound Telegram message viaPOST https://api.crmsolid.com/v1/telegram/messages. The recipient is resolved fromcontactId,username, ortelegramUserId— supply at least one. TheaccountIdmust be one of your connected Telegram accounts. The request returns immediately with the queued job (202 Accepted); the background worker delivers it.Terminal window curl -s -X POST https://api.crmsolid.com/v1/telegram/messages \-H "Authorization: Bearer csk_live_xxx" \-H "Content-Type: application/json" \-d '{"accountId": 7,"username": "john_doe","text": "Hi from Acme Inc.!","runAt": null}'const res = await fetch('https://api.crmsolid.com/v1/telegram/messages', {method: 'POST',headers: {Authorization: 'Bearer csk_live_xxx','Content-Type': 'application/json',},body: JSON.stringify({accountId: 7,username: 'john_doe',text: 'Hi from Acme Inc.!',runAt: null,}),});const job = await res.json();console.log(job);import requestsr = requests.post("https://api.crmsolid.com/v1/telegram/messages",headers={"Authorization": "Bearer csk_live_xxx"},json={"accountId": 7,"username": "john_doe","text": "Hi from Acme Inc.!","runAt": None,},)print(r.json())
Next steps
Section titled “Next steps”- Authentication — key formats, scopes, and rate limit headers (
X-RateLimit-Limit,X-RateLimit-Remaining,X-RateLimit-Reset). - API reference — the full list of endpoints for contacts, messages, deals, tasks, finance, and email.