The HTTP Request node calls your API during a call, for example to confirm an order when the caller presses 1. In background mode (the default) the call continues at once and the request is retried on failure. In wait mode the caller waits up to 5 seconds and the call branches on Success or Failure. Every request is HMAC-SHA256 signed.
Settings#
| Field |
Default |
Notes |
| Method |
POST |
GET, POST, PUT, PATCH, DELETE |
| URL |
|
https:// only. Tokens are allowed in the path and query, never in the host |
| Headers |
|
Key and value rows. Values may use tokens. Host, Content-Length, Connection, Transfer-Encoding and X-Edesy-* are set by the platform |
| Content type |
JSON |
JSON, Form (urlencoded) or Plain text |
| Body |
|
Template, e.g. {"order_id": "{{var.order_id}}", "digit": "{{digits}}"}. For JSON, put tokens inside string values |
| Mode |
Async |
Async: fire and continue, with retries. Sync: wait and branch on the result |
| Timeout (ms) |
3000 |
Sync: 500 to 5000. Async: 1000 to 10000 per attempt |
| Max attempts |
3 |
Async only. 1 to 5 |
| Success status codes |
2xx |
Sync only. 2xx or a list such as 200,201,409. Anything else takes Failure |
Exits#
| Mode |
Exits |
| Async |
One. The call continues straight away |
| Sync |
Success (a matching status code) and Failure (other status, timeout or network error) |
How it works#
- The call reaches the node and tokens in the URL, headers and body are filled in.
- Token values are escaped for where they land: they can't break out of a JSON string, add a query parameter, add a header line or change the host.
- The request is signed and sent with the headers below.
- Async: network errors,
5xx, 408 and 429 are retried with backoff (30 s, 1 min, 2 min, 4 min and so on, up to Max attempts). Other 4xx responses are not retried.
- Sync: the call waits for the response and follows Success or Failure. Sync requests are never retried, because the caller is waiting.
- Every request is written to HTTP Logs, where a failed background request can be retried.
| Header |
Value |
X-Edesy-Signature |
sha256=<hex>, see HTTP Signing Secret |
X-Edesy-Timestamp |
Unix seconds |
X-Edesy-Idempotency-Key |
Same value for the same visit to a node. Use it to drop duplicates |
X-Edesy-Call-Sid |
The call |
User-Agent |
edesy-ivr/1.0 |
Limits and safety#
| Limit |
Value |
| Rendered body |
16 KB |
| Response read |
64 KB |
| Request rate |
20 per second per workspace |
| Sync requests between two caller interactions |
At most 5, and 4 seconds in total |
| Redirects |
Not followed |
| Private or internal addresses |
Refused |
Send a test request#
In the builder, Send test request sends one request with sample values so you can check your endpoint before publishing. The API equivalent is POST/v1/ivr/http-test. Test requests appear in HTTP Logs with the kind Test.
Example: confirm or cancel#
Menu key 1 leads to an async POST to https://api.example.com/orders/{{var.order_id}}/confirm, then a Say "Your order is confirmed." Menu key 2 leads to a sync POST to /cancel, with Success going to "Your order is cancelled" and Failure to "Please try again later." The "Order confirmation (API + HTTP)" template builds this flow.