GET /api/v2/macros to list existing macros; use query parameters 'active=true' and 'access=personal' or 'shared' to filter scope.
POST to /api/v2/macros with a JSON body under 'macro' containing 'title', 'actions' (array of action objects with 'field' and 'value'), and optionally 'restriction' for shared vs. personal scope.
Each action specifies a field to set when the macro is applied (e.g., {'field': 'status', 'value': 'solved'} or {'field': 'comment_value', 'value': 'Thank you for contacting us.'}).
To apply a macro to a ticket, POST to /api/v2/tickets/{ticket_id}/macros/{macro_id}/apply and inspect the 'result' in the response to preview the changes before committing them.
Commit the applied changes by then PUTting the result's ticket diff back via the standard ticket update endpoint — applying a macro via API is a preview step, not an automatic commit.
Update a macro with PUT /api/v2/macros/{macro_id}; delete with DELETE /api/v2/macros/{macro_id}.
Known gotchas
Applying a macro via /macros/{macro_id}/apply does NOT save the changes; it returns a preview — you must explicitly update the ticket with the returned changes to commit them.
Shared macros require the agent to have the 'Manage Macros' permission; personal macros are always manageable by their owner but cannot be shared via API after creation without an explicit restriction update.
Macro actions reference internal field names (e.g., 'assignee_id', 'group_id') not display names — use the ticket fields API to map display names to API field names before building action arrays.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp