> For a complete page index, fetch https://docs.synthflow.ai/llms.txt. For full documentation content, fetch https://docs.synthflow.ai/llms-full.txt. # Get Webhook Log Detail GET https://api.synthflow.ai/v2/logs/{webhook_log_id} Retrieve detailed information for a specific webhook log Reference: https://docs.synthflow.ai/api-reference/platform-api/webhook-logs/get-webhook-log-detail ## Authentication - `Authorization` header (bearer token, required) — Bearer authentication of the form `Bearer `, where token is your auth token. ## Servers - `https://api.synthflow.ai/v2` (Global, default) - `https://api.us.synthflow.ai/v2` (United States) - `https://api.eu.synthflow.ai/v2` (European Union) ## Request ### Path parameters - `webhook_log_id` (string, required) ### Query parameters - `workspace_id` (string, required) ## Response ### 200 Detailed webhook log information - `status` (string, required) - `response` (WebhookLogPayload, required) ## Errors ### 403 Forbidden Error Access denied to workspace - `error` (string, optional) — Error type or classification - `message` (string, optional) — Detailed error message ### 404 Not Found Error Webhook log not found - `error` (string, optional) — Error type or classification - `message` (string, optional) — Detailed error message ### 422 Unprocessable Entity Error Validation error - `error` (string, optional) — Error type or classification - `message` (string, optional) — Detailed error message ## Types ### WebhookLogPayload - `webhook_log_id` (string, required) — Unique identifier for the webhook log - `webhook_type` (enum, required) — Type of webhook - Allowed values: `external_webhook`, `inbound_webhook`, `custom_action` - `webhook_url` (string, required) — URL of the webhook endpoint - `call_id` (string, required) — ID of the call associated with this webhook - `request_timestamp` (datetime, required) — Timestamp when the request was sent - `attempt_number` (integer, required) — Number of attempts made - `request_headers` (WebhookLogPayloadRequestHeaders, required) — HTTP headers sent with the request - `request_payload` (WebhookLogPayloadRequestPayload, required) — Payload sent with the request - `status` (enum, required) — Status of webhook execution - Allowed values: `pending`, `success`, `failed` - `model_id` (string, optional) — ID of the model/assistant - `workspace_id` (string, optional) — ID of the workspace - `action_id` (string, optional) — ID of the action - `response_timestamp` (datetime, optional) — Timestamp when the response was received - `response_status_code` (integer, optional) — HTTP status code of the response - `response_payload` (WebhookLogPayloadResponsePayload, optional) — Payload received in the response - `response_headers` (WebhookLogPayloadResponseHeaders, optional) — HTTP headers received in the response - `duration_ms` (integer, optional) — Duration of the request in milliseconds - `error_message` (string, optional) — Error message if the webhook failed - `request_origin` (WebhookLogPayloadRequestOrigin, optional) — Request origin headers (user_agent, x_forwarded_for, x_real_ip) - `flow_location` (WebhookLogPayloadFlowLocation, optional) — Conversation flow context (stage, stage_name, and optionally node, node_name) - `request_query_params` (WebhookLogPayloadRequestQueryParams, optional) — URL query parameters - `response_ttfb_ms` (integer, optional) — Time to first byte in milliseconds - `response_size_total` (integer, optional) — Total response size including headers (bytes) - `response_size_body` (integer, optional) — Response body size only (bytes) ### WebhookLogPayloadRequestHeaders HTTP headers sent with the request ### WebhookLogPayloadRequestPayload Payload sent with the request ### WebhookLogPayloadResponsePayload Payload received in the response ### WebhookLogPayloadResponseHeaders HTTP headers received in the response ### WebhookLogPayloadRequestOrigin Request origin headers (user_agent, x_forwarded_for, x_real_ip) ### WebhookLogPayloadFlowLocation Conversation flow context (stage, stage_name, and optionally node, node_name) ### WebhookLogPayloadRequestQueryParams URL query parameters ## Examples **Response** ```json { "status": "string", "response": { "webhook_log_id": "123e4567-e89b-12d3-a456-426614174000", "webhook_type": "external_webhook", "webhook_url": "https://api.example.com/webhook", "call_id": "call_123456789", "request_timestamp": {}, "attempt_number": 1, "request_headers": { "Authorization": "Bearer token", "Content-Type": "application/json" }, "request_payload": { "data": { "call_id": "call_123" }, "event": "call.completed" }, "status": "success", "model_id": "37dd5a94-4fc8-4989-a2c1-ca761d182ffa", "workspace_id": "1727192238961x413997613917405200", "action_id": "action_123456789", "response_timestamp": {}, "response_status_code": 200, "response_payload": { "status": "ok" }, "response_headers": { "Content-Type": "application/json" }, "duration_ms": 5000, "error_message": "Connection timeout", "request_origin": { "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)", "x_forwarded_for": "192.168.1.100", "x_real_ip": "203.0.113.45" }, "flow_location": { "stage": "2", "stage_name": "discovery" }, "request_query_params": { "source": "voice_call", "timezone": "America/New_York" }, "response_ttfb_ms": 120, "response_size_total": 1024, "response_size_body": 856 } } ``` **SDK Code** ```python import requests url = "https://api.synthflow.ai/v2/logs/e6d18ef6-83d8-4ff4-a885-74b357ea1190" querystring = {"workspace_id":"1727192238961x413997613917405200"} headers = {"Authorization": "Bearer "} response = requests.get(url, headers=headers, params=querystring) print(response.json()) ``` ```go package main import ( "fmt" "net/http" "io" ) func main() { url := "https://api.synthflow.ai/v2/logs/e6d18ef6-83d8-4ff4-a885-74b357ea1190?workspace_id=1727192238961x413997613917405200" req, _ := http.NewRequest("GET", url, nil) req.Header.Add("Authorization", "Bearer ") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` ```ruby require 'uri' require 'net/http' url = URI("https://api.synthflow.ai/v2/logs/e6d18ef6-83d8-4ff4-a885-74b357ea1190?workspace_id=1727192238961x413997613917405200") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Get.new(url) request["Authorization"] = 'Bearer ' response = http.request(request) puts response.read_body ``` ```java import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.get("https://api.synthflow.ai/v2/logs/e6d18ef6-83d8-4ff4-a885-74b357ea1190?workspace_id=1727192238961x413997613917405200") .header("Authorization", "Bearer ") .asString(); ``` ```csharp using RestSharp; var client = new RestClient("https://api.synthflow.ai/v2/logs/e6d18ef6-83d8-4ff4-a885-74b357ea1190?workspace_id=1727192238961x413997613917405200"); var request = new RestRequest(Method.GET); request.AddHeader("Authorization", "Bearer "); IRestResponse response = client.Execute(request); ``` ```swift import Foundation let headers = ["Authorization": "Bearer "] let request = NSMutableURLRequest(url: NSURL(string: "https://api.synthflow.ai/v2/logs/e6d18ef6-83d8-4ff4-a885-74b357ea1190?workspace_id=1727192238961x413997613917405200")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "GET" request.allHTTPHeaderFields = headers let session = URLSession.shared let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in if (error != nil) { print(error as Any) } else { let httpResponse = response as? HTTPURLResponse print(httpResponse) } }) dataTask.resume() ```