ingest:write scope. See Authentication.
Endpoints at a glance
| Endpoint | Use case | Max per call |
|---|---|---|
POST /v1/ingest/events | Single raw signal | 1 |
POST /v1/ingest/batch | Pre-normalized issue records | 500 |
POST /v1/ingest/{source}/issues | Source-specific push with field validation | 1 |
GET /v1/ingest/status/{job_id} | Poll async job status | — |
Single event
Push one raw signal. Causeloop normalizes it and creates an Issue immediately. The response includes the newissue_id.
Single event fields
The source system identifier. Use a recognized value for richer pattern matching (see Source values). Unknown values are coerced to
custom_api.Your system’s unique identifier for this event. Used for deduplication — submitting the same
external_id + source combination twice updates the existing issue rather than creating a duplicate.Short description of the issue. Falls back to
external_id if omitted.Full description or error detail. Can be plain text or Markdown.
Priority level:
p1 (critical), p2 (high), p3 (medium), p4 (low).Link back to the issue in your source system.
Free-form key/value pairs. Stored as-is and available in the issue detail view.
Batch ingest
Push up to 500 pre-normalized issue records in a single call. Each record is processed independently — a failure on one record does not abort the rest.rejected with an index and reason:
Batch record fields
Array of records. Between 1 and 500 items.
IngestRecord:
Your system’s unique ID. Used for deduplication (with
source).Source system identifier. See Source values.
Issue title. 1–300 characters.
Full description.
p1 | p2 | p3 | p4Team or squad responsible. Used for grouping in the dashboard.
URL back to the source record.
ISO 8601 timestamp when the issue was created in the source system.
ISO 8601 timestamp of the last update in the source system.
Associate this record with an existing connector. Optional.
Source-specific ingest
If you know the source system, use the source-specific endpoint for validated field requirements:jira, servicenow, github, pagerduty, opsgenie, linear, zendesk, custom_api.
Checking job status
Batch and source-specific ingestion is asynchronous. Poll the job endpoint to track progress:status values: pending → running → succeeded | partial | failed.
Source values
Use recognized source values for the best pattern detection. The following values are supported natively:jira · servicenow · github · pagerduty · opsgenie · linear · zendesk · slack · email · database · custom_api
Any other value is accepted but coerced to custom_api.
How ingested records become issues
When Causeloop accepts a record:- The
external_id+sourcepair is checked for duplicates. If a matching issue exists, it is updated. - The record is normalized: missing fields get defaults,
severityis validated, and thesourceis resolved. - A new Issue object is created and emitted to the pattern detection pipeline.
- Causeloop checks whether the issue matches an existing Pattern. If it does, the issue is linked and the pattern’s confidence score is updated.
Limits
| Limit | Value |
|---|---|
| Records per batch | 500 |
title max length | 300 characters |
| Request body max size | 5 MB |
| Rate limit | 1,000 requests / minute per workspace |