API Reference

Jobs

Jobs themselves: list, read, create, change, delete and run them, and the events each kind of record fires.

Prefix /cdna-api/hooks ReferenceHook model GuideJobs and events
Jobs in Postman

List jobs#

GET /cdna-api/hooks/hooks

Lists jobs, 100 to a page unless limit says otherwise. The example asks for two by id.

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 compare totalCount with the unfiltered list's to confirm a filter applied.
orderByquery
string
field:ASC or field: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. offset works too.

Example

List jobs
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
Response 200 OK
{
  "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
    }
  ]
}
Open in Postman docs Real response from this documentation site

Show a job#

GET /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

Show a job
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
Response 200 OK
{
  "result": "success",
  "data": {
    "id": 2,
    "name": "documentation updated",
    "published": null,
    "synchronous": false
  }
}
Open in Postman docs Real response from this documentation site

Create a job#

POST /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 a message.

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
true runs 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, error or success.
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

Create a job
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#

PUT /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 a message.

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. null turns 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

Edit a job
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"
}

Run a job#

POST /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

Run a job
POST /cdna-api/hooks/hook/12/run HTTP/1.1
Host: hub.coredna.com
Authorization: Bearer YOUR_ACCESS_TOKEN
Accept: application/json

Delete a job#

DELETE /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 a job
DELETE /cdna-api/hooks/hook/12 HTTP/1.1
Host: hub.coredna.com
Authorization: Bearer YOUR_ACCESS_TOKEN
Accept: application/json

Delete several jobs#

DELETE /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 several jobs
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#

GET /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 Blogs or Forms.
entitypathrequired
string
The record type in that module, such as Post or FormSubmission.

Example

List the events a record type fires
GET /cdna-api/hooks/entity-event-methods/Forms/FormSubmission HTTP/1.1
Host: hub.coredna.com
Authorization: Bearer YOUR_ACCESS_TOKEN
Accept: application/json
Response 200 OK
{
  "result": "success",
  "data": {
    "methods": {
      "CreateRecord": "Created",
      "UpdateRecord": "Updated",
      "DeleteRecord": "Deleted",
      "StartEditingRecord": "Editing",
      "Completed": "Completed"
    }
  }
}
Open in Postman docs Real response from this documentation site