Now inviting stores. Join the waitlist to hear the agent call you.

Join the waitlist

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.

  • okbooleanrequired

    One oftrue

  • actionslist of Actionrequired
    Show 12 fields inside
    • namestringrequired
    • kindstringrequired

      One ofreadwrite

    • descriptionstringrequired
    • parametersmap of objectrequired
      Show 2 fields inside
      • typestringrequired
      • descriptionstringrequired
    • samplemap of anyrequired
    • isPresetbooleanrequired

      One of RowCall’s suggestions, as suggested (not changed by you).

    • isSavedbooleanrequired

      Whether it’s saved as yours (a preset doesn’t have to be).

    • transportstringrequired

      How it’s taken; none: calls get the sample reply.

      One ofnonerowcallhttp

    • httpobject or nullrequired
      Show 7 fields inside
      • methodstringrequired
      • urlstringrequired
      • bodystring or nullrequired
      • headerNameslist of stringrequired
      • successFieldstring or nullrequired
      • resultFieldslist of stringrequired
      • sayFieldstring or nullrequired
    • requiresConfirmationbooleanrequired
    • timeoutMsintegerrequired
    • maxPerCallintegerrequired
Request
curl https://app.rowcall.ai/v1/actions \
  -H "Authorization: Bearer $ROWCALL_API_KEY"
Response
{
  "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

  • descriptionstring

    What it does: the AI reads it.

  • kindstring

    One ofreadwrite

  • parametersmap of object
    Show 2 fields inside
    • typestringrequired

      One ofstringnumberboolean

    • descriptionstringrequired
  • samplemap of any

    What a successful call returns in simulations and while it isn’t connected.

  • transportstring

    rowcall: RowCall’s signed request to your action URL. http: your own request.

    One ofnonerowcallhttp

  • httpActionHttp or null
    Show 7 fields inside
    • methodstringrequired

      One ofGETPOSTPUTPATCHDELETE

    • urlstringrequired
    • bodystring or null

      A JSON template, or null for none.

      Default null

    • headersmap of string

      Sent with every request; stored encrypted and never shown again. Leave out to keep.

    • successFieldstring or null

      A reply field that must be true (or "ok", "success") for success; null: any 2xx.

      Default null

    • resultFieldslist of string

      Default []

    • sayFieldstring or null

      A reply field to tell the shopper when it fails.

      Default null

  • requiresConfirmationboolean

    Send it only after the shopper agreed at a confirm step in this call (off by default).

  • timeoutMsinteger

    How long RowCall waits for a reply: 1500 for reads, 2500 for writes by default.

  • maxPerCallinteger

    How often one call may use it (2).

Returns 200

Done.

  • okbooleanrequired

    One oftrue

  • actionActionrequired
    Show 12 fields inside
    • namestringrequired
    • kindstringrequired

      One ofreadwrite

    • descriptionstringrequired
    • parametersmap of objectrequired
      Show 2 fields inside
      • typestringrequired
      • descriptionstringrequired
    • samplemap of anyrequired
    • isPresetbooleanrequired

      One of RowCall’s suggestions, as suggested (not changed by you).

    • isSavedbooleanrequired

      Whether it’s saved as yours (a preset doesn’t have to be).

    • transportstringrequired

      How it’s taken; none: calls get the sample reply.

      One ofnonerowcallhttp

    • httpobject or nullrequired
      Show 7 fields inside
      • methodstringrequired
      • urlstringrequired
      • bodystring or nullrequired
      • headerNameslist of stringrequired
      • successFieldstring or nullrequired
      • resultFieldslist of stringrequired
      • sayFieldstring or nullrequired
    • requiresConfirmationbooleanrequired
    • timeoutMsintegerrequired
    • maxPerCallintegerrequired
Request
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
  }'
Response
{
  "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.

  • okbooleanrequired

    One oftrue

Request
curl -X DELETE https://app.rowcall.ai/v1/actions/confirm_order \
  -H "Authorization: Bearer $ROWCALL_API_KEY"
Response
{
  "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

  • runIdstringrequired
  • actionIdstringrequired

Headers

  • Idempotency-Keystring

    Retry safely: the same key and request get the same response for 24 hours.

Body

  • okbooleanrequired

    Whether it was done.

  • resultmap of any
  • errorCodestring

    Why not, when ok is false.

  • saystring

Returns 200

Done.

  • okbooleanrequired

    One oftrue

  • actionCallActionCallrequired
    Show 13 fields inside
    • idstringrequired
    • callIdstringrequired
    • runIdstring or nullrequired
    • namestringrequired
    • argsmap of stringrequired
    • statusstringrequired

      sample: not registered, so the catalogue’s sample reply was used.

      One ofsentsuccessrefusedpendingtimeoutsample

    • resultmap of any or nullrequired
    • saystring or nullrequired
    • errorCodestring or nullrequired
    • httpStatusinteger or nullrequired
    • durationMsinteger or nullrequired
    • createdAtstringrequired

      ISO 8601 time.

    • finishedAtstring or nullrequired

      ISO 8601 time.

Request
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
    }
  }'
Response
{
  "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"
  }
}