Dozer logoDozer
Get started
Dozer Docs
Collections

Custom Actions

Owner-defined quick actions — a label, an emoji and the prompt they launch.

Base path /api/v1/custom-actions on https://trydozer.com. Authenticate with Authorization: Bearer $DASH_API_KEY and name the project with the Project-ID header. Writes are validated in declared mode; an operation this resource does not declare answers 405 operation_not_supported.

List custom actions

GET /api/v1/custom-actions

curl "https://trydozer.com/api/v1/custom-actions?source=create-custom-action" \
  -H "Authorization: Bearer $DASH_API_KEY" \
  -H "Project-ID: pr_northpit"
Show me the custom actions filtered by source
data_query {
  "collection": "custom_actions",
  "where": {
    "source": "create-custom-action"
  }
}

Returns a paginated list of custom-action objects, newest first.

{
  "object": "list",
  "data": [
    {
      "object": "custom-action",
      "id": "obj_123",
      "label": "Morning fleet check",
      "emoji": "🌅",
      "prompt": "Summarize overnight telemetry and list any machine that needs attention before the day shift.",
      "created_at": "2026-07-25T12:00:00.000Z",
      "updated_at": "2026-07-25T12:00:00.000Z"
    }
  ],
  "has_more": false,
  "next_cursor": null
}

Parameters

ParameterTypeKindDescription
sourcestringfilterWhat authored this action (e.g. create-custom-action).
skillIdstringfilterChat skill the launched task should run.
qstringsearchFree-text search across label, prompt.
sortstringsortOne of label, createdAt; prefix with - to reverse.
limitnumberpageRows to return, 1–100. Defaults to 20.
cursorstringpagenext_cursor from the previous page.

Retrieve a custom-action

GET /api/v1/custom-actions/a60h-12

curl "https://trydozer.com/api/v1/custom-actions/a60h-12" \
  -H "Authorization: Bearer $DASH_API_KEY" \
  -H "Project-ID: pr_northpit"
Open the custom-action {id}
data_get {
  "collection": "custom_actions",
  "object_id": "a60h-12"
}

Returns the custom-action object.

{
  "object": "custom-action",
  "id": "obj_123",
  "label": "Morning fleet check",
  "emoji": "🌅",
  "prompt": "Summarize overnight telemetry and list any machine that needs attention before the day shift.",
  "created_at": "2026-07-25T12:00:00.000Z",
  "updated_at": "2026-07-25T12:00:00.000Z"
}

Parameters

ParameterTypeKindDescription
idstringpathThe custom-action's id or slug.

Create a custom-action

POST /api/v1/custom-actions

curl -X POST "https://trydozer.com/api/v1/custom-actions" \
  -H "Authorization: Bearer $DASH_API_KEY" \
  -H "Project-ID: pr_northpit" \
  -H "Content-Type: application/json" \
  -d '{"label":"Morning fleet check","emoji":"🌅","prompt":"Summarize overnight telemetry and list any machine that needs attention before the day shift.","source":"create-custom-action"}'
Create a new custom-action
data_set {
  "collection": "custom_actions",
  "object_id": "a60h-12",
  "data": {
    "label": "Morning fleet check",
    "emoji": "🌅",
    "prompt": "Summarize overnight telemetry and list any machine that needs attention before the day shift.",
    "source": "create-custom-action"
  }
}

Returns the custom-action object.

{
  "object": "custom-action",
  "id": "obj_123",
  "label": "Morning fleet check",
  "emoji": "🌅",
  "prompt": "Summarize overnight telemetry and list any machine that needs attention before the day shift.",
  "created_at": "2026-07-25T12:00:00.000Z",
  "updated_at": "2026-07-25T12:00:00.000Z"
}

Parameters

FieldTypeRequiredDescription
labelstringyesButton text shown on the quick-action card.
emojistringnoSingle emoji rendered on the card.
prompttextyesThe prompt the action launches.
promptTemplatetextnoTemplate applied to the form submission before launching.
skillIdstringnoChat skill the launched task should run.
sourcestringnoWhat authored this action (e.g. create-custom-action).
saveAsQuickActionbooleannoWhether the action was pinned to the home strip at creation.

Update a custom-action

PATCH /api/v1/custom-actions/a60h-12

curl -X PATCH "https://trydozer.com/api/v1/custom-actions/a60h-12" \
  -H "Authorization: Bearer $DASH_API_KEY" \
  -H "Project-ID: pr_northpit" \
  -H "Content-Type: application/json" \
  -d '{"label":"label","prompt":"prompt"}'
Update the custom-action {id}
data_set {
  "collection": "custom_actions",
  "object_id": "a60h-12",
  "data": {
    "label": "label",
    "prompt": "prompt"
  }
}

Returns the custom-action object.

{
  "object": "custom-action",
  "id": "obj_123",
  "label": "Morning fleet check",
  "emoji": "🌅",
  "prompt": "Summarize overnight telemetry and list any machine that needs attention before the day shift.",
  "created_at": "2026-07-25T12:00:00.000Z",
  "updated_at": "2026-07-25T12:00:00.000Z"
}

Parameters

FieldTypeRequiredDescription
labelstringnoButton text shown on the quick-action card.
emojistringnoSingle emoji rendered on the card.
prompttextnoThe prompt the action launches.
promptTemplatetextnoTemplate applied to the form submission before launching.
skillIdstringnoChat skill the launched task should run.
sourcestringnoWhat authored this action (e.g. create-custom-action).
saveAsQuickActionbooleannoWhether the action was pinned to the home strip at creation.

Delete a custom-action

DELETE /api/v1/custom-actions/a60h-12

curl -X DELETE "https://trydozer.com/api/v1/custom-actions/a60h-12" \
  -H "Authorization: Bearer $DASH_API_KEY" \
  -H "Project-ID: pr_northpit"
Delete the custom-action {id}
data_delete {
  "collection": "custom_actions",
  "object_id": "a60h-12"
}

Returns the deleted custom-action object with deleted: true.

{
  "object": "custom-action",
  "id": "obj_123",
  "deleted": true
}

Parameters

ParameterTypeKindDescription
idstringpathThe custom-action's id or slug.

What comes back (read-only)

Every custom-action carries the envelope below. The fields under it are computed or stamped by the platform — they are returned, never sent.

FieldTypeDescription
objectstringAlways custom-action.
idstringStable object id. Also accepted in place of slug on any path.
slugstringURL-safe name, unique within the collection.
created_atstringISO-8601 timestamp of the first write.
updated_atstringISO-8601 timestamp of the most recent write. The cursor sorts on this.
formSchemaobjectInline form schema registered with the dynamic form runtime.
outputTemplateobjectHow the action's result is rendered back into chat.
createdAtstringWhen the action was created (ISO 8601).

Errors

Failures use { error: { type, code, message, param } }. The full code table is generated at Error Codes.