Skip to main content
The Xquik REST API v1 provides programmatic access to X data and automation. Endpoints are organized into these categories:

Monitors & Events

Create monitors, retrieve events, manage webhooks

Draws & Extractions

Run giveaway draws, extract tweet data

X Data

User lookups, tweet search, trends, media downloads

X Write Actions

Post tweets, like, retweet, follow, DM, profile updates

Account & Billing

Account info, API keys, drafts, styles, subscriptions

Base URL

https://xquik.com/api/v1
All endpoints are served over HTTPS only. Plain HTTP requests receive a 301 redirect to HTTPS. Always use the full base URL - there is no shorthand or versioned subdomain.

OpenAPI spec

The full API specification is available as an OpenAPI 3.1 document:
https://xquik.com/openapi.json
Use this with any OpenAPI-compatible tool (Postman, Insomnia, Swagger UI) or to generate client libraries. The spec follows RFC 9727 service discovery conventions.

Authentication

Pass your API key via the x-api-key header:
x-api-key: xq_YOUR_KEY_HERE
Generate keys from your dashboard. See Authentication for full details on key format, dual auth endpoints, and security best practices.

Machine Payments Protocol

32 X-API endpoints also accept anonymous MPP payments. The server returns a 402 challenge; your client pays via Tempo (USDC) and retries with a payment credential. No API key needed. See the MPP overview for eligible endpoints and pricing.

First request

Copy-paste this to verify your API key works:
curl -s https://xquik.com/api/v1/account \
  -H "x-api-key: xq_YOUR_KEY_HERE" | jq
Response:
{
  "plan": "active",
  "monitorsAllowed": 1,
  "monitorsUsed": 0,
  "currentPeriod": {
    "start": "2026-02-01T00:00:00.000Z",
    "end": "2026-03-01T00:00:00.000Z",
    "usagePercent": 0
  }
}
Replace xq_YOUR_KEY_HERE with your actual API key from the dashboard. If you get 401, double-check that the header name is x-api-key (lowercase) and the key starts with xq_.

Rate limits

TierMethodsLimit
ReadGET, HEAD, OPTIONS120 per 60s
WritePOST, PUT, PATCH30 per 60s
DeleteDELETE15 per 60s
Exceeding limits returns 429 Too Many Requests with a Retry-After header. See the Rate Limits guide for backoff implementations in multiple languages.

Conventions

All IDs are returned as strings representing bigint values. Always treat IDs as opaque strings - never parse them as numbers:
{ "id": "123456789" }
All timestamps use ISO 8601 format in UTC. Store and compare timestamps as strings or parse them into proper date objects:
{ "createdAt": "2026-02-24T10:30:00.000Z" }
All errors return a JSON body with an error field containing a machine-readable error code:
{ "error": "error_code" }
Common errors:
StatusCodeMeaning
400invalid_inputRequest body failed validation
401unauthenticatedMissing or invalid API key
402no_subscriptionNo active subscription
402usage_limit_reachedMonthly usage limit exceeded
404not_foundResource does not exist
429Rate limited — retry with backoff
502x_api_unavailableX data source temporarily unavailable — retry
See Error Handling for the full error code list and handling strategies.
Events, draws, extractions, and drafts use cursor-based pagination. When more results exist, the response includes hasMore: true and a nextCursor value:
{
  "events": [],
  "hasMore": true,
  "nextCursor": "MjAyNi0wMi0yNFQxMDozMDowMC4wMDBa..."
}
Pass nextCursor as the after query parameter to fetch the next page:
curl "https://xquik.com/api/v1/events?after=MjAyNi0wMi0yNFQxMDozMDowMC4wMDBa..." \
 -H "x-api-key: xq_YOUR_KEY_HERE"
Cursors are opaque strings - do not decode or construct them manually. Monitors, webhooks, and API keys return up to 200 items without pagination.

Event types

Monitor events

Used across monitors, webhooks, and events:
TypeDescription
tweet.newOriginal tweet posted by the monitored account
tweet.quoteQuote tweet posted by the monitored account
tweet.replyReply posted by the monitored account
tweet.retweetRetweet posted by the monitored account
follower.gainedNew follower gained by the monitored account
follower.lostFollower lost by the monitored account

Integration events

Integrations (Telegram push notifications) support 3 additional event types for job completion:
TypeDescription
draw.completedGiveaway draw finished with winners selected
extraction.completedExtraction job completed with results ready
extraction.failedExtraction job failed

Next steps

Error Handling

Handle errors gracefully with retries and fallbacks.

Rate Limits

Understand limits and implement backoff strategies.

Workflows

End-to-end examples: monitors, events, and webhooks.

X Data Endpoints

User lookups, tweet search, trends, and media downloads.

X Write Actions

Post tweets, like, retweet, follow, DM, and more.

Monitors

Track X accounts and receive real-time events.