Create an action anchored to a project. Set setAsNext to make it the project's next action pointer. Returns the full RPC result including the action id. When the created action has no dueAt the response carries warnings[] with code no_due_date — nothing is rejected, but an action with no clock is invisible to the attention layer.

post/projects/{id}/actions

Request

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

Path parameters

idstring required

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

verbstring
descriptionstring
expectedSignalstring
actionTypestring
humanInterventionKind'decide' | 'execute' nullable

Same semantics as POST /actions. 'decide' + actionType='strategy_checkpoint' proposes a strategy checkpoint; approval is human-only.

expectedSignalAtstring date-time

When the expected signal is due. Persisted on the action (1.29.0); alias: expected_signal_at.

earliestActionableAtstring date-time
dueAtstring date-time
effortMinutesinteger
urgencynumber
lossRisknumber
distractionRisknumber
whyThisMovestring
setAsNextboolean
commitmentKeystring nullable

RECOMMENDED. Same three-layer rule as POST /actions: a declared key refuses a second OPEN action for the same objective with 409 COMMITMENT_ALREADY_OPEN; with no key the server derives auto:<kind>:<id>:<action_type> from an object DECLARED IN THE BODY (the project in the path is this route's container, not an objective, so it never derives a key); otherwise a look-alike OPEN action is refused 409 POSSIBLE_DUPLICATE, overridable with confirm_new: true. Alias: commitment_key.

confirm_newboolean

Send true to override a POSSIBLE_DUPLICATE refusal. Never merges, edits or closes anything; 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

object required

Changes

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