Prepare
Create an account and an API token. Prepare an HTTPS recipient under your control, reachable from the selected region, returning 2xx and a safe demonstration response. No incoming Server or CLI is required.
In Bash, set these variables:
ADAL_API_URL:https://api.adal.cloud, without a trailing slash.ADAL_API_TOKEN: the API token secret.ADAL_IDEMPOTENCY_KEY: a key chosen once for this operation, such asdocs-first-send-1. A new operation needs a new key; an uncertain submission retry keeps the original key.
Keep real token values out of Git, screenshots and logs. The public API uses HTTPS.
Get a region
curl --fail-with-body --silent --show-error \
--header "Authorization: Bearer $ADAL_API_TOKEN" \
"$ADAL_API_URL/outbound/regions"
Select an ID from regions (uppercase, as returned by the API) and set it as ADAL_REGION_ID. Do not invent a UUID or substitute a country name.
Submit a job
Replace https://receiver.example/webhook with your final test recipient URL. aGVsbG8= encodes hello. Response storage is explicitly enabled here for the next step; stored response bytes will count toward traffic usage.
curl --fail-with-body --silent --show-error \
--request POST "$ADAL_API_URL/outbound/requests" \
--header "Authorization: Bearer $ADAL_API_TOKEN" \
--header 'Content-Type: application/json' \
--data-binary @- <<JSON
{
"region_id": "$ADAL_REGION_ID",
"method": "POST",
"url": "https://receiver.example/webhook",
"headers": {"Content-Type": ["text/plain"]},
"body": "aGVsbG8=",
"idempotency_key": "$ADAL_IDEMPOTENCY_KEY",
"save_response_body": true
}
JSON
A successful 202 contains request_id and received_at. Save the actual ID as ADAL_REQUEST_ID. 202 does not yet establish an HTTP call or its success.
Read the outcome
curl --fail-with-body --silent --show-error \
--header "Authorization: Bearer $ADAL_API_TOKEN" \
"$ADAL_API_URL/outbound/requests/$ADAL_REQUEST_ID"
Check the API journal or Outbound → Requests in the dashboard. For received/delivering, read again later; do not create another job to refresh a status. If the record has not appeared, verify the ID and retry reading. Open the card's summary and inspect the attempt and actual test-recipient result. HTTP success does not prove completion of its business transaction.
Retrieve a stored response
curl --fail-with-body --silent --show-error \
--header "Authorization: Bearer $ADAL_API_TOKEN" \
"$ADAL_API_URL/outbound/requests/$ADAL_REQUEST_ID/http"
When the summary is available, select a finished attempt from snapshot.attempts, set its attempt_id as ADAL_ATTEMPT_ID, then download the body:
curl --fail --silent --show-error \
--header "Authorization: Bearer $ADAL_API_TOKEN" \
--output response-body.bin \
"$ADAL_API_URL/outbound/requests/$ADAL_REQUEST_ID/attempts/$ADAL_ATTEMPT_ID/response/body"
Check curl completion, the expected test response bytes and summary flags read_complete/body_truncated. File availability does not mean the original response was read completely.
If the submission response is lost
Repeat the same POST with the same ADAL_IDEMPOTENCY_KEY. The repeat can receive a new ID and become duplicate, pointing to the original through duplicate_of. Continue investigating the original; the duplicate has no new HTTP execution of its own.
Next
Submission reference, journal and statuses, diagnostics, HTTP data and download errors.