Skip to main content
POST
/
monitors
Create account monitor
curl --request POST \
  --url https://xquik.com/api/v1/monitors \
  --header 'Content-Type: <content-type>' \
  --header 'x-api-key: <api-key>' \
  --data '
{
  "username": "<string>",
  "eventTypes": [
    "<string>"
  ]
}
'

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.

Requires 22 available credits - 1 credit for the username lookup plus 21 credits for the first active monitor hour
Monitors are unlimited. Active monitors check every 1 second. Webhook and event deliveries are included in active monitor billing.
curl -X POST https://xquik.com/api/v1/monitors \
  -H "x-api-key: xq_YOUR_KEY_HERE" \
  -H "Content-Type: application/json" \
  -d '{
    "username": "elonmusk",
    "eventTypes": ["tweet.new", "tweet.reply"]
  }' |
  jq -c '{
    monitor_id: .id,
    username: .username,
    x_user_id: .xUserId,
    event_types: .eventTypes,
    is_active: .isActive,
    created_at: .createdAt,
    next_billing_at: .nextBillingAt,
    verify_endpoint: "/api/v1/monitors/\(.id)",
    update_endpoint: "/api/v1/monitors/\(.id)",
    delete_endpoint: "/api/v1/monitors/\(.id)",
    events_endpoint: "/api/v1/events?monitorId=\(.id)",
    event_detail_endpoint_pattern: "/api/v1/events/{event_id}",
    webhooks_endpoint: "/api/v1/webhooks",
    deliveries_endpoint_pattern: "/api/v1/webhooks/{webhook_id}/deliveries"
  }'
The cURL, Node.js, Python, and Go examples convert the created or reactivated account monitor into one state row. Store monitor_id, username, x_user_id, event_types, is_active, next_billing_at, verify_endpoint, update_endpoint, delete_endpoint, events_endpoint, event_detail_endpoint_pattern, webhooks_endpoint, and deliveries_endpoint_pattern before routing alerts.

Account monitor handoff

Use POST /monitors when a queue, CRM, warehouse, Slack alert, or agent needs real-time tweet alerts from one X account. Create the monitor first, then create a signed webhook with POST /webhooks and test it with POST /webhooks/{id}/test.

Monitor ID

Store id as monitor_id. Use Get Monitor to verify state, Update Monitor to pause or resume, and Delete Monitor only when the account should stop permanently.

Stored Account

Store username after trimming the @ prefix and xUserId for identity joins, dedupe, and downstream account mapping.

Event Filter

Store eventTypes; keep List Webhooks subscriptions aligned so expected account activity delivers.

Active State

Read isActive and nextBillingAt before enabling alerts or estimating hourly monitor burn.

Stored Event Join

Use monitorType: "account", monitorId, and username from List Events to join stored events back to the monitored account. Use Get Event for one event’s full payload.

Webhook Delivery Join

Use deliveryId for receiver idempotency and List Deliveries for delivery attempts. Join streamEventId to event IDs; do not use x_event_id as the delivery join key. Store eventType, occurredAt, and data with the downstream job.
Active account monitors check every 1 second and cost 21 credits per active monitor-hour. Creation or reactivation requires 22 available credits: 1 credit for the username lookup plus 21 credits for the first active monitor hour. Pause with Update Monitor (PATCH /monitors/{id}) and { "isActive": false } when the alert should stop.

Headers

x-api-key
string
required
Your API key. Session cookie authentication is also supported. Generate a key from the dashboard.
Content-Type
string
required
Must be application/json.

Body

username
string
required
X username to monitor. 1-15 characters, alphanumeric and underscores only. The @ prefix is automatically stripped if included.
eventTypes
string[]
required
Array of event types to subscribe to. At least 1 required. See Valid Event Types below.

Valid event types

Valid account monitor types: tweet.new, tweet.quote, tweet.reply, tweet.retweet, tweet.media, tweet.link, tweet.poll, tweet.mention, tweet.hashtag, tweet.longform, profile.avatar.changed, profile.banner.changed, profile.name.changed, profile.username.changed, profile.bio.changed, profile.location.changed, profile.url.changed, profile.verified.changed, profile.protected.changed, profile.pinned_tweet.changed, profile.unavailable.changed.

tweet.new

Original tweet from the monitored account. Used when no reply, quote, or retweet signal is present.

tweet.quote

Quote tweet from the monitored account. Include this when quote activity should create stored events and webhook deliveries.

tweet.reply

Reply from the monitored account. Include this when support routing, conversation tracking, or alerting needs replies.

tweet.retweet

Retweet from the monitored account. Include this when repost activity should create stored events and webhook deliveries.

Response

id
string
Unique monitor ID.
username
string
Stored X username after trimming and removing the @ prefix.
xUserId
string
Resolved X user ID for the account.
eventTypes
string[]
Event types this monitor is subscribed to.
isActive
boolean
Whether the monitor is currently active.
createdAt
string
ISO 8601 timestamp of when the monitor was created.
nextBillingAt
string
Next hourly credit charge time. New active monitors are due immediately.
{
  "id": "7",
  "username": "elonmusk",
  "xUserId": "44196397",
  "eventTypes": ["tweet.new", "tweet.reply"],
  "isActive": true,
  "createdAt": "2026-02-24T10:30:00.000Z",
  "nextBillingAt": "2026-02-24T10:30:00.000Z"
}
If a monitor for the same account was previously deleted, it will be silently reactivated with the new event types instead of creating a duplicate.
Next steps: List Monitors to see all your monitors, Get Monitor to fetch details, Update Monitor to pause or resume, Create Webhook to receive events, List Webhooks to check subscriptions, List Events and Get Event to audit stored events, or List Deliveries to inspect webhook attempts.
Last modified on May 22, 2026