AVAILABLE
API Operations
HTTP Retry-After & Backoff Guard
Parse RFC 9110 Retry-After values, calculate bounded jitter windows, combine server and client timing, build schedules, inspect responses, and apply explicit retry policy.
CONTRACT
Predictable for agents. Legible for reviewers.
- REST
POST /v1/http-retries/policy-check- MCP tool
check_http_retry_policy- Inputs
- Caller-supplied method, status, explicit retriable-status policy, optional Retry-After, offset-aware receipt time, idempotency and body-replay evidence, retry index, maximum attempts, elapsed-time limits, and bounded exponential-backoff settings.
- Returns
- CLEAR, REVIEW_REQUIRED, or BLOCKED with parsed server timing, method semantics, client and combined delay windows, attempt and elapsed-budget evidence, stable findings, and a non-executing next action.
- Latency
- Synchronous
- Usage unit
- Retry-planning operation
The suite also exposes /v1/http-retries/parse-retry-after, /backoff-window, /combine-delay, /schedule, and /inspect-response plus /mcp/http-retry. It sends no request, executes no sleep, contacts no endpoint, operates no queue or circuit breaker, verifies no provider-specific retryability, and stores no payload. Its RapidAPI release is queued behind the provider's twenty-public-API cap.
AGENT-READABLE EXCEPTIONS
HTTP_RETRY_AFTER_INVALIDHTTP_RETRY_AFTER_TOO_LARGEHTTP_RETRY_AFTER_ALREADY_ELAPSEDHTTP_RETRY_JITTER_DISABLEDHTTP_RETRY_BACKOFF_CAPPEDHTTP_RETRY_SERVER_DELAY_CONTROLSHTTP_RETRY_STATUS_NOT_ALLOWEDHTTP_RETRY_REQUEST_REPLAY_UNSAFEHTTP_RETRY_ATTEMPT_LIMIT_EXCEEDEDHTTP_RETRY_ELAPSED_BUDGET_EXHAUSTEDHTTP_RETRY_DELAY_EXCEEDS_ELAPSED_BUDGETHTTP_RETRY_SINGLE_DELAY_LIMIT_EXCEEDEDHTTP_RETRY_AFTER_MISSINGHTTP request
POST /v1/http-retries/policy-check
Authorization: Bearer apc_...
Content-Type: application/json
{
"method": "POST",
"status_code": 429,
"caller_retriable_statuses": [
408,
429,
500,
502,
503,
504
],
"retry_after": "120",
"received_at": "2026-08-11T12:00:00Z",
"idempotency_evidence_present": true,
"body_replayable": true,
"retry_index": 2,
"maximum_total_attempts": 5,
"elapsed_seconds": "10",
"maximum_elapsed_seconds": "300",
"backoff": {
"retry_index": 2,
"base_delay_ms": "500",
"multiplier": "2",
"maximum_delay_ms": "20000",
"jitter": "FULL"
},
"maximum_single_delay_seconds": "180",
"require_retry_after_for_statuses": [
429,
503
]
}cURL (bash)
curl --request POST \
--url 'https://api-production-9502.up.railway.app/v1/http-retries/policy-check' \
--header 'Authorization: Bearer ${AP_CONTROL_API_KEY}' \
--header 'Content-Type: application/json' \
--data '{
"method": "POST",
"status_code": 429,
"caller_retriable_statuses": [
408,
429,
500,
502,
503,
504
],
"retry_after": "120",
"received_at": "2026-08-11T12:00:00Z",
"idempotency_evidence_present": true,
"body_replayable": true,
"retry_index": 2,
"maximum_total_attempts": 5,
"elapsed_seconds": "10",
"maximum_elapsed_seconds": "300",
"backoff": {
"retry_index": 2,
"base_delay_ms": "500",
"multiplier": "2",
"maximum_delay_ms": "20000",
"jitter": "FULL"
},
"maximum_single_delay_seconds": "180",
"require_retry_after_for_statuses": [
429,
503
]
}'Representative response
{
"status": "COMPLETED",
"decision": "REVIEW_REQUIRED",
"retry_allowed": true,
"method_semantics": "CONDITIONAL",
"status_allowed_by_caller": true,
"attempt_number_if_retried": 3,
"combined_earliest_delay_seconds": "120",
"combined_latest_delay_seconds": "120",
"remaining_elapsed_budget_seconds": "290",
"local_random_selection_required": false,
"findings": [
{
"code": "HTTP_RETRY_SERVER_DELAY_CONTROLS",
"severity": "LOW",
"message": "Retry-After is later than the client backoff window.",
"evidence": {
"server_delay_seconds": "120"
},
"next_action": "Do not retry before the server-directed time; apply total elapsed-time policy separately."
}
],
"ruleset_version": "HTTP_RETRY_GUARD_2026",
"scope": "CALLER_SUPPLIED_HTTP_FACTS_ONLY",
"request_sent": false,
"delay_executed": false,
"endpoint_contacted": false,
"payload_stored": false,
"next_action": "Retry only after locally selecting a delay in the returned window and rechecking service-specific idempotency, response, circuit-breaker, concurrency, and authorization state."
}Try HTTP Retry-After & Backoff Guard with your own workflow.
Start with the workspace, inspect the typed result, then integrate with REST or the focused MCP server.