Your tools are welcome.
Use the API to manage posts and media, publish and schedule, and read recorded social-account statistics. Connect an MCP client to use the same operations through an assistant.
Create an API token in Settings · OpenAPI specification · Download the Node upload helper
Authentication
Crickets+ and the separate API/MCP add-on are required. Create a named token in Account settings → API access; it is automatically scoped to your account.
Tokens have full access to supported account operations. Copy the
token once and store it as a secret. Send
Authorization: Bearer <token>; never include it in a
URL. Browser-only account and Administration controls are not exposed.
export CRICKETS_API_TOKEN='your-token' curl 'https://app.crickets.social/api/v1/workspaces' \ -H "Authorization: Bearer $CRICKETS_API_TOKEN"
Responses contain data and request_id.
Failures contain error.code, error.message,
and optional field details. Store returned workspace, account, brand,
post, and media IDs exactly.
Draft, check, publish
Resource URLs begin /api/v1/workspaces/{workspace_id}.
Creating a post always saves a draft. Publishing and scheduling are
separate actions.
curl "$BASE/posts" -X POST \
-H "Authorization: Bearer $CRICKETS_API_TOKEN" \
-H 'Content-Type: application/json' -H 'Idempotency-Key: draft-001' \
-d '{"text":"A small update.","destinations":[{"account_id":"ACCOUNT_ID"}]}'
Set
BASE=https://app.crickets.social/api/v1/workspaces/WORKSPACE_ID. Retrieve GET /posts/{id} and keep its ETag. Edit with
PATCH /posts/{id} and If-Match: "revision".
Omitted fields stay unchanged; a supplied destination array replaces the
list. Destination text/media overrides are supported.
curl "$BASE/posts/validate" -X POST \
-H "Authorization: Bearer $CRICKETS_API_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"text":"A small update.","destinations":[{"account_id":"ACCOUNT_ID"}]}'
POST /posts/{id}/publish publishes immediately.
POST /posts/{id}/schedule and
PATCH /posts/{id}/reschedule take
scheduled_at as an ISO instant and support an IANA
timezone. Use times at least 30 seconds in the future.
These actions require both If-Match and
Idempotency-Key. Other actions are cancel and duplicate.
Poll the post’s destination outcomes after an accepted publish. A 202
response is not proof of publication.
Preflight never saves, publishes, or reserves allowance. Conditions are
rechecked at publication. X allowance and YouTube Private-only
restrictions apply exactly as in the app. Published, publishing, and
uncertain history cannot be edited/deleted. Deleting a draft does not
delete social-network content. Uncertain delivery retry requires
checked_platform:true after checking the platform.
Media
List GET /media, inspect GET /media/{id},
download GET /media/{id}/file, save alt text with
PATCH /media/{id}, and delete unused items with
DELETE /media/{id}. Media stays private.
Use the helper for uploads: unzip the kit, install Sharp, and run the helper with Node 22.14 or newer. It reads current image defaults, normalizes orientation, strips source metadata, preserves proportions without enlargement, flattens transparency onto white, and uses Crickets’ Squoosh resize/MozJPEG policy.
npm install sharp@0.35.4 export CRICKETS_WORKSPACE_ID='WORKSPACE_ID' node --experimental-strip-types scripts/api-upload.mjs '/path/to/photo.png'
Direct uploads accept prepared JPEGs or unchanged H.264 MP4 videos. MP4
size must be strictly below 10,000,000 bytes. Start
with POST /media/uploads containing name/type/size. Upload
sequential binary parts with
PUT /media/{id}/parts/{number}, then complete with
POST /media/{id}/complete and the ordered
parts array. The API validates type, dimensions, metadata,
actual size, and storage allowance. A failed completion removes the
invalid item. Start again after correcting the source. Attachment
references prevent deletion.
Statistics and discovery
GET /accounts, /brands, and
/capabilities expose usable destinations, platform limits,
image defaults, and remaining allowance. Read
/accounts/{id}/statistics,
/posts/{id}/statistics, or /statistics.
Follower queries accept start_date/end_date with a maximum 365-day span.
Engagement is cumulative at its recorded refresh time, not a historical
engagement backfill. Missing values are null; zero is real zero.
Coverage, errors, timestamps, and last-known values remain explicit.
Request POST /accounts/{id}/statistics/refresh for a
guarded asynchronous refresh. Provider permissions, five-minute refresh
guards, leases, and platform budgets still apply. List endpoints support
cursor/limit (50 by default, maximum 100). Post/account lists and
workspace statistics support intersecting brand_id/platform filters; use
brand_id=none for ungrouped items.
Reliable writes
Use a stable unique Idempotency-Key for each create, duplicate, publish, schedule, reschedule, cancel, or retry command. Results are retained for 24 hours. Identical retries return the stored result; changed input with the same key returns 409. If a request is still running, retry later with the same key. Obtain a fresh ETag after a 412 revision conflict. Revoking access does not cancel already accepted schedules.
Limits are 60 requests per credential and 180 per user each minute across REST/MCP. Inspect RateLimit-Limit, RateLimit-Remaining, and Retry-After. Credentials and request bodies are excluded from activity logs.
Statistics example
curl "$BASE/workspaces/$CRICKETS_WORKSPACE_ID/statistics" \ -H "Authorization: Bearer $CRICKETS_API_TOKEN"
Signed webhooks
Create POST /webhooks with a public HTTPS url and an events
array. Save the returned signing_secret once. Supported events:
post.created, post.updated,
post.draft, post.scheduled,
post.publishing, post.published,
post.partial, post.failed,
delivery.published, delivery.failed,
delivery.blocked, delivery.needs_review,
media.ready, account.reconnect_required.
Events contain stable id/type/workspace_id/created_at and resource
identifiers/statuses in data. Verify the
Crickets-Signature header:
t=timestamp,v1=base64url_signature. Calculate HMAC-SHA256
of timestamp + "." + raw_request_body using the signing
secret; compare in constant time and reject timestamps more than five
minutes away. Deduplicate by event id. Return 2xx promptly. Delivery is
at least once; retries occur after 1 minute, 5 minutes, 30 minutes, 2
hours, and 12 hours.
Inspect GET /webhooks/{id}/deliveries and replay failed
deliveries with
POST /webhooks/{id}/deliveries/{delivery_id}/replay.
Webhooks belong to their integration. Revocation, loss of account access, or an inactive API/MCP add-on blocks delivery. Losing subscription access suspends credentials without deleting them; access resumes when eligibility returns. Private-network destinations and redirects are
rejected.
curl "$BASE/workspaces/$CRICKETS_WORKSPACE_ID/webhooks" \
-H "Authorization: Bearer $CRICKETS_API_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"url":"https://your-service.example/crickets","events":["post.published","delivery.failed","media.ready"]}'
MCP connections
Set your client’s Streamable HTTP URL to
https://app.crickets.social/mcp. Browser OAuth reuses
Crickets sign-in, shows the client and requested full access, and lets
automatically scopes access to your account. Connected applications appear in Settings → API
access. Clients supporting custom headers can instead send your Crickets
API token in Authorization: Bearer.
Tools have named operations and schemas matching the API. Workspace IDs remain explicit API parameters for compatibility; they identify your internal account container. Editing actions take revision; retry-safe commands take idempotency_key. Creating a draft never publishes it. Upload tools return a 15-minute upload ticket, resource URL, and HTTP instructions; binary parts stay outside model tool arguments. Download instructions use an equally short-lived ticket. Tickets stop working if their integration is revoked or loses workspace access.
MCP tool example
This request uses the current protocol. Older clients can use their normal initialization and Streamable HTTP flow.
curl https://app.crickets.social/mcp \
-H "Authorization: Bearer $CRICKETS_API_TOKEN" \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-H 'MCP-Protocol-Version: 2026-07-28' \
-H 'Mcp-Method: tools/call' -H 'Mcp-Name: get_identity' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"get_identity","arguments":{},"_meta":{"io.modelcontextprotocol/protocolVersion":"2026-07-28","io.modelcontextprotocol/clientCapabilities":{}}}}'