Guide

API limits and fair use

Social Relay enforces about 300 API requests per minute per application API key. Network hard quotas (Instagram ~50/24h, LinkedIn ~150/24h, Facebook Reels ~30/24h) apply per connected social account, not fleet-wide. Duplicate post text within 48 hours, in-flight publish caps, and optional daily token budgets protect accounts and cost. On 429, honor Retry-After; call posts/validate before publish.

← GuidesSecurity & limitsUpdated 2026-08-10

In short

Social Relay enforces about 300 API requests per minute per application API key. Network hard quotas (Instagram ~50/24h, LinkedIn ~150/24h, Facebook Reels ~30/24h) apply per connected social account, not fleet-wide. Duplicate post text within 48 hours, in-flight publish caps, and optional daily token budgets protect accounts and cost. On 429, honor Retry-After; call posts/validate before publish.

What is not limited by user count

Instagram’s ~50 posts per 24 hours is per connected Instagram professional account—not one shared quota for all of your customers or for Social Relay as a product. Each end customer’s linked Page/account has its own network bucket. You can onboard as many profiles as your tokens and resource ceilings allow.

API request rate limits

These protect the API plane (not Meta/LinkedIn account quotas).

  • Application API key: about 300 requests/minute
  • Dashboard session: about 1,200 requests/minute
  • Client IP soft cap: about 2,000/minute when the IP is known
  • JSON body: max 256 KiB; media URLs: max 10 HTTPS (no private/localhost hosts)

Network hard quotas (per connection)

Social Relay rejects create when a profile would exceed these rolling windows (quota_exceeded). Soft daily volumes may appear as validate warnings for engagement quality.

  • Instagram: ~50 posts / rolling 24h
  • LinkedIn: ~150 posts / rolling 24h per account
  • Facebook Reels: ~30 / rolling 24h per Page (when reels is enabled in platformOptions)
  • Soft recommended: Facebook ~25/day, Instagram ~30/day, LinkedIn ~25/day

Publish volume on Social Relay

  • In-flight (queued + processing): ~20 per application, ~50 per platform account
  • Scheduled backlog: up to ~5,000 per application
  • Profile hard ceiling: ~200 posts / 24h across networks (abuse protection)
  • New connection ramp: ~10 posts / 24h on that network for the first 7 days after connect

Content fair use

  • Duplicate normalized text on the same profile within 48 hours → duplicate_content (409)
  • Mention rate limits for repeating the same @handle across posts
  • Instagram: ≤5 hashtags, ≤3 mentions; spam hashtags (e.g. f4f) rejected

Daily token budget (optional)

GET /api/v1/billing/limits shows dailyTokenBudget, spentTodayUtc, remainingToday, and a product limits snapshot. PATCH with { "dailyTokenBudget": number | null } to set or clear a UTC-day spend cap. Useful if a bug could loop publishes. Over budget returns rate_limited with details.reason = daily_token_budget.

Inspect limitsbash
curl -sS "https://api.socialrelay.dev/api/v1/billing/limits" \
  -H "Authorization: Bearer sk_live_…"

Error handling cheat sheet

  • 429 rate_limited — back off; honor Retry-After; reuse Idempotency-Key on publish
  • 429 quota_exceeded — wait for the network rolling window; show used/limit from details
  • 409 duplicate_content — change text or wait 48h
  • 422 validation_failed — fix payload (media, hashtags, resource caps)
  • 402 insufficient_tokens — top up the prepaid wallet

Best practices

  • Always POST /api/v1/posts/validate before multi-network publish in production UIs
  • Send a unique Idempotency-Key on every create post
  • Rate-limit your own product so end users cannot hammer a single IG connection to 50/day unexpectedly
  • Do not treat 429 as an OAuth failure (never tell users to “relink” solely for rate limits)