Introduction
Everything squidX does for your X account, from a script or an AI agent: schedule and publish posts, read your analytics, your qualified leads and your mentions.
Two ways in
Both use the same API keys, the same permissions and the same rules. Pick the one that fits the tool on the other side.
- REST API at
https://squidx.io/api/v1. JSON in, JSON out. For scripts, automations (Zapier, Make, n8n), and anything that speaks HTTP. - MCP server at
https://squidx.io/api/mcp. For Claude, Cursor, Codex and any client of the Model Context Protocol. The agent gets tools such assquidx_create_postandsquidx_get_analytics, and only the ones the key allows. See MCP server.
Quick start
- Open Settings › API and MCP access in the dashboard and create a key. Pick Read only to look, Read and write to also schedule and publish. The key is shown once.
- Send it as a bearer token. The first call to make is
/me:
Request
curl https://squidx.io/api/v1/me \
-H "Authorization: Bearer sqx_your_key"Then queue a post for tomorrow morning:
Request
curl -X POST https://squidx.io/api/v1/posts \
-H "Authorization: Bearer sqx_your_key" \
-H "Content-Type: application/json" \
-d '{
"segments": ["Shipping the squidX API today. Here is what it does:"],
"status": "queued",
"scheduledAt": "2026-09-24T09:00:00Z"
}'The response is the post as squidX stored it, with its id and the instant it will actually go out. From there, Posts has the rest: edit, reschedule, cancel, or publish right now.
Conventions
- Envelope. A success is
{ "data": ... }, plusmetaon lists. A failure is{ "error": "<code>", "message": "<sentence>" }. Codes are stable strings; messages are for people. See Errors and rate limits. - Time. Every instant is ISO 8601 in UTC, in and out. The workspace timezone (from
/workspace) only matters for posting slots. - Ids. squidX ids are UUIDs. X ids (posts, users) are strings, because they overflow JavaScript numbers.
- Pagination. Lists take
limit(1 to 200, default 50) andoffset, and answer withmeta.total. - Versioning. The path carries the version. Fields are added, never renamed or removed, inside a version.
One workspace per key
A key belongs to the workspace it was created in. To drive two X accounts, create one key in each workspace.
All endpoints
| Endpoint | Permission | Purpose |
|---|---|---|
GET/me | workspace:read | Get the current key |
GET/workspace | workspace:read | Get workspace settings |
GET/posts | posts:read | List posts |
POST/posts | posts:write | Create a post |
GET/posts/:id | posts:read | Get a post |
PATCH/posts/:id | posts:write | Update a post |
DELETE/posts/:id | posts:write | Delete a post |
POST/posts/:id/publish | posts:publish | Publish a post now |
GET/posts/next-slot | posts:read | Get the next posting slot |
POST/media | posts:write | Upload an image |
GET/analytics/overview | analytics:read | Get the overview |
GET/analytics/posts | analytics:read | List top posts |
GET/lists | leads:read | List lead lists |
GET/leads | leads:read | List leads |
GET/mentions | mentions:read | List mentions |
