Test Tool Webhook
Requires the tools:update scope. Sends one request to the saved tool’s
configured webhook and returns the exact payload plus a sanitized preview
of the downstream response. The test follows the same payload contract
and HTTP semantics as a live call, including the configured method and
timeout_seconds.
Omitted extraction arguments receive <test_name> placeholders. Supplied
arguments may contain only names declared in the tool’s effective
payload_config.extraction_parameters. When agent_id is supplied, that
agent must belong to the API key’s company and supplies the standard
agent_id / agent_name fields.
Production tool-webhook payload shape (this is what your webhook URL receives when the agent actually invokes the tool during a call, when config.payload_config.include_standard_metadata is true, the default):
{
"company_id": "uuid",
"agent_id": "uuid",
"agent_name": "string",
"call_id": "uuid",
"call_direction": "outbound" | "inbound" | "web_call",
"caller_number": "+972...",
"callee_number": "+972...",
"call_metadata": { "...": "exactly what you passed at POST /calls body.metadata" },
"call_variables": { "LeadName": "...", "AppointmentDate": "..." },
"<your_extraction_param>": "<what the AI extracted>"
}
call_metadata— the object you passed at call creation. Use this to carry CRM IDs (appointment_id, contact_id, calendar_id, etc.) that tool receivers need to route updates back to the right record. The agent never sees these keys (they’re not injected into the prompt).call_variables— the{{VariableName}}values substituted into the system prompt. Useful for echoing context (e.g. Slack alerts: “Noa booked an appointment for ”).- Both are forwarded in real-time — your webhook doesn’t need a follow-up
GET /calls/{id}fetch.
Setting include_standard_metadata: false strips the 9 standard-envelope
fields and sends only static + extraction params. For POST, PUT,
PATCH, and DELETE, the flat payload is sent as JSON. For GET, the
same fields are encoded as query parameters (objects/arrays are compact
JSON strings) and no request body is sent.
tools:update.
Basic test
With no request body, Yappr generates a<test_name> value for every configured extraction parameter:
include_standard_metadata, and timeout_seconds (default 30 seconds; allowed range 1–60).
Configured headers may include authorization and custom content types, but request-routing/framing headers (Host, Content-Length, Transfer-Encoding, Connection, Expect, Keep-Alive, Proxy-*, TE, Trailer, Upgrade) are rejected when the tool is saved.
Webhook targets must be final public HTTP(S) endpoints. Localhost, cloud-metadata hosts, non-global literal or DNS-resolved addresses, mixed public/private DNS answers, and redirects are rejected. Configure the final destination URL directly; redirects are not followed.
Supply representative values
Use an optional JSON body when the receiver needs realistic argument or call-context samples:Production parity
Wheninclude_standard_metadata is true (the default), payload_sent includes the real company id, the supplied agent context (or null agent fields), call context, configured static parameters, and extraction arguments. With it set to false, only static and extraction parameters are sent.
POST,PUT,PATCH, andDELETEtools receive the flat payload as JSON.GETtools receive the same fields as query parameters and no request body. Object and array values are compact JSON strings.- Configured request headers are used for delivery but are never echoed in the API response.
Success response
Any downstream HTTP2xx status returns 200 from this endpoint. Redirects and every other non-2xx status are delivery failures:
payload_sent is the exact flat object delivered. delivery_id can be null if delivery logging failed; logging failure does not turn a successful downstream request into a failure.
Delivery failure
A downstream HTTP or network failure returns502; a timeout returns 504:
code is one of DOWNSTREAM_HTTP_ERROR, WEBHOOK_NETWORK_ERROR, or WEBHOOK_TIMEOUT. Downstream body previews are sanitized and length-capped.
Errors
Authorizations
Your Yappr API key (e.g. ypr_live_...). Generate one in the dashboard under Settings → API Keys.
Path Parameters
Body
Response
Downstream endpoint returned an HTTP 2xx status
Sanitized, length-capped preview of the downstream response body.
Exact flat payload delivered to the tool's webhook URL.
Webhook-delivery log ID. Null only if logging failed; logging does not change delivery success.