Skip to main content
GET
/
monitors
List monitors
curl --request GET \
  --url https://xquik.com/api/v1/monitors \
  --header 'x-api-key: <api-key>'
import requests

url = "https://xquik.com/api/v1/monitors"

headers = {"x-api-key": "<api-key>"}

response = requests.get(url, headers=headers)

print(response.text)
const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};

fetch('https://xquik.com/api/v1/monitors', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
package main

import (
"fmt"
"net/http"
"io"
)

func main() {

url := "https://xquik.com/api/v1/monitors"

req, _ := http.NewRequest("GET", url, nil)

req.Header.Add("x-api-key", "<api-key>")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
Free - does not consume credits
curl -X GET https://xquik.com/api/v1/monitors \
  -H "x-api-key: xq_YOUR_KEY_HERE" | jq -c '.monitors[] | {
    monitor_id: .id,
    username,
    x_user_id: .xUserId,
    event_types: .eventTypes,
    is_active: .isActive,
    created_at: .createdAt,
    next_billing_at: .nextBillingAt,
    monitor_detail_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"
  }'
const response = await fetch("https://xquik.com/api/v1/monitors", {
  method: "GET",
  headers: {
    "x-api-key": "xq_YOUR_KEY_HERE",
  },
});
const payload = await response.json();
for (const monitor of payload.monitors) {
  const monitorRow = {
    monitor_id: monitor.id,
    username: monitor.username,
    x_user_id: monitor.xUserId,
    event_types: monitor.eventTypes,
    is_active: monitor.isActive,
    created_at: monitor.createdAt,
    next_billing_at: monitor.nextBillingAt,
    monitor_detail_endpoint: `/api/v1/monitors/${monitor.id}`,
    events_endpoint: `/api/v1/events?monitorId=${monitor.id}`,
    event_detail_endpoint_pattern: "/api/v1/events/{event_id}",
    webhooks_endpoint: "/api/v1/webhooks",
    deliveries_endpoint_pattern: "/api/v1/webhooks/{webhook_id}/deliveries",
  };
  process.stdout.write(`${JSON.stringify(monitorRow)}\n`);
}
import json
import requests

response = requests.get(
    "https://xquik.com/api/v1/monitors",
    headers={"x-api-key": "xq_YOUR_KEY_HERE"},
)
payload = response.json()
for monitor in payload["monitors"]:
    monitor_row = {
        "monitor_id": monitor["id"],
        "username": monitor["username"],
        "x_user_id": monitor["xUserId"],
        "event_types": monitor["eventTypes"],
        "is_active": monitor["isActive"],
        "created_at": monitor["createdAt"],
        "next_billing_at": monitor["nextBillingAt"],
        "monitor_detail_endpoint": f"/api/v1/monitors/{monitor['id']}",
        "events_endpoint": f"/api/v1/events?monitorId={monitor['id']}",
        "event_detail_endpoint_pattern": "/api/v1/events/{event_id}",
        "webhooks_endpoint": "/api/v1/webhooks",
        "deliveries_endpoint_pattern": "/api/v1/webhooks/{webhook_id}/deliveries",
    }
    print(json.dumps(monitor_row))
package main

import (
    "encoding/json"
    "log"
    "net/http"
    "os"
)

type Monitor struct {
    ID            string   `json:"id"`
    Username      string   `json:"username"`
    XUserID       string   `json:"xUserId"`
    EventTypes    []string `json:"eventTypes"`
    IsActive      bool     `json:"isActive"`
    CreatedAt     string   `json:"createdAt"`
    NextBillingAt string   `json:"nextBillingAt"`
}

type MonitorListResponse struct {
    Monitors []Monitor `json:"monitors"`
    Total    int       `json:"total"`
}

type MonitorRow struct {
    DeliveriesEndpointPattern  string   `json:"deliveries_endpoint_pattern"`
    EventDetailEndpointPattern string   `json:"event_detail_endpoint_pattern"`
    EventsEndpoint             string   `json:"events_endpoint"`
    EventTypes                 []string `json:"event_types"`
    CreatedAt                  string   `json:"created_at"`
    IsActive                   bool     `json:"is_active"`
    MonitorDetailEndpoint      string   `json:"monitor_detail_endpoint"`
    MonitorID                  string   `json:"monitor_id"`
    NextBillingAt              string   `json:"next_billing_at"`
    Username                   string   `json:"username"`
    WebhooksEndpoint           string   `json:"webhooks_endpoint"`
    XUserID                    string   `json:"x_user_id"`
}

func main() {
    req, err := http.NewRequest("GET", "https://xquik.com/api/v1/monitors", nil)
    if err != nil {
        log.Fatal(err)
    }
    req.Header.Set("x-api-key", "xq_YOUR_KEY_HERE")

    resp, err := http.DefaultClient.Do(req)
    if err != nil {
        log.Fatal(err)
    }
    defer resp.Body.Close()

    var payload MonitorListResponse
    if err := json.NewDecoder(resp.Body).Decode(&payload); err != nil {
        log.Fatal(err)
    }
    encoder := json.NewEncoder(os.Stdout)
    for _, monitor := range payload.Monitors {
        row := MonitorRow{
            DeliveriesEndpointPattern:  "/api/v1/webhooks/{webhook_id}/deliveries",
            EventDetailEndpointPattern: "/api/v1/events/{event_id}",
            EventsEndpoint:             "/api/v1/events?monitorId=" + monitor.ID,
            EventTypes:                 monitor.EventTypes,
            CreatedAt:                  monitor.CreatedAt,
            IsActive:                   monitor.IsActive,
            MonitorDetailEndpoint:      "/api/v1/monitors/" + monitor.ID,
            MonitorID:                  monitor.ID,
            NextBillingAt:              monitor.NextBillingAt,
            Username:                   monitor.Username,
            WebhooksEndpoint:           "/api/v1/webhooks",
            XUserID:                    monitor.XUserID,
        }
        if err := encoder.Encode(row); err != nil {
            log.Fatal(err)
        }
    }
}
The Node.js, Python, and Go examples convert each account monitor into one inventory row. Store monitor_id, username, x_user_id, event_types, is_active, next_billing_at, monitor_detail_endpoint, events_endpoint, event_detail_endpoint_pattern, webhooks_endpoint, and deliveries_endpoint_pattern for backfills, support handoff, and webhook delivery audits.

Inventory handoff

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

Tracked Accounts

Store each monitor’s id, username, and xUserId with downstream CRM, warehouse, or queue records.

Detail Handoff

Use Get Monitor with each id when a support workflow needs the latest event filter, active state, or billing checkpoint for one account monitor.

Active Billing

Filter monitors where isActive is true. Each active account 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 monitorId with List Events to audit stored account monitor events. Use returned event IDs with Get Event when a workflow needs the full tweet payload.

Delivery Audit

Use List Deliveries for each webhook and join delivery streamEventId to event IDs. Do not use x_event_id as the delivery join key.

State Repair

Use Update Monitor to replace eventTypes or toggle isActive. Use Delete Monitor only when the tracked account 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 monitor objects.
monitors[].id
string
Unique monitor ID.
monitors[].username
string
Normalized X username.
monitors[].xUserId
string
Resolved X user ID.
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 monitors.
{
  "monitors": [
    {
      "id": "7",
      "username": "elonmusk",
      "xUserId": "44196397",
      "eventTypes": ["tweet.new", "tweet.reply"],
      "isActive": true,
      "createdAt": "2026-02-24T10:30:00.000Z",
      "nextBillingAt": "2026-02-24T11:30:00.000Z"
    },
    {
      "id": "12",
      "username": "xquik_",
      "xUserId": "1849726401547751424",
      "eventTypes": ["tweet.new", "tweet.quote", "tweet.reply", "tweet.retweet"],
      "isActive": true,
      "createdAt": "2026-02-25T14:00:00.000Z",
      "nextBillingAt": "2026-02-25T15:00:00.000Z"
    }
  ],
  "total": 2
}
Returns up to 200 monitors. There is no pagination. Contact support if you need more.
Related: Create Monitor to add a new monitor, Get Monitor to fetch one monitor, List Events to audit stored events, Get Event to inspect one event, List Webhooks to compare subscriptions, or List Deliveries to audit webhook delivery status.
Last modified on May 21, 2026