Changes
What changed since your last run. The incremental endpoint automations poll instead of refetching a window. Endpoints, parameters, and schemas.
| Endpoint | Method | Path | Permission |
|---|---|---|---|
| List changes What changed since your last run | GET | /v1/changes | conversions:read |
Base URL https://app.sourceloop.ai/api/v1
List changes
What changed since your last run
GET /v1/changes
Requires conversions:read
The endpoint automations are built on. Poll it with the cursor from your last run instead of refetching a window and diffing client-side.
Every change carries a `source`, so your job can skip its own writes rather than reacting to them and looping.
Oldest first. Every response carries `next_cursor` (an empty page returns the one you sent): store it and pass it on the next run to receive only newer changes. A change is served once it is 15 seconds old, so none is skipped. A first run starts from `since` (at most 90 days back).
curl -s -X GET "https://app.sourceloop.ai/api/v1/changes" \
-H "Authorization: Bearer $SOURCELOOP_API_KEY" const res = await fetch(
"https://app.sourceloop.ai/api/v1/changes",
{
method: "GET",
headers: {
Authorization: `Bearer ${process.env.SOURCELOOP_API_KEY}`,
},
},
);
const data = await res.json(); import os, requests
res = requests.get(
"https://app.sourceloop.ai/api/v1/changes",
headers={"Authorization": f"Bearer {os.environ['SOURCELOOP_API_KEY']}"},
)
data = res.json() Query parameters
sincestring (date-time)Where a first run starts. Defaults to 24 hours ago. Ignored once you pass a cursor.
cursorstringnext_cursor from your previous call.
typesstringAllowed values4
conversion.createdconversion.value_changedstage.changeddeal.stage_changed
limitintegerDefault
100
Responses
-
200Changes -
400Something was wrong with the request or the credential. -
429Too many requests for this workspace in the current minute (`rate-limit-exceeded`), the monthly allowance used (`quota-exceeded`), or too many analytics queries running at once (`too-many-concurrent`). Wait Retry-After seconds and repeat the request unchanged.