Why am I getting 401 Unauthenticated?
Why am I getting 401 Unauthenticated?
The API key is missing, invalid, or revoked. Check the following:
- Header name: Must be
x-api-key(lowercase).AuthorizationorX-Api-Keywon’t work. - Key format: Must start with
xq_. If it doesn’t, you’re using the wrong value. - Key revoked: Revoked keys return 401 immediately. Generate a new key from the dashboard.
- Session-only endpoint: The API Keys endpoints (
/api/v1/api-keys/*) require session authentication (browser login), not API key auth. You cannot manage API keys via API key.
Why am I getting 403 Monitor Limit Reached?
Why am I getting 403 Monitor Limit Reached?
Your plan allows 1 monitor by default. Creating a second monitor returns:Solutions:
- Delete an unused monitor to free a slot:
DELETE /api/v1/monitors/{id} - Add more monitors from the dashboard billing page ($5/month each)
- Check your current usage:
GET /api/v1/accountshowsmonitorsAllowedandmonitorsUsed
Webhooks not arriving?
Webhooks not arriving?
Webhooks can fail silently. Walk through this checklist:
- Webhook is active: Verify
isActive: trueviaGET /api/v1/webhooks. Inactive webhooks don’t receive deliveries. - HTTPS required: HTTP endpoints are rejected. Your URL must start with
https://. - Response time: We recommend responding with
2xxwithin 10 seconds. Slow responses may be treated as failures. - Check deliveries: Call
GET /api/v1/webhooks/{id}/deliveriesto see delivery status, attempt count, and error messages. - Local testing: If using ngrok or a tunnel, verify it’s running and the URL is current. Ngrok URLs change on restart (free plan).
- Event type mismatch: Your webhook must subscribe to the event types your monitors produce. A webhook listening for
tweet.newwon’t receivetweet.replyevents.
Monitor not tracking events?
Monitor not tracking events?
If your monitor is active but no events appear:
- Check
isActive: Confirm viaGET /api/v1/monitors/{id}thatisActiveistrue. Paused monitors don’t track. - Event propagation delay: Events take seconds to minutes to appear depending on X API latency. This is normal.
- Event types: Verify your monitor’s
eventTypesarray includes the type you expect. A monitor tracking only["tweet.new"]won’t capture replies or retweets. - Account activity: The monitored X account must actually post content matching your event types. No posts = no events.
- Pagination: If listing events, check
hasMorein the response. Older events may be on subsequent pages.
Getting 429 Too Many Requests?
Getting 429 Too Many Requests?
You’ve exceeded the API rate limit. The API uses a 3-tier fixed window (60s):
Solutions:
| Tier | Methods | Limit |
|---|---|---|
| Read | GET, HEAD, OPTIONS | 120 per 60s |
| Write | POST, PUT, PATCH | 30 per 60s |
| Delete | DELETE | 15 per 60s |
- Implement exponential backoff. Start at 1 second, double on each retry, max 5 retries.
- Check the
Retry-Afterheader for the server-recommended wait time. - Use webhooks instead of polling. Webhooks push events to you in real time, eliminating the need for repeated API calls.
- Batch your logic. Fetch events once per minute instead of once per second.
How do I check my usage?
How do I check my usage?
Call
GET /api/v1/account. The currentPeriod object shows your usage:usagePercent: How much of your monthly quota has been consumed (0-100)- At
100, metered calls are rejected until the next billing period
Can I use the API without a subscription?
Can I use the API without a subscription?
Partially. Non-metered endpoints work without an active subscription:
- Work without subscription: Monitors, events, webhooks, API keys, account management
- Require subscription: Draws, extractions, X API lookups (tweets, users, follower checks) return
402withno_subscription
How do I connect an AI agent?
How do I connect an AI agent?
Xquik provides an MCP (Model Context Protocol) server for AI agent integration. 2 tools (
explore + xquik) are available at https://xquik.com/mcp.Setup:- Get your API key from the dashboard
- Configure your AI client with the MCP server URL and API key
- The agent authenticates via the
x-api-keyheader, same as the REST API
- Claude Desktop, Claude Code, ChatGPT (via Agents SDK), Codex CLI, Cursor, VS Code, Windsurf, OpenCode
Getting 402 errors?
Getting 402 errors?
No active subscription or monthly usage quota exhausted. Possible error codes:
no_subscription, subscription_inactive, usage_limit_reached. This affects metered endpoints (draws, extractions, tweet lookups, user lookups, follower checks).Solutions:- Check your remaining balance via
GET /api/v1/account(usagePercentfield) - Wait for the next billing period (quota resets automatically)
- Use Estimate Extraction before running extractions to avoid surprises
Getting extra_usage_disabled?
Getting extra_usage_disabled?
Metered calls return
402 with extra_usage_disabled when your included monthly allowance is consumed and extra usage is not enabled.Fix: Visit the dashboard subscription page and enable extra usage. Once enabled, metered calls continue beyond the included allowance instead of returning 402.Getting frozen (extra usage paused)?
Getting frozen (extra usage paused)?
Metered calls return
402 with frozen even though extra usage was previously enabled.Cause: An overage payment failed. Extra usage freezes until the outstanding balance is resolved.Fix: Visit the dashboard subscription page to update your payment method. Once payment succeeds, extra usage resumes automatically.Getting overage_limit_reached?
Getting overage_limit_reached?
Metered calls return
402 with overage_limit_reached when your accumulated overage hits your current spending limit.Cause: Each account has a spending limit that caps how much overage you can accumulate before the next invoice. Once the limit is reached, metered calls are rejected until the overage is paid.Fix:- Wait for the next overage invoice to be paid. Each successful payment raises your spending limit to the next tier.
- Check your current spending limit and overage on the dashboard subscription page.
Extraction failing with 502?
Extraction failing with 502?
The X data source is temporarily unavailable. This is usually transient.Solutions:
- Retry the request after 5-10 seconds
- Use exponential backoff (see Error Handling)
- If the error persists for more than 5 minutes, the data source may be experiencing an outage
/api/v1/x/*).How do I export extraction results?
How do I export extraction results?
Call
GET /api/v1/extractions/{id}/export?format=csv (or xlsx or md). The response is a file download.Limits:- Maximum 100,000 rows per export (10,000 for PDF)
- Available formats: CSV, JSON, Markdown, Markdown Document, PDF, TXT, XLSX
Still stuck?
Authentication
API key format, header requirements, and dual auth details.
Error Handling
Error codes, retry strategies, and graceful degradation.
Billing & Usage
Pricing, usage quotas, and monthly operation limits.