Skip to main content
POST
/
v2
/
workflow
/
definitions
/
update
Update Definition
curl --request POST \
  --url https://api.velt.dev/v2/workflow/definitions/update \
  --header 'Content-Type: application/json' \
  --header 'x-velt-api-key: <x-velt-api-key>' \
  --header 'x-velt-auth-token: <x-velt-auth-token>' \
  --data '
{
  "data": {
    "definitionId": "<string>",
    "ifVersion": 123,
    "name": "<string>",
    "description": "<string>",
    "nodes": [
      {}
    ],
    "edges": [
      {}
    ],
    "groups": [
      {}
    ],
    "triggers": [
      {}
    ],
    "tags": [
      "<string>"
    ],
    "custom": {},
    "organizationId": "<string>",
    "documentId": "<string>"
  }
}
'
{
  "result": {
    "definitionId": "marketing-copy-approval",
    "name": "Marketing copy approval (Q2 revision)",
    "description": null,
    "version": 2,
    "scope": { "level": "apiKey", "organizationId": null, "documentId": null },
    "nodes": [],
    "edges": [],
    "groups": [],
    "triggers": null,
    "tags": null,
    "custom": null,
    "createdAt": 1731432000000,
    "updatedAt": 1731518400000,
    "status": "active"
  }
}

Documentation Index

Fetch the complete documentation index at: https://docs.velt.dev/llms.txt

Use this file to discover all available pages before exploring further.

Use this API to update an existing workflow definition. Atomically increments the version, snapshots the prior content, and rejects if the stored version mismatches ifVersion. In-flight executions keep running on the version they started with.

Endpoint

POST https://api.velt.dev/v2/workflow/definitions/update

Headers

x-velt-api-key
string
required
Your API key.
x-velt-auth-token
string
required

Body

Params

Accepts every field from Create Definition plus:
data
object
required
Every successful update increments version and snapshots the prior content. In-flight executions are immune to updates — they keep running on the pinned definitionVersion from their dispatch.

Example Requests

Rename a definition

{
  "data": {
    "definitionId": "marketing-copy-approval",
    "ifVersion": 1,
    "name": "Marketing copy approval (Q2 revision)"
  }
}

Response

Success Response

{
  "result": {
    "definitionId": "marketing-copy-approval",
    "name": "Marketing copy approval (Q2 revision)",
    "description": null,
    "version": 2,
    "scope": { "level": "apiKey", "organizationId": null, "documentId": null },
    "nodes": [ /* current */ ],
    "edges": [ /* current */ ],
    "groups": [ /* current */ ],
    "triggers": null,
    "tags": null,
    "custom": null,
    "createdAt": 1731432000000,
    "updatedAt": 1731518400000,
    "status": "active"
  }
}

Failure Response

{
  "error": {
    "message": "ERROR_MESSAGE",
    "status": "FAILED_PRECONDITION"
  }
}
Errors: NOT_FOUND (definition does not exist) / FAILED_PRECONDITION (ifVersion mismatch) / INVALID_ARGUMENT (schema or linter failure).
{
  "result": {
    "definitionId": "marketing-copy-approval",
    "name": "Marketing copy approval (Q2 revision)",
    "description": null,
    "version": 2,
    "scope": { "level": "apiKey", "organizationId": null, "documentId": null },
    "nodes": [],
    "edges": [],
    "groups": [],
    "triggers": null,
    "tags": null,
    "custom": null,
    "createdAt": 1731432000000,
    "updatedAt": 1731518400000,
    "status": "active"
  }
}