Submit tool-call input

<Info>This API is in beta. Endpoints, fields, and behavior may still change, so avoid depending on it in production.</Info>

Approves or rejects one tool call the AI builder is waiting on, then resumes the turn.

Some steps pause for you before they run. The turn stops with an assistant message whose tool call has no result yet, and the builder waits. Answer it here to let the turn continue. Use Read conversation messages to find the tool call that is waiting and take its ID.

The request stays open until the resumed turn settles, so it can take several minutes. Resuming a turn consumes credits. To answer several waiting tool calls at once, use Submit tool-call input (batch).

<Warning>A turn that fails still returns 200. Check status.state: error means the turn failed, and status.error_source says where. paywall there means you ran out of credits.</Warning>

<Warning>The response includes fields beyond the ones documented here. Don't rely on undocumented response fields, as they can change at any time. Send only the fields documented here. Other request fields are not supported and their behavior can change.</Warning>

post/api/apps/{app_id}/chat/submit-tool-call-input

Path parameters

app_idstring required

ID of the app whose builder chat this request acts on.

ID of the app whose builder chat this request acts on.

Request body

tool_call_idstring required

ID of the tool call to answer. Read it off the waiting assistant message returned by Read conversation messages.

action'approved' | 'rejected' required

Whether to let the tool call run or turn it down. Rejecting tells the builder to continue without doing that step.

message_idstring

ID of the message the tool call belongs to. Some tools use it to report progress.

Example request

{
  "tool_call_id": "toolu_01A9FJd3kP2mNqRs7VwXyZ4b",
  "action": "approved",
  "message_id": "7f3a1c88-52d4-4a0e-9b31-2c6f0d8e4a19"
}

Response

The app once the resumed turn finished.

idstring nullable

ID of the app.

namestring nullable

Display name of the app.

Example response

{
  "id": "6820f3a4e7b91d003c45a1f2",
  "name": "My CRM",
  "status": {
    "state": "ready",
    "details": "Publishing app",
    "request_id": "a1b2c3d4e5f67890abcdef12",
    "last_updated_date": "2026-08-02T14:30:00",
    "error_source": "build",
    "paywall_context": {
      "billing_organization_id": "6820f3a4e7b91d003c45a1f2",
      "user_id": "6820f3a4e7b91d003c45a1f3",
      "evaluated_at": "2026-08-02T14:30:00"
    }
  },
  "conversation": {
    "id": "1f0c2b7a-9d51-4c3e-8a62-7b4d5e6f8a90",
    "messages": [
      {
        "id": "7f3a1c88-52d4-4a0e-9b31-2c6f0d8e4a19",
        "role": "assistant",
        "content": "I added a contact form to the home page.",
        "file_urls": [
          "https://storage.base44.com/uploads/mockup.png"
        ],
        "checkpoint_id": "6886b8d390dc7e2f4a2c91b3",
        "tool_calls": [
          {
            "id": "toolu_01A9FJd3kP2mNqRs7VwXyZ4b",
            "name": "create_file",
            "status": "waiting_for_user_input",
            "requires_user_input": true
          }
        ],
        "usage": {
          "prompt_tokens": 18432,
          "completion_tokens": 742,
          "credits_charged": 1.5
        },
        "metadata": {
          "created_date": "2026-08-02T14:30:00",
          "created_by_email": "developer@example.com"
        }
      }
    ]
  }
}

Changes