> ## Documentation Index
> Fetch the complete documentation index at: https://docs.xquik.com/llms.txt
> Use this file to discover all available pages before exploring further.

# X API pricing, credits & billing

> Subscription tiers, credit carry-over, per-operation costs, monitor tweets pricing, credit top-ups, and MPP pay-per-use for the Xquik API

<blockquote className="agent-llms-directive">
  For the complete documentation index, see <a href="/llms.txt">llms.txt</a>.
</blockquote>

Xquik uses a flat subscription model with a monthly credit grant for authenticated API usage. Unused subscription credits carry over in the same balance, and metered reads, writes, extractions, draws, media uploads, and active instant monitors spend from that balance. Some account, webhook, stored monitor, stored event, and credit-management endpoints are free. Eligible MPP read endpoints can also be paid per request without a subscription.

## Subscription

<CardGroup cols={3}>
  <Card title="Starter" icon="rocket">
    USD 20/month. Includes 140,000 monthly credits (USD 0.00014/credit).
    Prototyping and low-volume integrations. Monitor slots are unlimited.
  </Card>

  <Card title="Pro" icon="gauge">
    USD 99/month. Includes 770,000 monthly credits (USD 0.00013/credit).
    Production workloads and growing teams. Monitor slots are unlimited.
  </Card>

  <Card title="Business" icon="building-2">
    USD 199/month. Includes 1,670,000 monthly credits (USD 0.00012/credit).
    High-volume automation and enterprise use. Monitor slots are unlimited.
  </Card>
</CardGroup>

Higher tiers give you more credits at a lower per-credit cost. PAYG credits cost USD 0.00015 each.

All tiers support unlimited monitor slots. Active instant monitors cost 21 credits per hour and check every 1 second. Event and webhook deliveries are included in active monitor billing.

