Create an action
Define a secret-backed, SSRF-protected hosted HTTP tool.
/api/v2/actionsAuthorizationBearer token (Anlyon API key) · headerrequiredWorkspace API key sent as Authorization: Bearer <key>.
better-auth.session_tokenAPI key · cookierequiredBrowser session used by dashboard-only operations.
X-Request-IdstringOptional caller correlation ID. Unsafe or oversized values are replaced.
Idempotency-KeystringStable retry key for a mutation. The key is claimed atomically before the handler runs, so concurrent retries execute the side effect at most once. Replaying the key for the same request (same method, path, workspace and JSON body) returns the original response with an X-Idempotent-Replay: true header. Reusing the key for a different request returns 409 with error code idempotency_key_reuse. A duplicate arriving while the first is still in flight waits and then replays; if the first does not finish in time the duplicate gets 409 idempotency_request_in_progress. Keys are retained for 24 hours. Only successful (2xx) responses are stored; a failed request frees the key so it can be retried.
application/jsonnamestringrequireddescriptionstringmethodstringGETPOSTPUTPATCHDELETEurlTemplatestringheadersobjectbodyTemplateobjectinputSchemaobjectrequiresApprovalbooleanenabledbooleanadapterActionAdapterMakes the action a governed effect (see the Governed effects guide). The request is built by the adapter from config; the credential is a vault secret referenced by name. Available types: stripe.refund (config account, mode: test, currency), github.file_update (config owner, repo, branch, optional pathPrefix, allowDefaultBranch) and resend.email_send (config domain, optional fromAddresses).
Show propertiesHide properties
typestringrequiredstripe.refundgithub.file_updateresend.email_sendconfigobjectrequiredcredentialSecretstringrequiredimpactActionImpactHow much one invocation changes, declared on a template action. Declaring it makes the action governed: the quantity is reserved against every applicable impact limit before dispatch. amount is an expression over the input, evaluated at admission after schema validation. It may be an integer, input.<path>, or count(input.<path>), followed by one optional * <integer>, and it must produce a non-negative integer. An amount that reads an optional input the caller left out yields no quantity. The effect is then unbounded for that dimension: an applicable limit refuses it with impact_unbounded, and with no applicable limit it runs. Anlyon evaluates the expression as written. It does not check that the expression describes what the provider will do.
Show propertiesHide properties
dimensionstringrequiredmoney, resource_mutations, or a workspace-declared unit such as emails, messages or rows.
unitstringThe currency for money (lowercase ISO 4217, required). For every other dimension the unit is the dimension name and may be left out.
amountstringrequiredboundstringrequiredexactupper_boundverifyActionVerifyA read-back that confirms a write, declared on a template action. After the provider accepts the write, Anlyon issues this GET through the same pinned transport with the action's own headers and compares the answer. A match grades the effect confirmed. Without one a 2xx grades acknowledged. The URL must be on the action's own host. It may reference {{input.field}}, {{response.field}} (a value from the provider's response to the write) and {{secret:NAME}}. A rule that needs response cannot run after a lost response, so that effect stays unknown until an operator resolves it.
Show propertiesHide properties
urlstringrequiredstatusintegerrequiredThe status the read-back must answer with.
matchobject[]JSON path equality checks on the read-back body. Every one must hold.
Show propertiesHide properties
objectpathstringrequiredA dotted path into the read-back body. A numeric segment indexes an array.
equalsany | nullrequiredA string, number, boolean or null. A string may be exactly one {{input.field}} or {{response.field}}.
governedbooleanSet true to govern a template action that declares neither impact nor verify. Its 2xx then grades acknowledged.
Action created.
successbooleanrequiredtruedataActionrequiredShow propertiesHide properties
idstringrequiredenvironmentIdstring<uuid>requiredThe environment this action lives in. An action belongs to exactly one.
namestringrequireddescriptionstring | nullrequiredmethodstringrequiredGETPOSTPUTPATCHDELETEurlTemplatestringrequiredheadersobjectrequiredbodyTemplateobject | nullrequiredinputSchemaobjectrequiredrequiresApprovalbooleanrequiredenabledbooleanrequiredsecretsstring[]requiredReferenced secret names only; values are never returned.
currentVersionIdstring | nullrequiredThe immutable version this definition currently is. An agent version pins a version id, so this is what to pin to hold an action at its present definition. Null only for actions that predate versioning and have not been edited since.
adapterActionAdapter | nullrequiredThe governed-effect adapter, or null for a template action.
Show propertiesHide properties
typestringrequiredstripe.refundgithub.file_updateresend.email_sendconfigobjectrequiredcredentialSecretstringrequirednullgovernedbooleanrequiredTrue when every invocation creates a governed effect. The action has an adapter, or it carries a declaration.
impactActionImpact | nullrequiredThe declared impact, or null when the action declares none.
Show propertiesHide properties
dimensionstringrequiredmoney, resource_mutations, or a workspace-declared unit such as emails, messages or rows.
unitstringThe currency for money (lowercase ISO 4217, required). For every other dimension the unit is the dimension name and may be left out.
amountstringrequiredboundstringrequiredexactupper_boundnullverifyActionVerify | nullrequiredThe declared read-back, or null when the action declares none.
Show propertiesHide properties
urlstringrequiredstatusintegerrequiredThe status the read-back must answer with.
matchobject[]JSON path equality checks on the read-back body. Every one must hold.
Show propertiesHide properties
objectpathstringrequiredA dotted path into the read-back body. A numeric segment indexes an array.
equalsany | nullrequiredA string, number, boolean or null. A string may be exactly one {{input.field}} or {{response.field}}.
nullcreatedAtstring<date-time>requiredupdatedAtstring<date-time>requiredBad Request - Invalid input data
successbooleanrequiredrequestIdstringrequiredCorrelation ID matching the X-Request-Id response header.
errorobjectrequiredShow propertiesHide properties
codestringmessagestringdetailsobjectUnauthorized - Invalid or missing API key
successbooleanrequiredrequestIdstringrequiredCorrelation ID matching the X-Request-Id response header.
errorobjectrequiredShow propertiesHide properties
codestringmessagestringdetailsobjectPayment Required - Usage quota exceeded
successbooleanrequiredrequestIdstringrequiredCorrelation ID matching the X-Request-Id response header.
errorobjectrequiredShow propertiesHide properties
codestringmessagestringdetailsobjectAuthenticated credential lacks the required scope or workspace access.
successbooleanrequiredrequestIdstringrequiredCorrelation ID matching the X-Request-Id response header.
errorobjectrequiredShow propertiesHide properties
codestringmessagestringdetailsobjectThe request conflicts with current resource state or a concurrent decision.
successbooleanrequiredrequestIdstringrequiredCorrelation ID matching the X-Request-Id response header.
errorobjectrequiredShow propertiesHide properties
codestringmessagestringdetailsobjectToo Many Requests - Rate limit exceeded
successbooleanrequiredrequestIdstringrequiredCorrelation ID matching the X-Request-Id response header.
errorobjectrequiredShow propertiesHide properties
codestringmessagestringdetailsobject
