Actions
What the agent may do for a shopper during a call (look up an order, confirm it, change the address), and how your system answers.
List actions
GET/actions
The actions your flows can use: yours first, then RowCall’s suggestions (presets). An action that isn’t connected (transport: none) answers calls with its sample reply.
Needs the actions scope.
Returns 200
Done.
okbooleanrequiredOne of
trueactionslist of ActionrequiredShow 12 fields insideHide the fields inside
namestringrequiredkindstringrequiredOne of
readwritedescriptionstringrequiredparametersmap of objectrequiredShow 2 fields insideHide the fields inside
typestringrequireddescriptionstringrequired
samplemap of anyrequiredisPresetbooleanrequiredOne of RowCall’s suggestions, as suggested (not changed by you).
isSavedbooleanrequiredWhether it’s saved as yours (a preset doesn’t have to be).
transportstringrequiredHow it’s taken;
none: calls get the sample reply.One of
nonerowcallhttphttpobject or nullrequiredShow 7 fields insideHide the fields inside
methodstringrequiredurlstringrequiredbodystring or nullrequiredheaderNameslist of stringrequiredsuccessFieldstring or nullrequiredresultFieldslist of stringrequiredsayFieldstring or nullrequired
requiresConfirmationbooleanrequiredtimeoutMsintegerrequiredmaxPerCallintegerrequired
curl https://app.rowcall.ai/v1/actions \ -H "Authorization: Bearer $ROWCALL_API_KEY"
{
"ok": true,
"actions": [
{
"name": "confirm_order",
"kind": "write",
"description": "Marks the order as confirmed by the shopper, so it ships.",
"parameters": {
"order_id": {
"type": "string",
"description": "The order number."
}
},
"sample": {
"confirmed": true
},
"isPreset": false,
"isSaved": true,
"transport": "rowcall",
"http": null,
"requiresConfirmation": true,
"timeoutMs": 4000,
"maxPerCall": 2
}
]
}Create or change an action
PUT/actions/{name}
Defines an action of yours, or changes one: what it does, read or write, its parameters, a sample reply, and how it’s taken: rowcall (RowCall’s signed request to your action URL) or http (your own HTTP request, a template). A preset starts from its own definition. Parameters can’t change while a published flow uses it.
Needs the actions scope.
Path
namestringrequired
Body
descriptionstringWhat it does: the AI reads it.
kindstringOne of
readwriteparametersmap of objectShow 2 fields insideHide the fields inside
typestringrequiredOne of
stringnumberbooleandescriptionstringrequired
samplemap of anyWhat a successful call returns in simulations and while it isn’t connected.
transportstringrowcall: RowCall’s signed request to your action URL.http: your own request.One of
nonerowcallhttphttpActionHttp or nullShow 7 fields insideHide the fields inside
methodstringrequiredOne of
GETPOSTPUTPATCHDELETEurlstringrequiredbodystring or nullA JSON template, or null for none.
Default
nullheadersmap of stringSent with every request; stored encrypted and never shown again. Leave out to keep.
successFieldstring or nullA reply field that must be true (or "ok", "success") for success; null: any 2xx.
Default
nullresultFieldslist of stringDefault
[]sayFieldstring or nullA reply field to tell the shopper when it fails.
Default
null
requiresConfirmationbooleanSend it only after the shopper agreed at a confirm step in this call (off by default).
timeoutMsintegerHow long RowCall waits for a reply: 1500 for reads, 2500 for writes by default.
maxPerCallintegerHow often one call may use it (2).
Returns 200
Done.
okbooleanrequiredOne of
trueactionActionrequiredShow 12 fields insideHide the fields inside
namestringrequiredkindstringrequiredOne of
readwritedescriptionstringrequiredparametersmap of objectrequiredShow 2 fields insideHide the fields inside
typestringrequireddescriptionstringrequired
samplemap of anyrequiredisPresetbooleanrequiredOne of RowCall’s suggestions, as suggested (not changed by you).
isSavedbooleanrequiredWhether it’s saved as yours (a preset doesn’t have to be).
transportstringrequiredHow it’s taken;
none: calls get the sample reply.One of
nonerowcallhttphttpobject or nullrequiredShow 7 fields insideHide the fields inside
methodstringrequiredurlstringrequiredbodystring or nullrequiredheaderNameslist of stringrequiredsuccessFieldstring or nullrequiredresultFieldslist of stringrequiredsayFieldstring or nullrequired
requiresConfirmationbooleanrequiredtimeoutMsintegerrequiredmaxPerCallintegerrequired
curl -X PUT https://app.rowcall.ai/v1/actions/confirm_order \
-H "Authorization: Bearer $ROWCALL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"description": "Marks the order as confirmed by the shopper, so it ships.",
"kind": "write",
"parameters": {
"order_id": {
"type": "string",
"description": "The order number."
}
},
"sample": {
"confirmed": true
},
"transport": "rowcall",
"requiresConfirmation": true
}'{
"ok": true,
"action": {
"name": "confirm_order",
"kind": "write",
"description": "Marks the order as confirmed by the shopper, so it ships.",
"parameters": {
"order_id": {
"type": "string",
"description": "The order number."
}
},
"sample": {
"confirmed": true
},
"isPreset": false,
"isSaved": true,
"transport": "rowcall",
"http": null,
"requiresConfirmation": true,
"timeoutMs": 4000,
"maxPerCall": 2
}
}Delete an action
DELETE/actions/{name}
Removes one of your actions. A changed preset goes back to RowCall’s suggestion. Refused while a published flow uses an action whose parameters only you defined.
Needs the actions scope.
Path
namestringrequired
Returns 200
Done.
okbooleanrequiredOne of
true
curl -X DELETE https://app.rowcall.ai/v1/actions/confirm_order \ -H "Authorization: Bearer $ROWCALL_API_KEY"
{
"ok": true
}Finish a pending action
POST/runs/{runId}/actions/{actionId}/result
For an action your system answered with 202 { "pending": true }: how it ended.
Needs the actions scope.
Path
runIdstringrequiredactionIdstringrequired
Headers
Idempotency-KeystringRetry safely: the same key and request get the same response for 24 hours.
Body
okbooleanrequiredWhether it was done.
resultmap of anyerrorCodestringWhy not, when
okis false.saystring
Returns 200
Done.
okbooleanrequiredOne of
trueactionCallActionCallrequiredShow 13 fields insideHide the fields inside
idstringrequiredcallIdstringrequiredrunIdstring or nullrequirednamestringrequiredargsmap of stringrequiredstatusstringrequiredsample: not registered, so the catalogue’s sample reply was used.One of
sentsuccessrefusedpendingtimeoutsampleresultmap of any or nullrequiredsaystring or nullrequirederrorCodestring or nullrequiredhttpStatusinteger or nullrequireddurationMsinteger or nullrequiredcreatedAtstringrequiredISO 8601 time.
finishedAtstring or nullrequiredISO 8601 time.
curl -X POST https://app.rowcall.ai/v1/runs/run_8hq2x2m4q8w1z7p5n6b0/actions/act_q1w3e5r7t9y1u3i5o7p9/result \
-H "Authorization: Bearer $ROWCALL_API_KEY" \
-H "Idempotency-Key: verify-4821" \
-H "Content-Type: application/json" \
-d '{
"ok": true,
"result": {
"confirmed": true
}
}'{
"ok": true,
"actionCall": {
"id": "act_q1w3e5r7t9y1u3i5o7p9",
"callId": "cal_r4t6y8u0i2o4p6a8s0d2",
"runId": "run_8hq2x2m4q8w1z7p5n6b0",
"name": "confirm_order",
"args": {
"order_id": "4821"
},
"status": "success",
"result": {
"confirmed": true
},
"say": null,
"errorCode": null,
"httpStatus": 200,
"durationMs": 412,
"createdAt": "2026-10-13T09:31:48.000Z",
"finishedAt": "2026-10-13T09:31:48.412Z"
}
}