Lists jobs, 100 to a page unless limit says otherwise. The example asks for two by id.
Jobs
Jobs themselves: list, read, create, change, delete and run them, and the events each kind of record fires.
List jobs#
/cdna-api/hooks/hooks
- Access
- Admin users and integrations, with an OAuth access token or an API key.
- Model
- Hook, in the Reference
Parameters
propertiesquery- selector
- The fields and relations to return, such as
{id,name,published,synchronous}. filtersquery- name=value
- Any stored field, or a relation with a dot, such as
synchronous=1. Prefix the name with!,>,<,%or|. Use stored field names exactly as in the model, and comparetotalCountwith the unfiltered list's to confirm a filter applied. orderByquery- string
field:ASCorfield:DESC, comma-separated. Stored fields only.limitquery- integer
- Records per response: 100 when left out, at most 500. A larger value answers 400.
pagequery- integer
- The page to return, counting from 1.
offsetworks too.
Example
GET /cdna-api/hooks/hooks?|id=2,45&properties={id,name,published,synchronous} HTTP/1.1
Host: hub.coredna.com
Authorization: Bearer YOUR_ACCESS_TOKEN
Accept: application/json{
"result": "success",
"totalCount": 2,
"data": [
{
"id": 2,
"name": "documentation updated",
"published": null,
"synchronous": false
},
{
"id": 45,
"name": "Agent: content/content-freshness-audit",
"published": "2026-09-08T05:25:52+00:00",
"synchronous": false
}
]
}Show a job#
/cdna-api/hooks/hook/{id}
Reads one job by its id. actions, entityEvents and webEvents come back as ids; read them on their own routes.
- Access
- Admin users and integrations, with an OAuth access token or an API key.
- Model
- Hook, in the Reference
Parameters
idpathrequired- integer
- The job id.
propertiesquery- selector
- The fields and relations to return, such as
{id,name,published,synchronous}.
Example
GET /cdna-api/hooks/hook/2?properties={id,name,published,synchronous} HTTP/1.1
Host: hub.coredna.com
Authorization: Bearer YOUR_ACCESS_TOKEN
Accept: application/json{
"result": "success",
"data": {
"id": 2,
"name": "documentation updated",
"published": null,
"synchronous": false
}
}Create a job#
/cdna-api/hooks/hook
Creates a job. It is unpublished, so it does nothing until it has its actions and a trigger and is published with Edit a job.
- Access
- Admin users and integrations, with an OAuth access token or an API key.
- Returns
- The new job under
data.hook, and amessage.
Parameters
namebody- string
- The job’s name, shown in the admin and in a failed synchronous run’s answer.
textbody- string
- A description, as HTML.
synchronousbody- boolean
trueruns a web-event job inside the request, so its HTTP response action answers the caller.batchPersistencebody- string
- Which finished runs are kept:
always(the default),never,errororsuccess. categorybody- number
- The job category, by id.
sitebody- number
- The one site the job belongs to, by id; left out, it applies to every site.
Example
POST /cdna-api/hooks/hook HTTP/1.1
Host: hub.coredna.com
Authorization: Bearer YOUR_ACCESS_TOKEN
Accept: application/json
Content-Type: application/json
{
"name": "Notify the team",
"text": "<p>Emails the team when a form is completed.</p>",
"synchronous": false,
"batchPersistence": "error",
"site": 1
}Edit a job#
/cdna-api/hooks/hook/{id}
Changes a job. Fields left out keep their values. Publishing is this route too: send published.
- Access
- Admin users and integrations, with an OAuth access token or an API key.
- Returns
- The saved job under
data.hook, and amessage.
Parameters
idpathrequired- integer
- The job id.
namebody- string
- The job’s name, shown in the admin and in a failed synchronous run’s answer.
publishedbody- string
- A date and time, in UTC, from which the job is live.
nullturns it off. scheduledEvents, recurringEventbody- list
- The job’s schedule. Sent, it replaces every task;
[]removes them all. The job must belong to one site.
published is stored as sent, in UTC, not in the site’s timezone. A time still in the future leaves the job off: it is left out of lists and its child routes answer 404. To publish now, send a time you know has passed.
Example
PUT /cdna-api/hooks/hook/12 HTTP/1.1
Host: hub.coredna.com
Authorization: Bearer YOUR_ACCESS_TOKEN
Accept: application/json
Content-Type: application/json
{
"name": "Notify the sales team",
"published": "2026-01-01 00:00:00"
}Learn more
Run a job#
/cdna-api/hooks/hook/{hook.id}/run
Queues a run of the job now, as the admin’s Run button does. There is no body. The caller needs permission to change the job, and a job limited to another site answers 404.
- Access
- Admin users and integrations, with an OAuth access token or an API key.
- Returns
- The queued run under
data.batch, and the message “Job successfully dispatched”. Poll it on Job runs.
Parameters
hook.idpathrequired- integer
- The job id.
A run started this way has no record and no request behind it, so $event holds nothing for the job to read. Use it for jobs that find their own records, such as a nightly export.
Example
POST /cdna-api/hooks/hook/12/run HTTP/1.1
Host: hub.coredna.com
Authorization: Bearer YOUR_ACCESS_TOKEN
Accept: application/jsonDelete a job#
/cdna-api/hooks/hook/{id}
Deletes a job.
- Access
- Admin users and integrations, with an OAuth access token or an API key.
Parameters
idpathrequired- integer
- The job id.
Example
DELETE /cdna-api/hooks/hook/12 HTTP/1.1
Host: hub.coredna.com
Authorization: Bearer YOUR_ACCESS_TOKEN
Accept: application/jsonDelete several jobs#
/cdna-api/hooks/hooks
Deletes up to 50 jobs at once, their ids in ids. If any id names nothing, nothing is deleted and the answer is 404.
- Access
- Admin users and integrations, with an OAuth access token or an API key.
Parameters
idsbodyrequired- list
- The ids of the jobs, at most 50.
Example
DELETE /cdna-api/hooks/hooks HTTP/1.1
Host: hub.coredna.com
Authorization: Bearer YOUR_ACCESS_TOKEN
Accept: application/json
Content-Type: application/json
{
"ids": [
10,
11,
12
]
}List the events a record type fires#
/cdna-api/hooks/entity-event-methods/{module}/{entity}
Lists the event methods one kind of record fires, keyed by the value an entity event’s method takes. Most records fire the four below; some add their own, such as Completed on form submissions.
- Access
- Admin users and integrations, with an OAuth access token or an API key.
Parameters
modulepathrequired- string
- The module, such as
BlogsorForms. entitypathrequired- string
- The record type in that module, such as
PostorFormSubmission.
Example
GET /cdna-api/hooks/entity-event-methods/Forms/FormSubmission HTTP/1.1
Host: hub.coredna.com
Authorization: Bearer YOUR_ACCESS_TOKEN
Accept: application/json{
"result": "success",
"data": {
"methods": {
"CreateRecord": "Created",
"UpdateRecord": "Updated",
"DeleteRecord": "Deleted",
"StartEditingRecord": "Editing",
"Completed": "Completed"
}
}
}