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

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

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/{id}', 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/{id}"

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/7 \
  -H "x-api-key: xq_YOUR_KEY_HERE" \
  | jq '{
    monitor_id: .id,
    username: .username,
    x_user_id: .xUserId,
    event_types: .eventTypes,
    is_active: .isActive,
    created_at: .createdAt,
    next_billing_at: .nextBillingAt,
    update_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 monitorId = "7";
const response = await fetch(`https://xquik.com/api/v1/monitors/${monitorId}`, {
  method: "GET",
  headers: {
    "x-api-key": "xq_YOUR_KEY_HERE",
  },
});
const monitor = await response.json();
const monitorState = {
  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,
  update_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(monitorState)}\n`);
import json
import requests

monitor_id = "7"
response = requests.get(
    f"https://xquik.com/api/v1/monitors/{monitor_id}",
    headers={"x-api-key": "xq_YOUR_KEY_HERE"},
)
monitor = response.json()
monitor_state = {
    "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"],
    "update_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_state))
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 MonitorState 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"`
    MonitorID                  string   `json:"monitor_id"`
    NextBillingAt              string   `json:"next_billing_at"`
    UpdateEndpoint             string   `json:"update_endpoint"`
    Username                   string   `json:"username"`
    WebhooksEndpoint           string   `json:"webhooks_endpoint"`
    XUserID                    string   `json:"x_user_id"`
}

func main() {
    monitorID := "7"
    req, err := http.NewRequest("GET", "https://xquik.com/api/v1/monitors/"+monitorID, 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 monitor Monitor
    if err := json.NewDecoder(resp.Body).Decode(&monitor); err != nil {
        log.Fatal(err)
    }
    state := MonitorState{
        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,
        MonitorID:                  monitor.ID,
        NextBillingAt:              monitor.NextBillingAt,
        UpdateEndpoint:             "/api/v1/monitors/" + monitor.ID,
        Username:                   monitor.Username,
        WebhooksEndpoint:           "/api/v1/webhooks",
        XUserID:                    monitor.XUserID,
    }
    if err := json.NewEncoder(os.Stdout).Encode(state); err != nil {
        log.Fatal(err)
    }
}
The Node.js, Python, and Go examples convert the fetched account monitor into one state snapshot row. Store monitor_id, event_types, is_active, next_billing_at, update_endpoint, events_endpoint, event_detail_endpoint_pattern, webhooks_endpoint, and deliveries_endpoint_pattern before changing filters, pausing alerts, or reconciling webhooks.

State handoff

Use GET /monitors/{id} before changing routing, billing checks, or alert state for one account monitor. The endpoint returns the current stored monitor for your account only; deleted or cross-account IDs return 404.

Tracked Account

Treat username and xUserId as the resolved X account identity. Store both with downstream CRM, warehouse, or queue records.

Current Filter

Treat eventTypes as the active matching contract. Mirror those event types into webhook subscriptions before relying on signed alerts.

Active State

Use isActive to decide whether the monitor should poll and bill. Use Update Monitor to pause or resume it.

Event Join

Use id as monitorId with List Events to reconcile stored events and webhook deliveries for this account.

Event Detail

Use event IDs returned by List Events with Get Event when a support, audit, or agent workflow needs the full tweet payload.

Webhook Alignment

Use List Webhooks to compare webhook eventTypes with this monitor before relying on signed alerts.

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.

Path parameters

id
string
required
The unique monitor ID. Returned when you create a monitor or list monitors.

Headers

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

Response

id
string
Unique monitor ID.
username
string
Normalized X username.
xUserId
string
Resolved X user ID.
eventTypes
string[]
Subscribed event types.
isActive
boolean
Whether the monitor is currently active.
createdAt
string
ISO 8601 creation timestamp.
nextBillingAt
string
Next hourly credit charge time for active monitor billing.
{
  "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"
}
Related: List Monitors to see all monitors, List Events to audit stored events, List Deliveries to audit webhook delivery status, Update Monitor to change event types or toggle active status, or Delete Monitor to remove this monitor.
Last modified on May 21, 2026