Subscribe from the [dashboard](https://xquik.com). Your subscription activates immediately and renews monthly. An active subscription is required for authenticated metered API access. MPP read endpoints are the separate pay-per-use path.

### Pick a billing path by job

Use these cards when you need to estimate a real X API task before you run it:

<CardGroup cols={2}>
  <Card title="Search tweets to CSV or JSON" icon="search">
    Use [`GET /x/tweets/search`](/api-reference/x/search-tweets) for a page of tweets or [extractions](/guides/extraction-workflow) for exportable jobs. Cost: 1 credit per tweet returned or extracted.
  </Card>

  <Card title="Export followers" icon="users">
    Use [Follower extraction](/guides/extraction-workflow) for CSV/JSON/XLSX exports or [`GET /x/users/{id}/followers`](/api-reference/x/followers) for paginated API reads. Cost: 1 credit per follower returned.
  </Card>

  <Card title="Post tweets or replies" icon="send">
    Use [Create tweet](/api-reference/x-write/create-tweet). Send public media URLs in `media` when posting media. Cost: 30 credits text-only, plus 2 credits per started MB across attached media.
  </Card>

  <Card title="Upload media for DMs" icon="image">
    Use [Upload media](/api-reference/x-write/upload-media) when a DM needs an uploaded `media_id`. Cost: 10 credits per media upload call.
  </Card>

  <Card title="Monitor tweets to webhooks" icon="radio">
    Use [account and keyword monitors](/api-reference/monitors/create) for tweet alerts and signed webhooks. Cost: 21 credits per active monitor-hour, with a 500-credit daily estimate.
  </Card>

  <Card title="Recover from 402" icon="credit-card">
    Use [`GET /credits`](/api-reference/credits/get), [checkout top-up](/api-reference/credits/topup), or [quick top-up](/api-reference/credits/quick-topup). Checkout top-ups start at USD 10; quick top-up charges a saved payment method for USD 10-500.
  </Card>
</CardGroup>

### Monitor pricing

Account monitors and keyword monitors use the same active billing rate:

<CardGroup cols={2}>
  <Card title="Account monitor slots" icon="users">
    Account monitor slots are unlimited. Active account monitors bill only while enabled.
  </Card>

  <Card title="Keyword monitor slots" icon="search">
    Keyword monitor slots are unlimited. Active keyword monitors use the same hourly rate.
  </Card>

  <Card title="Active monitor hour" icon="clock">
    Each active instant monitor costs 21 credits per active monitor-hour.
  </Card>

  <Card title="Check interval" icon="timer">
    Instant monitors check every 1 second while active.
  </Card>

  <Card title="Webhook and event delivery" icon="radio">
    Webhook and event deliveries are included in active monitor billing.
  </Card>
</CardGroup>

Creating or reactivating an account monitor requires at least 22 available credits: 1 credit for the username lookup plus the 21-credit first active monitor-hour. Creating or reactivating a keyword monitor also requires at least 22 available credits and then bills active monitor hours at 21 credits per hour while enabled.

New active monitors are due for billing immediately. The create response includes `nextBillingAt`; after a successful hourly charge, the next billing time advances by 1 hour. If hourly billing cannot charge enough credits, the monitor may pause until credits are available.

Use [`GET /account`](/api-reference/account/get) to inspect current monitor billing. `monitorsUsed`, `monitorBilling.activeHourlyBurn`, and `monitorBilling.activeDailyEstimate` include active account monitors and active keyword monitors.

### Plan monitor credits before you monitor tweets

Use `GET /account` before creating more tweet monitors or tweet alerts. Each active account monitor or keyword monitor adds `21` credits to `monitorBilling.activeHourlyBurn` and `500` credits to `monitorBilling.activeDailyEstimate`.

<CardGroup cols={3}>
  <Card title="1 active monitor" icon="radio">
    Hourly burn: 21 credits/hour. Daily estimate: 500 credits/day. Keep at least 22 credits before creating or reactivating one more monitor.
  </Card>

  <Card title="5 active monitors" icon="activity">
    Hourly burn: 105 credits/hour. Daily estimate: 2,500 credits/day. Keep at least 22 credits before creating or reactivating one more monitor.
  </Card>

  <Card title="10 active monitors" icon="gauge">
    Hourly burn: 210 credits/hour. Daily estimate: 5,000 credits/day. Keep at least 22 credits before creating or reactivating one more monitor.
  </Card>
</CardGroup>

The daily estimate is the value returned by the account API for capacity planning. It is intentionally rounded for alerting and top-up thresholds. If `creditInfo.balance` is below the next hourly burn, top up before enabling more monitors.

## Monthly credits & carry-over

Every paid subscription invoice adds the monthly credit grant to your account balance. Subscription credits, top-up credits, and automatic top-up credits stay in that balance until you spend them.

* All metered operations deduct from a **single shared pool**
* No separate buckets per operation type
* Unused subscription credits **carry over** to the next billing period
* API calls are also subject to [rate limits](/guides/rate-limits) (separate from credit usage)
* When the shared balance reaches 0, metered calls return `402 Payment Required` (see [error handling](/guides/error-handling#billing--subscription-errors-402) for recovery patterns)
* Reading and managing stored monitor records, stored events, webhooks, and account endpoints are free. Active instant monitors are billed hourly while enabled.

```json 402 response body theme={null}
{ "error": "no_subscription", "message": "Subscribe to access this endpoint" }
```

> **Warning:** Metered calls are rejected once credits are consumed. [Top up credits](/api-reference/credits/topup) from the dashboard to continue.

## Per-operation costs

Each metered operation deducts credits from your shared pool. Per-credit cost depends on your plan - from USD 0.00012 (Business) to USD 0.00015 (PAYG).

| Endpoint                                                  | Unit                                 | Credits |
| --------------------------------------------------------- | ------------------------------------ | ------- |
| [Bookmark folders](/api-reference/x/bookmark-folders)     | per call                             | 1       |
| [Bookmarks](/api-reference/x/bookmarks)                   | per result                           | 1       |
| Community join/leave                                      | per call                             | 10      |
| [Create tweet](/api-reference/x-write/create-tweet)       | text-only call                       | 30      |
| Create tweet attached media                               | per started MB across all files      | 2       |
| [Delete tweet](/api-reference/x-write/delete-tweet)       | per call                             | 10      |
| [DM history](/api-reference/x/dm-history)                 | per result                           | 1       |
| [Download media](/api-reference/x/download-media)         | per fresh tweet processed with media | 1       |
| [Favoriters](/api-reference/x/favoriters)                 | per result                           | 1       |
| [Follow](/api-reference/x-write/follow)                   | per call                             | 10      |
| [Follow check](/api-reference/x/check-follower)           | per call                             | 5       |
| [Followers you know](/api-reference/x/followers-you-know) | per result                           | 1       |
| [Get article](/api-reference/x/get-article)               | per call                             | 5       |
| [Get tweet](/api-reference/x/get-tweet)                   | per call                             | 1       |
| [Get user](/api-reference/x/get-user)                     | per call                             | 1       |
| [Like](/api-reference/x-write/like)                       | per call                             | 10      |
| Active instant monitor                                    | per active monitor-hour              | 21      |
| [Notifications](/api-reference/x/notifications)           | per result                           | 1       |
| [Retweet](/api-reference/x-write/retweet)                 | per call                             | 10      |
| [Remove follower](/api-reference/x-write/remove-follower) | per call                             | 10      |
| [Search tweets](/api-reference/x/search-tweets)           | per tweet returned                   | 1       |
| [Send DM](/api-reference/x-write/send-dm)                 | per call                             | 10      |
| [Timeline](/api-reference/x/timeline)                     | per result                           | 1       |
| [Trends](/api-reference/x/trends)                         | per call                             | 3       |
| [Unfollow](/api-reference/x-write/unfollow)               | per call                             | 10      |
| [Unlike](/api-reference/x-write/unlike)                   | per call                             | 10      |
| [Unretweet](/api-reference/x-write/unretweet)             | per call                             | 10      |
| [Upload media](/api-reference/x-write/upload-media)       | per call                             | 10      |
| [User likes](/api-reference/x/user-likes)                 | per result                           | 1       |
| [User media](/api-reference/x/user-media)                 | per result                           | 1       |
| [User replies timeline](/api-reference/x/user-replies)    | per tweet returned                   | 1       |
| [User timeline](/api-reference/x/user-tweets)             | per tweet returned                   | 1       |
| [Verified followers](/api-reference/x/verified-followers) | per result                           | 1       |

### Extractions & draws

Extractions consume 1 or 5 credits per result depending on the extraction type:

<CardGroup cols={3}>
  <Card title="Tweet-style results" icon="message-square">
    1 credit per result. Includes tweets, replies, quotes, mentions, posts, likes, media, and search exports.
  </Card>

  <Card title="People results" icon="users">
    1 credit per result. Includes followers, following, favoriters, retweeters, community members, people search, list members, list followers, and verified followers.
  </Card>

  <Card title="Article results" icon="file-text">
    5 credits per result. Applies to article extractions.
  </Card>
</CardGroup>

Draws charge for the source tweet lookup, reply search, optional retweeter profile checks when `mustRetweet` is true, and optional follow checks for unique authors when `mustFollowUsername` is set. The draw first checks that the minimum cost is affordable. Remaining credits cap how many replies and retweeters can be inspected before filters and winner selection run. If the final computed cost cannot be deducted, the API returns `402 insufficient_credits` and does not persist a draw result.

### Credit-affordable result pages

Paid X read endpoints that charge per returned result treat `limit`, `pageSize`, `count`, and multi-ID request sizes as upper bounds. If the remaining credit balance cannot cover the full requested page, the endpoint can return fewer results than requested. If zero paid results are affordable, it returns `402 insufficient_credits`.

### Free operations

The following do not consume credits: reading and managing stored monitor records, reading stored monitor events, all webhook operations (create, get, update, delete, deliveries, test), reading, fetching, and exporting extractions and draws, cost estimates, tweet composition (compose, refine, score), style cache management, drafts, support tickets, API key management, X account management, and credit top-ups ([checkout](/api-reference/credits/topup), [checkout status](/api-reference/credits/topup-status), and [quick top-up](/api-reference/credits/quick-topup)). Account status and [radar](/api-reference/radar/list) are also free. Active instant monitors cost 21 credits per hour while enabled.

## Credit top-ups

If you need more credits beyond your current balance, purchase additional credits from the dashboard:

* Use the [top-up endpoint](/api-reference/credits/topup) to redirect to checkout
* Use the [top-up status endpoint](/api-reference/credits/topup-status) to poll checkout completion
* Use the [quick top-up endpoint](/api-reference/credits/quick-topup) to instantly charge your saved payment method
* Configure automatic top-up from the dashboard. `GET /credits` and `GET /account` return the enabled status, dollar amount, and trigger threshold.
* Top-up credits cost USD 0.00015 each and are added to your balance immediately
* Top-up credits do not expire and carry over between billing periods

> **Example:** Starter tier (USD 20, 140K credits). A USD 10 top-up adds 66,666 credits at USD 0.00015 per credit, rounded down to whole credits.

### Recover from 402

When a metered call returns `402 no_credits` or `402 insufficient_credits`, keep the failed request body, top up, then retry the same metered call.

1. Check the current balance:

```bash theme={null}
curl -s https://xquik.com/api/v1/credits \
  -H "x-api-key: xq_YOUR_KEY_HERE" | jq
```

```json theme={null}
{
  "balance": "450",
  "lifetime_purchased": "1000",
  "lifetime_used": "550",
  "auto_topup_enabled": false,
  "auto_topup_amount_dollars": 10,
  "auto_topup_threshold": "50000"
}
```

2. Create a checkout top-up when no saved payment method is available:

```bash theme={null}
curl -s -X POST https://xquik.com/api/v1/credits/topup \
  -H "x-api-key: xq_YOUR_KEY_HERE" \
  -H "Content-Type: application/json" \
  -d '{"dollars": 10}' | jq
```

```json theme={null}
{
  "url": "https://xquik.com/billing/checkout/session"
}
```

3. Use quick top-up only when the account already has a saved payment method:

```bash theme={null}
curl -s -X POST https://xquik.com/api/v1/credits/quick-topup \
  -H "x-api-key: xq_YOUR_KEY_HERE" \
  -H "Content-Type: application/json" \
  -d '{"dollars": 25}' | jq
```

```json theme={null}
{
  "outcome": "charged",
  "balance": "167116",
  "credits": "166666"
}
```

A USD 25 quick top-up adds 166,666 credits at USD 0.00015 per credit, rounded down to whole credits.

Only the `charged` quick top-up outcome grants credits. If quick top-up returns `no_payment_method`, create a checkout top-up instead. If it returns `requires_action`, complete the payment confirmation flow before retrying the metered API call.

## Pay-per-use (MPP)

32 X-API read-only endpoints accept [MPP](/mpp/overview) payments. No subscription required. Media downloads require API key or session-cookie auth because they create account-tied gallery links.

### MPP per-call pricing

Use [MPP overview](/mpp/overview#eligible-endpoints) for the full 32-endpoint route list. This mobile summary keeps price bands close to billing examples.

<CardGroup cols={2}>
  <Card title="USD 0.00015 units" icon="coins">
    Most reads cost USD 0.00015 per call, tweet, user, or community. Examples: `GET /x/tweets/{id}`, `GET /x/tweets/search`, `GET /x/users/{id}`, `GET /x/users/{id}/followers`, timelines, replies, quotes, communities, and lists.
  </Card>

  <Card title="USD 0.00105 calls" icon="badge-dollar-sign">
    Higher-cost flat charge intent calls: `GET /x/followers/check` and `GET /x/articles/{tweetId}`.
  </Card>

  <Card title="USD 0.00045 trends" icon="trending-up">
    Trend lookups use flat charge intent pricing: `GET /trends` and `GET /x/trends`.
  </Card>

  <Card title="Charge vs session" icon="receipt">
    Charge intent endpoints bill once per call. Session intent endpoints deposit funds, then deduct by returned tweet, user, or community.
  </Card>
</CardGroup>

> **Note:** With a subscription, a monthly credit grant is added to your balance and unused credits carry over. With MPP, every call is billed individually with no monthly commitment.

Related MPP pages:

* [MPP overview](/mpp/overview): Protocol details, eligible endpoints, and comparison with subscriptions.
* [MPP quickstart](/mpp/quickstart): Make your first pay-per-use API call.

## Checking usage

Call `GET /api/v1/account` to see your credit balance, lifetime usage, and monitor billing:

```bash theme={null}
curl -s https://xquik.com/api/v1/account \
 -H "x-api-key: xq_YOUR_KEY_HERE" | jq
```

**Response:**

```json theme={null}
{
  "plan": "active",
  "monitorsAllowed": 9007199254740991,
  "monitorsUsed": 1,
  "monitorBilling": {
    "activeDailyEstimate": "500",
    "activeHourlyBurn": "21",
    "creditsPerActiveMonitorDay": "500",
    "creditsPerActiveMonitorHour": "21",
    "eventsIncluded": true,
    "instantCheckIntervalSeconds": 1,
    "unlimitedSlots": true
  },
  "creditInfo": {
    "balance": "77000",
    "lifetimePurchased": "140000",
    "lifetimeUsed": "63000",
    "autoTopupEnabled": false,
    "autoTopupAmountDollars": 10,
    "autoTopupThreshold": "50000"
  }
}
```

The `creditInfo.balance` field shows how many credits remain. The automatic top-up fields show whether top-up is enabled, the charge amount, and the balance threshold. At 0, metered calls are rejected until you [top up credits](/api-reference/credits/topup).

> **Tip:** Poll the account endpoint periodically to track usage. Build alerts when `creditInfo.balance` drops below 20% of your plan's monthly credit grant to avoid hitting the limit unexpectedly.

## FAQ

### What happens when I run out of credits?

Metered calls return `402 Payment Required`. Reading stored monitor events, webhooks, and account endpoints continue working. Active monitors may pause when hourly billing cannot be charged. [Top up credits](/api-reference/credits/topup) from the dashboard to continue.

### Do unused credits carry over?

Yes. Subscription credits and top-up credits stay in the shared balance until you spend them.

### How do I check my credit balance?

Call `GET /api/v1/account` - the `creditInfo.balance` field shows remaining credits.

### Can I downgrade or cancel anytime?

Yes. Changes take effect at the end of the current billing period.

### Can I top up credits without a checkout redirect?

Yes. Use the [quick top-up endpoint](/api-reference/credits/quick-topup) to instantly charge your saved payment method. If no card is on file, use the standard [top-up endpoint](/api-reference/credits/topup), which redirects to checkout.

## Next steps

* [Get Account](/api-reference/account/get): Full account endpoint reference with response schema.
* [API Overview](/api-reference/overview): Base URL, authentication, rate limits, and conventions.
