synaptiq Live demo
  • How It Works
  • Pricing
  • ROI Calculator
  • Docs
  • Blog
  • FAQ
Log InStart Free Pilot
synaptiq

AI-powered sales agent that qualifies leads and books meetings autonomously.

Product
  • How It Works
  • Pricing
  • ROI Calculator
  • FAQ
Resources
  • Blog
  • Docs
  • API Reference
  • Embed Guide
Legal
  • Privacy Policy
  • Terms of Service
  • Cookie Policy
© 2026 Synaptiq. All rights reserved.
Documentation
  • Quick Start Guide
  • Embed the Widget on Your Site
  • Configure Your AI Agent
  • Upload Your Knowledge Base
  • Test Your First Conversation
  • Understanding Your Dashboard Metrics
  • Managing Leads and Conversations
  • Using the Conversion Funnel
  • Exporting Data
  • Live Conversations
  • ROI Report
  • Choosing a Theme
  • Customizing the Chat Icon
  • Position and Sizing Options
  • Custom CSS Overrides
  • Proactive Triggers
  • White Label
  • A/B Testing
  • Choosing an Industry Template
  • Customizing Qualification Criteria
  • Writing Effective Greeting Messages
  • Objection Handling Best Practices
  • Uploading Documents
  • Supported File Formats
  • How the AI Uses Your Documents
  • Testing Queries Against Your Knowledge Base
  • Calendar Setup (Cal.com / Calendly)
  • CRM Sync (HubSpot)
  • Webhook Configuration
  • Notification Settings
  • Zapier / Make Integration
  • Zapier Integration
  • Authentication
  • Chat API
  • Leads API
  • Conversations API
  • Analytics API
  • Webhooks
  • Rate Limits and Error Codes
  • Code Examples
  • Plans and Pricing
  • Usage Metering
  • Managing Your Subscription
  • Invoices and Receipts
Docs/API Reference/Rate Limits and Error Codes

Rate Limits and Error Codes

Understand Synaptiq API rate limits by plan tier and how to handle error responses.

Rate Limits and Error Codes

The Synaptiq API enforces rate limits to ensure fair usage and platform stability. Limits vary by your subscription plan and the type of API key used.

Rate Limit Tiers

PlanRequests per MinuteRequests per DayConcurrent Connections
Starter6010,0005
Pro300100,00025
Enterprise1,500Unlimited100

Rate limits apply per API key. If your organization uses multiple keys, each key has its own independent limit.

Endpoint-Specific Limits

Some endpoints have additional per-endpoint limits to protect resource-intensive operations:

EndpointStarterProEnterprise
POST /v1/chat30/min150/min750/min
POST /v1/chat (streaming)15/min75/min400/min
GET /v1/analytics/*20/min100/min500/min
POST /v1/leads30/min150/min750/min
GET /v1/leads/search20/min100/min500/min
All other endpoints60/min300/min1,500/min

Rate Limit Headers

Every API response includes headers that report your current rate limit status:

HeaderDescription
X-RateLimit-LimitThe maximum number of requests allowed in the current window.
X-RateLimit-RemainingThe number of requests remaining in the current window.
X-RateLimit-ResetUnix timestamp (seconds) when the current rate limit window resets.
X-RateLimit-RetryAfterSeconds to wait before retrying (only present on 429 responses).

Example Response Headers

HTTP/1.1 200 OK
Content-Type: application/json
X-RateLimit-Limit: 300
X-RateLimit-Remaining: 247
X-RateLimit-Reset: 1743868920

Example 429 Response Headers

HTTP/1.1 429 Too Many Requests
Content-Type: application/json
X-RateLimit-Limit: 300
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1743868920
X-RateLimit-RetryAfter: 23

Handling Rate Limits

When you exceed the rate limit, the API returns a 429 Too Many Requests response:

{
  "error": {
    "code": "rate_limit_exceeded",
    "message": "Rate limit exceeded. You have made too many requests. Please retry after 23 seconds.",
    "retryAfter": 23,
    "limit": 300,
    "doc_url": "https://synaptiqintel.com/docs/api-reference/rate-limits"
  }
}

Recommended Retry Strategy

Implement exponential backoff with jitter to handle rate limits gracefully:

async function fetchWithRetry(url, options, maxRetries = 3) {
  for (let attempt = 0; attempt <= maxRetries; attempt++) {
    const response = await fetch(url, options);

    if (response.status !== 429) {
      return response;
    }

    const retryAfter = parseInt(
      response.headers.get("X-RateLimit-RetryAfter") || "5"
    );
    const jitter = Math.random() * 1000;
    const delay = retryAfter * 1000 + jitter;

    console.log(`Rate limited. Retrying in ${Math.round(delay / 1000)}s...`);
    await new Promise((resolve) => setTimeout(resolve, delay));
  }

  throw new Error("Max retries exceeded due to rate limiting.");
}

Error Response Format

All API errors follow a consistent JSON structure:

{
  "error": {
    "code": "error_code_string",
    "message": "A human-readable description of what went wrong.",
    "details": [],
    "doc_url": "https://synaptiqintel.com/docs/api-reference/..."
  }
}
FieldTypeDescription
codestringA machine-readable error code.
messagestringA human-readable explanation of the error.
detailsarrayOptional. An array of specific validation errors.
doc_urlstringA link to the relevant documentation page.

HTTP Status Codes

Success Codes

CodeStatusDescription
200OKThe request succeeded. Response body contains data.
201CreatedA new resource was created successfully.
204No ContentThe request succeeded with no response body (deletes).

Client Error Codes

CodeStatusError CodeDescription
400Bad Requestinvalid_requestThe request body is malformed or missing required fields.
401UnauthorizedunauthorizedNo API key provided, or the key is invalid or expired.
403ForbiddenforbiddenThe API key does not have the required scope for this operation.
404Not Foundnot_foundThe requested resource does not exist.
409ConflictconflictThe request conflicts with existing data (e.g., duplicate email).
422Unprocessable EntityunprocessableThe request is valid JSON but fails semantic validation.
429Too Many Requestsrate_limit_exceededRate limit exceeded. Check X-RateLimit-RetryAfter header.

Server Error Codes

CodeStatusError CodeDescription
500Internal Server Errorinternal_errorAn unexpected error on our end. Please retry with backoff.
502Bad Gatewaybad_gatewayA downstream service is temporarily unavailable.
503Service Unavailableservice_unavailableThe API is temporarily down for maintenance.
504Gateway Timeoutgateway_timeoutThe request timed out. Try again with a smaller payload.

Validation Error Details

For 400 and 422 errors, the details array provides field-level information:

{
  "error": {
    "code": "invalid_request",
    "message": "Validation failed. Check the details array for specific errors.",
    "details": [
      {
        "field": "email",
        "code": "invalid_format",
        "message": "The email address 'not-an-email' is not a valid email format."
      },
      {
        "field": "phone",
        "code": "invalid_format",
        "message": "Phone number must be in E.164 format (e.g., +15551234567)."
      }
    ],
    "doc_url": "https://synaptiqintel.com/docs/api-reference/leads-api"
  }
}

Common Validation Codes

Validation CodeDescription
requiredA required field is missing.
invalid_formatThe field value does not match the expected format.
too_longThe string exceeds the maximum allowed length.
too_shortThe string is shorter than the minimum required.
out_of_rangeA numeric value is outside the allowed range.
invalid_enumThe value is not one of the allowed options.

Status Page

Monitor the health of the Synaptiq API in real time at synaptiqintel.com/status. Subscribe to receive notifications for incidents and scheduled maintenance.

Was this page helpful?

PreviousWebhooksNextCode Examples