Docs
REST quickstart
No SDK is required. Every call is HTTPS and JSON, every write takes an Idempotency-Key, and every error is a sentence with a code.
The flow is the same as the MCP server’s: look up accounts, validate, create, then read the post back. Use a smm_test_ key until the output looks right.
01Authenticate§
Send the key as a bearer token (or as X-API-Key). GET /v1/me tells you which org, scopes and mode (live or test) the key carries.
curl https://api.smmist.com/v1/me -H "Authorization: Bearer $SMMIST_API_KEY"02Find your accounts§
Posts target account ids. Connect accounts in the dashboard (X needs your own developer app’s keys; Instagram connects through Meta login), then list them:
curl https://api.smmist.com/v1/accounts -H "Authorization: Bearer $SMMIST_API_KEY"03Validate§
POST /v1/posts/validate takes the same body as create and writes nothing. It returns every issue for every target at once.
curl https://api.smmist.com/v1/posts/validate \
-H "Authorization: Bearer $SMMIST_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"text": "Hold space. Talk. Let go. VoiceMsg is live.",
"targets": [{ "account_id": "7c42…" }]
}'04Create§
POST /v1/posts requires an Idempotency-Key header when called with an API key. Per-target override carries platform-specific text, media or options. Omit publish_at to publish as soon as possible, or pass "draft": true to store it.
curl https://api.smmist.com/v1/posts \
-H "Authorization: Bearer $SMMIST_API_KEY" \
-H "Idempotency-Key: voicemsg-launch-2026-10-12" \
-H "Content-Type: application/json" \
-d '{
"text": "Hold space. Talk. Let go. VoiceMsg is live.",
"media_ids": ["5f0c8a1e-…"],
"targets": [
{ "account_id": "a3e1…" },
{ "account_id": "7c42…",
"override": { "options": { "ig": { "type": "REELS", "share_to_feed": true } } } }
],
"publish_at": "2026-10-12T16:30:00Z",
"not_after": "2026-10-12T22:30:00Z",
"timezone": "America/Los_Angeles",
"labels": ["voicemsg"],
"agent": { "name": "claude-code", "model": "claude-opus-5-5" }
}'05Read it back§
curl https://api.smmist.com/v1/posts/$POST_ID -H "Authorization: Bearer $SMMIST_API_KEY"
curl https://api.smmist.com/v1/posts/$POST_ID/attempts -H "Authorization: Bearer $SMMIST_API_KEY"
curl https://api.smmist.com/v1/posts/$POST_ID/events -H "Authorization: Bearer $SMMIST_API_KEY"06Errors§
Every non-2xx response has the same shape, and the code is stable. Write your retry logic against codes, not messages.
{
"error": {
"code": "idempotency_key_reuse",
"message": "this Idempotency-Key was used with a different body",
"details": {},
"request_id": "req_…"
}
}- 401 invalid_api_key
- The key is missing, revoked or expired. Do not retry.
- 403 insufficient_scope
- The key lacks the scope for this call. Ask a person for a key that has it.
- 409 content_changed
- The post changed after you read its hash. Re-read, then approve the new hash.
- 422 validation_failed
- Fix each issue in details; the codes match POST /v1/posts/validate.
- 422 idempotency_key_reuse
- Same key, different body. Use a new key for new content.
- 429 rate_limited
- Wait for Retry-After seconds, then retry with the same Idempotency-Key.