SocialMate Local API
Free vs Pro
Exactly what the Free tier can do over the API, and which behaviours unlock on Pro.
Every endpoint exists on Free — Pro removes ceilings rather than unlocking hidden routes. Account,
chat, contact, group, media and status reads all work on Free, and so does sending plain text. The
exceptions are the three history reads — GET /messages,
GET /ai-context and GET /polls/{messageId} — which are Pro. When a call
needs Pro, the server replies 402 with the missing feature named, so your
client can show the right upgrade nudge.
Capability matrix
| Capability | Free | Pro |
|---|---|---|
| Linked accounts | 1 | Unlimited |
| API server & read endpoints (accounts, chats, contacts, groups, media, status) | Yes | Yes |
Send text (POST /messages) | Yes | Yes |
| Send media (image/video/audio/document/sticker) | — | Yes |
Auto-queue a send that anti-ban blocks (202 instead of 429) | — | Yes |
Message history & search (GET /messages), AI-context transcript export (GET /ai-context), poll results (GET /polls/{messageId}), and backfill sync | — | Yes |
| Smart-queue writes (enqueue, import, retry, pause/resume) | — | Yes |
| Group create / membership / rename / description | — | Yes |
Agent Memory: save contact enrichment (PATCH /contacts/{id}) & cache media context (PUT /media/{id}/context) | — | Yes |
| Media cleanup endpoint | — | Yes |
| Webhook endpoints | 2 | Unlimited |
| Webhook events you can subscribe to | 9 | All 35 |
| Webhook deliveries / day | 100 | Unlimited |
| Cloudflare Tunnel | Quick (rotating URL) | Named (stable URL) |
Which reads are free
Listing accounts, chats, contacts, and groups; reading anti-ban status; browsing the media
archive; and inspecting the queue, sync, network, webhook, and key state are all GETs
available on Free with a read-scoped key.
Three reads are Pro, all gated by localMessageCache: message history
(GET /v1/accounts/{id}/messages), the AI-context transcript
(GET /v1/accounts/{id}/ai-context) and poll results
(GET /v1/accounts/{id}/polls/{messageId}). They return 402 on Free. Messages
are still stored on every tier, so upgrading unlocks the archive instantly with no re-sync — and Free
can receive messages live over the message.received webhook.
What a 402 looks like
A Pro-gated call returns 402 with the feature flag that gated it:
{
"error": {
"code": "license_required",
"message": "Feature 'apiWriteEnabled' requires a Pro license",
"feature": "apiWriteEnabled",
"tier": "pro"
}
}
| Feature flag | Gates |
|---|---|
apiWriteEnabled | Media sends, group writes, media cleanup. |
apiSmartQueue | Auto-queuing a blocked send (the 202 path). |
localMessageCache | Message history/search, backfill sync, and the AI-context transcript export (GET /v1/accounts/{id}/ai-context — the archive feed for your own LLM). |
scheduledMessages | Smart-queue writes (enqueue, import, retry, pause/resume). |
agentMemory | Agent Memory writes: contact enrichment (PATCH /contacts/{id}) and cached media context (PUT /media/{id}/context). SocialMate stores what your AI learned; it never generates it. |
namedTunnel | A stable Named Cloudflare tunnel. |
Pro. One license includes one device — add seats for more concurrent machines — with no per-message meter. Compare plans →