Poll a resource for new or updated records
GET/api/automation/poll/{resource}
The endpoint an n8n, Zapier or Make polling trigger calls on a schedule. Returns the records of one resource that were created - or, where RISE tracks it, changed - on or after the cursor, newest first.
How to drive it: on the first run send no cursor, which returns the last 24 hours. On every later run send back the meta.next_since value from the previous response. That value is the RISE server clock read at the start of the request, so nothing written while the query ran can fall between two polls. De-duplicate on the id field: the cursor is inclusive and some RISE columns store a date without a time, so a record can legitimately come back twice. meta.has_more only means the page came back full, so older matches may have been cut off. Do NOT re-poll with the same cursor expecting the next page - the query is not offset-paged, so an identical request returns the identical page. Raise limit, or poll more often so a window never fills.
On updates: RISE has no generic modified timestamp. A resource whose table carries a column that moves when the record is touched (a ticket's last activity, a task's status change, an invoice's cancellation) is polled on those columns too. meta.detects_updates says whether that is the case, and meta.cursor_fields lists exactly which columns were compared, so a connector can label its trigger honestly rather than promise updates it will not receive.
All timestamps in and out are UTC, which is what RISE stores. A cursor sent without an offset is read as UTC. An empty result is a normal 200 with an empty data array, never a 404, so a polling trigger does not have to treat "nothing happened" as an error.
Headers
| Field | Type | Description |
|---|---|---|
| authtoken | String | Authentication token, generated from admin area |
Parameters
| Field | Type | Description |
|---|---|---|
| resource | String | Resource key from /api/automation/resources. Hyphens are accepted in place of underscores, so both invoice-payments and invoice_payments work. |
| since | String | optional Cursor. ISO 8601 date or date-time, with or without an offset, or a Unix timestamp in seconds. Naive values are read as UTC. Defaults to 24 hours before the server clock. Must be on or after 2000-01-01 and no more than 24 hours ahead of the server clock. |
| limit | Number | optional Maximum records to return, 1 to 100. Larger values are reduced to 100.
|
curl -X GET "https://yoursite.com/api/automation/poll/clients" \
-H "authtoken: YOUR_API_TOKEN" Success-Response:
HTTP/1.1 200 OK
{
"status": true,
"resource": "tickets",
"data": [
{
"id": "482",
"client_id": "12",
"title": "Cannot log in to the portal",
"status": "open",
"assigned_to": "3",
"created_at": "2026-07-21 09:12:00",
"last_activity_at": "2026-07-21 09:40:11",
"deleted": "0"
}
],
"meta": {
"count": 1,
"limit": 50,
"has_more": false,
"since": "2026-07-21T09:00:00+00:00",
"since_source": "parameter",
"next_since": "2026-07-21T09:45:12+00:00",
"server_time": "2026-07-21T09:45:12+00:00",
"timezone": "UTC",
"cursor_fields": ["created_at", "last_activity_at", "client_last_activity_at", "closed_at"],
"order_by": "created_at",
"detects_updates": true,
"dedupe_key": "id"
}
} Nothing changed:
HTTP/1.1 200 OK
{
"status": true,
"resource": "tickets",
"data": [],
"meta": { "count": 0, "limit": 50, "has_more": false, "since": "2026-07-21T09:40:00+00:00", "since_source": "parameter", "next_since": "2026-07-21T09:45:12+00:00", "dedupe_key": "id" }
} Invalid cursor:
HTTP/1.1 400 Bad Request
{
"status": false,
"messages": { "since": "The \"since\" parameter must be an ISO 8601 date or date-time, or a Unix timestamp in seconds. Accepted examples: 2026-07-21T09:30:00Z, 2026-07-21T11:30:00+02:00, 2026-07-21 09:30:00, 2026-07-21, 1753090200." }
} Resource cannot be polled:
HTTP/1.1 400 Bad Request
{ "status": false, "messages": { "error": "The \"taxes\" resource has no date column in RISE, so it cannot be polled by timestamp. Read it through its own REST endpoint instead." } } Unknown resource:
HTTP/1.1 404 Not Found
{ "status": false, "messages": { "error": "Unknown automation resource. Call /api/automation/resources for the resources that can be polled." } }