Skip to main content
GET
/
monitors
/
keywords
List keyword monitors
curl --request GET \
  --url https://xquik.com/api/v1/monitors/keywords \
  --header 'x-api-key: <api-key>'
Free - does not consume credits
curl -X GET https://xquik.com/api/v1/monitors/keywords \
  -H "x-api-key: xq_YOUR_KEY_HERE" |
  jq -c '.monitors[] | {
    keyword_monitor_id: .id,
    query: .query,
    event_types: .eventTypes,
    is_active: .isActive,
    next_billing_at: .nextBillingAt,
    events_endpoint: "/api/v1/events?keywordMonitorId=\(.id)",
    event_detail_endpoint_pattern: "/api/v1/events/{event_id}",
    verify_endpoint: "/api/v1/monitors/keywords/\(.id)",
    update_endpoint: "/api/v1/monitors/keywords/\(.id)",
    delete_endpoint: "/api/v1/monitors/keywords/\(.id)",
    webhooks_endpoint: "/api/v1/webhooks",
    deliveries_endpoint_pattern: "/api/v1/webhooks/{webhook_id}/deliveries"
  }'
The cURL, Node.js, Python, and Go examples convert each keyword monitor into one inventory row. Store keyword_monitor_id, query, event_types, is_active, next_billing_at, events_endpoint, event_detail_endpoint_pattern, verify_endpoint, update_endpoint, delete_endpoint, webhooks_endpoint, and deliveries_endpoint_pattern before reconciling events, webhooks, or paused queries.

Inventory handoff

Use GET /monitors/keywords after create, update, pause, or delete operations to rebuild your keyword monitor inventory. The response returns up to 200 keyword monitors ordered by creation time and a total count for the returned set.

Active Burn

Filter monitors where isActive is true. Each active keyword monitor bills 21 credits per active monitor-hour; use nextBillingAt to schedule credit checks or pause stale alerts.

Webhook Alignment

Compare each monitor’s eventTypes with List Webhooks before relying on signed alerts.

Event Backfill

Use id as keywordMonitorId with List Events to audit stored monitor events. Use Get Event for one event’s full payload.

Delivery Audit

Use List Deliveries when webhook delivery evidence must be retained. Join delivery streamEventId to event IDs. Do not use x_event_id as the delivery join key.

Detail Check

Use Get Keyword Monitor before changing a row. Store the returned query, eventTypes, isActive, and nextBillingAt.

State Repair

Use Update Keyword Monitor to replace eventTypes or toggle isActive. Use Delete Keyword Monitor only when the query should stop permanently.

Headers

x-api-key
string
required
Your API key. Session cookie authentication is also supported. Generate a key from the dashboard.

Response

monitors
object[]
Array of keyword monitor objects.
monitors[].id
string
Unique keyword monitor ID.
monitors[].query
string
Normalized X search query.
monitors[].eventTypes
string[]
Subscribed event types.
monitors[].isActive
boolean
Whether the monitor is currently active.
monitors[].createdAt
string
ISO 8601 creation timestamp.
monitors[].nextBillingAt
string
Next hourly credit charge time for active monitor billing.
total
number
Total number of keyword monitors.
{
  "monitors": [
    {
      "id": "21",
      "query": "xquik OR \"x api\"",
      "eventTypes": ["tweet.new"],
      "isActive": true,
      "createdAt": "2026-02-24T10:30:00.000Z",
      "nextBillingAt": "2026-02-24T11:30:00.000Z"
    }
  ],
  "total": 1
}
Returns up to 200 keyword monitors. There is no pagination. Contact support if you need more.
Related: Create Keyword Monitor to add a query, Get Keyword Monitor to fetch one monitor, Update Keyword Monitor to pause or edit it, Delete Keyword Monitor to remove it, List Events and Get Event to audit events, or List Webhooks and List Deliveries to audit delivery evidence.
Last modified on May 24, 2026