Action Fields
These split into two groups, and the distinction matters if you are writing the receiver: only the first group reaches your endpoint. Sent in the request:
Evaluated or recorded by Rootly, never sent:
Timeout
Each request is given 30 seconds. A request still open at 30 seconds is abandoned and treated as a failed attempt. If your endpoint does real work before responding, acknowledge the request immediately and do the work asynchronously. An endpoint that takes 45 seconds to finish will never report success to Rootly, no matter how well it eventually completes.What Counts as Success
succeed_on_status defines which response statuses are treated as success. It defaults to "200".
You can use x as a wildcard digit, so a range is expressed as a pattern rather than a list:
Set this deliberately. With the default, an endpoint that correctly answers
201 Created or 204 No Content is recorded as a failure and retried — the request succeeded and the workflow says otherwise.
Retries
Retries happen at two levels, and they cover different failures.Transport retries
A request that fails to complete — connection refused, DNS failure, timeout — is retried twice, with exponential backoff starting at 1 second and doubling. This happens regardless of configuration; you do not switch it on.Job retries
A completed request whose status is 429 Too Many Requests can be retried at the job level, up to 4 times. When you do enable them, the retry count is 1 to 4 and the wait between attempts is 1 to 15 seconds, both set on the action.Retry-After interacts with your configured wait in a way worth knowing:
Only 429 triggers a job retry. Any other status that falls outside
succeed_on_status — a 500, a 403, a 404 — fails the step without retrying. If your service signals overload with a 503, Rootly will not back off and try again; return a 429 for that case.
SSRF Filtering
Requests are filtered to block server-side request forgery. Destinations that resolve to internal, link-local, or loopback addresses are refused, so the HTTP Client cannot be used to reach infrastructure that is not publicly routable. A workflow calling a service inside your own network will fail this check. Expose an endpoint that is reachable from the internet — protected by the signature below — or use a relay you already operate.Verifying the Request Came From Rootly
Every HTTP Client request carries anX-Rootly-Signature header containing a timestamp and an HMAC-SHA256 signature, in the same format outgoing webhooks use.
Where to Get the Secret
The signing secret is shown on the HTTP Client action itself, in a read-only Secret field in the workflow builder. Copy it from there into your receiving service. Two things to know about it:- It is one secret per organization, not per action. Every HTTP Client action in your Rootly organization signs with the same value, so a receiver can verify requests from any of them with one secret.
- It is derived, not generated, so there is no rotate button. If you need it changed, contact Rootly Support.
Designing an Endpoint for This Action
Putting the pieces together, an endpoint that behaves well under this contract:- Verifies
X-Rootly-Signaturebefore doing anything else. - Responds within 30 seconds, acknowledging rather than finishing if the work is slow.
- Is idempotent, because transport retries resend an identical body.
- Returns 429 when overloaded, since that is the only status that earns a retry, and sets
Retry-Afterat 90 seconds or less so it is honored in full. - Matches its success statuses to
succeed_on_status, or has the workflow widened to2xx.
Related Pages
Workflow Actions Reference
Every workflow action by category, including the other Developer Tools actions.
Webhooks
Outgoing webhooks, and the signature verification procedure this action shares.