> ## Documentation Index
> Fetch the complete documentation index at: https://docs.autocalls.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Resend call webhooks

> Send the post-call webhook of one or more calls again

This endpoint sends the [post-call webhook](/api-reference/webhooks/post-call-webhook) of one or more calls again, with the data stored on each call, to the webhook URL currently configured on the call's assistant. Use it when your endpoint was down, answered with an error, or lost the payload. For each call it does the same as **Re-send webhook** on the call page; the call is not evaluated again.

The deliveries are queued and start right after the request returns. Failed deliveries are retried the same way as the original ones (see [Delivery and retries](/api-reference/webhooks/post-call-webhook#delivery-and-retries)). Your endpoint receives each call again, so de-duplicate on the payload's `id`.

### Request body

<ParamField body="call_ids" type="integer[]" required>
  The identifiers of the calls to resend (from [List calls](/api-reference/calls/get-calls)), up to 500 per request. Send one id to resend a single call. Duplicate ids are ignored.
</ParamField>

### Response

<ResponseField name="message" type="string">
  A summary of what was queued
</ResponseField>

<ResponseField name="queued_call_ids" type="integer[]">
  The calls whose webhook is being sent again
</ResponseField>

<ResponseField name="skipped" type="object[]">
  Calls that were not resent, with the reason

  <Expandable title="Skipped call properties">
    <ResponseField name="call_id" type="integer">
      The identifier of the call
    </ResponseField>

    <ResponseField name="reason" type="string">
      Why it was skipped: the post-call webhook was not enabled for that call, or the assistant has no webhook URL
    </ResponseField>
  </Expandable>
</ResponseField>

### Error Responses

<ResponseField name="422 Unprocessable Entity">
  <Expandable title="Error Response">
    <ResponseField name="message" type="string">
      `call_ids` is missing, empty, longer than 500 or not a list of integers, or one or more of the calls do not exist or do not belong to the authenticated user. Nothing is resent
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="429 Too Many Requests">
  <Expandable title="Error Response">
    <ResponseField name="message" type="string">
      More than 10 requests in a minute. The `Retry-After` response header tells you how many seconds to wait
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseExample>
  ```json 200 Success Response theme={null}
  {
    "message": "Webhook resend queued for 1 call(s).",
    "queued_call_ids": [12345],
    "skipped": [
      {
        "call_id": 12346,
        "reason": "The post-call webhook was not enabled for this call."
      }
    ]
  }
  ```

  ```json 422 Calls Not Found theme={null}
  {
    "message": "One or more calls were not found.",
    "errors": {
      "call_ids": [
        "One or more calls were not found."
      ]
    }
  }
  ```

  ```json 429 Too Many Requests theme={null}
  {
    "message": "Too Many Attempts."
  }
  ```
</ResponseExample>

### Notes

* Only calls that belong to assistants owned by the authenticated user can be resent
* The payload reflects the call as it is now, including any variables extracted after the original delivery
* The result of each delivery is shown on the call page and returned as `webhook_response` by [Get call](/api-reference/calls/get-call)
* Each resend is a new delivery: your endpoint must handle the same `id` arriving more than once


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.