Skip to main content
POST

Authorizations

Authorization
string
header
required

Authorization: Bearer <token> where <token> is either a neo_sk_<env>_<secret> API key (service account) or a Microsoft Entra ID access token (dashboard user).

Body

application/json

A fixed-pipeline workflow — the server runs FIND_ENTITIES (built from entity_type and the conditions below) followed by actions in order. Triggered by a PSA event (trigger_type=TRIGGERED + callback_settings) or on a schedule (trigger_type=SCHEDULED

  • schedule).
actions
Actions · object[]
required
name
string
required
trigger_type
enum<string>
required
Available options:
SCHEDULED,
TRIGGERED,
NONE
autonomy_type
string
default:CHAINED_ACTIONS
Allowed value: "CHAINED_ACTIONS"
callback_settings
EventMatchSettings · object | null
confirm_estimated_cost
boolean
default:false

Set to true to save a scheduled Agent whose estimated cost needs confirmation (see GET /agents/{id}/cost-estimate). Without it, a save that leaves a scheduled Agent ENABLED at an estimate of 25% or more of the monthly credits returns 409 estimated_cost_confirmation_required, with the estimate in error.details.estimate, and changes nothing, when it turns the agent on (a create defaults to ENABLED) or makes an enabled one run more often. Send it only after the person who pays has seen the estimate and agreed. Ignored everywhere else.

description
string | null
entity_type
enum<string>
default:TICKET
Available options:
ticket,
project_ticket,
task,
scheduled_entry,
time_entry,
project,
company,
contact,
resource,
contract,
opportunity,
none,
configuration,
note,
team,
role,
audit_trail,
appointment,
servicecall,
contract_service,
company_location,
product
execution_order
integer | null
group_name
string | null
group_order
integer | null
manual_minutes_per_run_override
number | null

Minutes of technician time one successful run saves, as your team measured it. A triggered CHAINED_ACTIONS workflow only; a whole number from 1 to 1440. null restores the default, the sum of each action's fixed minutes (manual_minutes_parts). On an update, omit the key to keep the stored value.

process_entities_sequentially
boolean
default:false
process_sub_entities_only_once
boolean
default:false
schedule
WorkflowSchedule · object | null
show_in_psa_pod
boolean | null
source_template_id
integer | null
state
enum<string>
default:ENABLED
Available options:
ENABLED,
DISABLED,
DELETED
ticket_conditions
PsaTicketConditions · object | null

Trigger/entity filter — which tickets this agent fires on. Send it at the top level to set or change the filter; the server (re)builds the FIND_ENTITIES action from it (do not put the filter in actions). A TIME_ENTRY agent carries this field too — there it selects the tickets whose time entries are searched, and time_entry_conditions then selects the time entries on them. Shape: conditions holds a combinator (and/or) and a rules list of leaves (field/operator/value) and/or nested groups (rules + combinator). A rule's position in the tree changes the logic — a company exclusion belongs as a top-level rule under the root and, not nested inside an or, or it only excludes when the other branches also miss. A leaf's value is a single value; only the in and notIn operators take a list. A list under any other operator returns 400.

time_entry_conditions
PsaConditions · object | null

Trigger/entity filter for TIME_ENTRY agents — which time entries this agent fires on, on the tickets ticket_conditions selected. Same shape as ticket_conditions. Ignored for TICKET agents.

Response

Success.

data
Agent · object
required

Lean summary of a workflow row — the per-item shape GET /public-api/agents (list) returns. The single-resource GET /public-api/agents/<id> returns the richer AgentDetail; historical snapshots come back as AgentVersion.

meta
object
required