create_next_action: create the next action with an expected signal and a review date. Pass parentActionId to make it the child of a needs_decision action — the parent is NOT resolved automatically, close it explicitly with close-loop. Defaults verb to "send" when omitted. When the created action has no due_at the 201 carries warnings[] with code no_due_date: the action IS created, but with no clock it can never become overdue and the attention layer (and therefore the Telegram nudge clock) will never surface it.

post/actions

Request

  • Base URL: https://forbiz.io/api/public/agent
  • URL: https://forbiz.io/api/public/agent/actions
  • Auth: HTTP bearer

Headers

Idempotency-Keystring

Recommended on every mutating request. A replay with the same key is NOT applied twice: the server answers { ok, idempotent_replay: true, first_seen_at, status } describing the first attempt.

Request body

descriptionstring required
verb'send' | 'call' | 'ask' | 'write' | 'draft' | 'review' | 'decide' | 'schedule' | 'research' | 'create' | 'connect' | 'update' | 'prepare' | 'validate' | 'check'
whyThisMovestring
expectedSignalstring
expectedSignalAtstring date-time
dueAtstring date-time nullable

When this action is due. Without it the action can never become overdue and the attention layer will never surface it; the response then carries warnings[] with code no_due_date. Alias: due_at.

actionTypestring
humanInterventionKind'decide' | 'execute' nullable

Declared kind of human intervention. 'decide' + actionType='strategy_checkpoint' PROPOSES a strategy checkpoint for a Mission (resolved through the action's item → mission relation); a human then approves or asks for an adjustment in Forbiz or from Telegram — this API can never approve. 'execute' means a human must perform the step. Omitted/null preserves existing behavior exactly.

parentActionIdstring

Required when this action is the decision taken on a parent action. root_action_id is NOT accepted as input — the server derives it as parent.root_action_id ?? parent.id and returns it in the response.

personIdstring
organizationIdstring
outreachIdstring
campaignTargetIdstring
projectIdstring uuid nullable

Optional. Anchor this action to an existing project in the credential's workspace. Must be a valid UUID for a project in the same workspace, otherwise 400/404. Omitted or null preserves the current unanchored behavior.

commitmentKeystring nullable

RECOMMENDED. A short stable id for the objective this commitment serves, e.g. "unit-13/quote-followup" (max 120 chars; alias commitment_key). ONE COMMITMENT PER OBJECTIVE has three layers: (1) with a key, a second OPEN action for the same key in the workspace is refused 409 COMMITMENT_ALREADY_OPEN, database-enforced so it holds under concurrency; (2) with no key but a declared object (campaignTargetId / personId / organizationId / projectId), the server derives and stores auto:<kind>:<id>:<action_type> and applies the same rule — with no object no key is invented; (3) otherwise a look-alike OPEN action found by the existing full-text index is refused 409 POSSIBLE_DUPLICATE, which is never a block: resend with confirm_new: true. Open means lifecycle planned/executed/waiting_for_signal and status <> skipped — resolved, closed_without_signal and skipped never refuse.

confirm_newboolean

Send true to override a POSSIBLE_DUPLICATE refusal and create anyway. Nothing is ever merged, edited or closed. It does NOT override COMMITMENT_ALREADY_OPEN.

purposestring nullable

ACCEPTED AND IGNORED (1.56.0). purpose is a PROJECT field, not an action field: it is not stored on the action and it hides nothing. The action is created exactly as if the field had not been sent and it appears in the normal queues (/next, /state, /prompts, /decisions/recommendation, nudges, digest). When present the response carries purpose_ignored: true and purpose_ignored_note { code: "purpose_ignored", message }. To practise, POST /projects with purpose 'test' and create the actions inside that project.

Response

Created action

okboolean
action_idstring
parent_action_idstring nullable
root_action_idstring nullable

Server-derived chain root. Null for a root action; otherwise parent.root_action_id ?? parent.id.

notestring

Changes

No recorded changes to this operation across all 1 revision of this API.