HTTP Request

The HTTP Request node calls your API from an IVR call - background with retries, or wait and branch on success or failure. Every request is HMAC-signed.

3 min read

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#

  1. The call reaches the node and tokens in the URL, headers and body are filled in.
  2. 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.
  3. The request is signed and sent with the headers below.
  4. 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.
  5. Sync: the call waits for the response and follows Success or Failure. Sync requests are never retried, because the caller is waiting.
  6. Every request is written to HTTP Logs, where a failed background request can be retried.

Headers sent with every request#

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.

Was this page helpful?