API REFERENCE v1

CORE RESOURCES

Events

The Event object

Every decision NoChurn takes, with its reason (nevt_…).

ATTRIBUTES

  • object enum
    • event
  • id string
  • type string
  • subject object | null
    Show child attributesHide child attributes
  • reason string | null
  • actor object
    Show child attributesHide child attributes
    • type enum
      • api_key
      • user
      • system
      • ai
      • ai_agent
      • customer
    • id string | null

      ai_agent: the OAuth grant (ogr_…) of the AI app.

    • name string | null

      ai_agent: the MCP client's name (as it registered).

  • livemode boolean
  • data object
Show 1 more attributesHide 1 attributes

Schema: Event

THE EVENT OBJECT
{
  "object": "event",
  "id": "nevt_wr9AZ4FaA7NVz3Z7",
  "type": "api_key.created",
  "subject": {
    "type": "api_key",
    "id": "key_xBrmAzbrotsgj2iT"
  },
  "reason": "test",
  "actor": {
    "type": "api_key",
    "id": "key_xBrmAzbrotsgj2iT",
    "name": null
  },
  "livemode": false,
  "data": {},
  "created_at": "2026-11-04T10:00:00.000Z"
}

List events, newest first

  • Secret key (nc_test_… or nc_live_…). Restricted keys need read access.
  • AI apps (OAuth): read scope.

QUERY PARAMETERS

  • type string

    Filter by event type, e.g. api_key.created

  • subject string

    Filter by subject id, e.g. cst_… for a customer timeline

  • limit integer default 20 · 1 to 100
  • Cursor: the next_cursor of the previous page.

RETURNS

ERRORS

GET/v1/events
curl https://api.nochurn.sh/v1/events \
  -H "Authorization: Bearer nc_test_…"
const res = await fetch("https://api.nochurn.sh/v1/events", {
  headers: {
    Authorization: "Bearer nc_test_…",
  },
});
const page = await res.json();
import requests

res = requests.get(
    "https://api.nochurn.sh/v1/events",
    headers={
        "Authorization": "Bearer nc_test_…",
    },
)
page = res.json()
require "net/http"
require "json"

uri = URI("https://api.nochurn.sh/v1/events")
req = Net::HTTP::Get.new(uri)
req["Authorization"] = "Bearer nc_test_…"

res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |http| http.request(req) }
page = JSON.parse(res.body)
RESPONSE 200
{
  "object": "list",
  "data": [
    {
      "object": "event",
      "id": "nevt_wr9AZ4FaA7NVz3Z7",
      "type": "api_key.created",
      "subject": {
        "type": "api_key",
        "id": "key_xBrmAzbrotsgj2iT"
      },
      "reason": "test",
      "actor": {
        "type": "api_key",
        "id": "key_xBrmAzbrotsgj2iT",
        "name": null
      },
      "livemode": false,
      "data": {},
      "created_at": "2026-11-04T10:00:00.000Z"
    },
    {
      "object": "event",
      "id": "nevt_rRmSZmTKnHXN5bcN",
      "type": "account.created",
      "subject": null,
      "reason": null,
      "actor": {
        "type": "system",
        "id": null,
        "name": null
      },
      "livemode": false,
      "data": {},
      "created_at": "2026-11-02T10:00:00.000Z"
    }
  ],
  "has_more": false,
  "next_cursor": null
}