# 15004: Action Callback URL must be absolute when updating in-progress calls

Log Type: APPLICATION

Log Level: ERROR

## Description

When you update an in-progress call with the `twiml` parameter, use an absolute URL for any `action` callback. This requirement applies to `<Gather>`, `<Record>`, and `<Pay>` when you create or update a call with inline TwiML.

### Possible causes

* You updated a live call with inline `twiml` and used a relative `action` URL such as `/process_gather.php`. `<Gather>` and `<Record>` can use relative URLs in other contexts, but when you start or update a call with the `twiml` parameter, the `action` URL must be absolute.
* The TwiML sent in the `twiml` parameter includes `<Gather>`, `<Record>`, or `<Pay>` with an `action` that depends on the current document URL instead of a fully qualified callback URL. Twilio uses the `twiml` parameter directly instead of fetching TwiML from a `url`.
* Your `<Pay>` verb uses an `action` URL that is not absolute or does not use `https`. `<Pay>` only accepts `https` for the `action` URL.

### Possible solutions

* Replace each relative `action` value with a fully qualified URL that includes the scheme and hostname, such as `https://example.com/voice/process-gather`.
* Review the TwiML you send in the `twiml` parameter and update every `<Gather>`, `<Record>`, and `<Pay>` `action` to an absolute URL before you resend the call update.
* If you use `<Pay>`, set the `action` to an absolute `https` URL.

#### Additional resources

* [Update a Call](/docs/voice/api/call-resource#update-a-call)
* [TwiML `<Gather>`](/docs/voice/twiml/gather)
* [TwiML `<Record>`](/docs/voice/twiml/record)
