---
title: "Explain the recent failed calls"
method: POST
path: "/api/v1/tools/why_did_this_fail/execute"
tags: ["Adako"]
---

# Explain the recent failed calls

`POST /api/v1/tools/why_did_this_fail/execute`

## Request

- Base URL: `https://adako.ai`
- URL: `https://adako.ai/api/v1/tools/why_did_this_fail/execute`
- Auth: HTTP bearer

Reads this user's real Adako call log, finds the calls that failed or were blocked, and explains each one: the cause, the fix, and the tool to call next. Free; reads Adako's own database and contacts no platform.
Use when: the user says "that didn't work", "why did that fail" or "it's broken", or after any tool returned an error and you want the history rather than one message.
When not to use: the user pasted a raw platform error — explain_error decodes that directly. And this cannot see failures from other conversations of other users, only this user's own calls.
Returns one row per failed call, newest first, with the redacted arguments so the user recognises it. If nothing has failed it says so plainly rather than inventing a problem.

## Headers

- `Idempotency-Key` string

## Request body

- object
  - `arguments` object
    - `limit` integer: How many failed calls to explain, newest first. Default 5.
    - `tool_name` string: Only failures of this tool, e.g. google_create_search_campaign.

## Response `200`

The tool ran. A write returns proposal_id and approve_url while the change waits for approval.

- SuccessEnvelope
  - `success` unknown, required
  - `tool` string, required
  - `data` object, required: Machine-readable result.
  - `markdown` string, required: The same result written for a person or a model.
  - `quota` Quota: Task usage for the current billing period.
    - `plan` string
    - `used` integer
    - `limit` integer
    - `period_end` string
    - `upgrade_url` string
  - `proposal_id` string: Present for writes. Nothing changes on the ad platform until it is approved.
  - `approve_url` string: Where a person approves the proposal.
  - `request_id` string, required

## Other responses

- `400`: Invalid arguments, or the ad account could not be resolved.
- `401`: Missing, invalid, revoked or expired API key.
- `402`: Monthly task quota used up, or the plan does not include this tool.
- `403`: The connected ad account lacks the access level this tool needs.
- `404`: Unknown tool name.
- `409`: Not connected, reconnect needed, confirmation required, a proposal already pending or no longer pending, an identical create that failed earlier today (proposal_failed_before), a create that duplicates an approved one (duplicate_create), the ad-account limit of the plan reached (account_limit), or an Idempotency-Key reused with different arguments.
- `429`: Rate limited by Adako or by the ad platform. See Retry-After.
- `500`: Unexpected error inside Adako.
- `502`: The ad platform returned an error.

---

[API](https://skmtc.dev/adako/apis/adako-rest-api.md) · [All operations](https://skmtc.dev/adako/apis/adako-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/adako/apis/adako-rest-api/revisions/59ee60d48a56?raw)
