List delivery attempts
List destination delivery attempts for the calling location, newest first. Backed by analytics; defaults to the last 7 days when no since is given. Both agency and viewer keys may read.
Associating deliveries with events (profile activity stream). Every delivery records the event_uuid of the event that triggered it, which is the same value as the uuid field on rows from the activity endpoints (e.g. GET /client/v1/data/people/{personId}/activity). To show "this event was sent to a destination" indicators across a page of activity, pass that page's event uuids as a comma-separated event_uuid list (up to 200) in a single call, then group the returned rows by event_uuid client-side. Widen since to cover the activity window (the default is only 7 days). For the sent request body and the destination's response body, drill into GET /client/v1/destinations/{id}/deliveries/{eventUuid}.
curl -X GET "https://mythic-analytics.gulp.workers.dev/client/v1/destinations/deliveries?action_id=123e4567-e89b-12d3-a456-426614174000&status=success&event_uuid=example_string&since=2024-12-25T10%3A00%3A00Z&until=2024-12-25T10%3A00%3A00Z&limit=50&offset=0" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_TOKEN"
import requests
import json
url = "https://mythic-analytics.gulp.workers.dev/client/v1/destinations/deliveries?action_id=123e4567-e89b-12d3-a456-426614174000&status=success&event_uuid=example_string&since=2024-12-25T10%3A00%3A00Z&until=2024-12-25T10%3A00%3A00Z&limit=50&offset=0"
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_API_TOKEN"
}
response = requests.get(url, headers=headers)
print(response.json())
const response = await fetch("https://mythic-analytics.gulp.workers.dev/client/v1/destinations/deliveries?action_id=123e4567-e89b-12d3-a456-426614174000&status=success&event_uuid=example_string&since=2024-12-25T10%3A00%3A00Z&until=2024-12-25T10%3A00%3A00Z&limit=50&offset=0", {
method: "GET",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_API_TOKEN"
}
});
const data = await response.json();
console.log(data);
package main
import (
"fmt"
"net/http"
)
func main() {
req, err := http.NewRequest("GET", "https://mythic-analytics.gulp.workers.dev/client/v1/destinations/deliveries?action_id=123e4567-e89b-12d3-a456-426614174000&status=success&event_uuid=example_string&since=2024-12-25T10%3A00%3A00Z&until=2024-12-25T10%3A00%3A00Z&limit=50&offset=0", nil)
if err != nil {
panic(err)
}
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Authorization", "Bearer YOUR_API_TOKEN")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
fmt.Println("Response Status:", resp.Status)
}
require 'net/http'
require 'json'
uri = URI('https://mythic-analytics.gulp.workers.dev/client/v1/destinations/deliveries?action_id=123e4567-e89b-12d3-a456-426614174000&status=success&event_uuid=example_string&since=2024-12-25T10%3A00%3A00Z&until=2024-12-25T10%3A00%3A00Z&limit=50&offset=0')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Get.new(uri)
request['Content-Type'] = 'application/json'
request['Authorization'] = 'Bearer YOUR_API_TOKEN'
response = http.request(request)
puts response.body
{
"success": true,
"data": [
{
"ts": "2024-12-25T10:00:00Z",
"action_id": "123e4567-e89b-12d3-a456-426614174000",
"action_name": "John Doe",
"destination_type": "webhook",
"event_name": "John Doe",
"event_uuid": "example_string",
"destination_event_name": "John Doe",
"status": "success",
"attempt": 42,
"max_attempts": 42,
"response_status": 42,
"error": "example_string",
"duration_ms": 3.14,
"queued_at": "2024-12-25T10:00:00Z",
"enrichment_applied": true
}
],
"limit": 50,
"offset": 0
}
{
"error": "Bad Request",
"message": "The request contains invalid parameters or malformed data",
"code": 400,
"details": [
{
"field": "email",
"message": "Invalid email format"
}
]
}
{
"error": "Unauthorized",
"message": "Authentication required. Please provide a valid API token",
"code": 401
}
{
"error": "Too Many Requests",
"message": "Rate limit exceeded. Please try again later",
"code": 429,
"retryAfter": 3600
}
{
"error": "Error",
"message": "Upstream data store returned an error.",
"code": 502
}
{
"error": "Service Unavailable",
"message": "The service is temporarily unavailable. Please try again later",
"code": 503
}
/client/v1/destinations/deliveries
Target server for requests. Edit to use your own host.
Client key as bearer token. Use an agency key (Bearer ak_...) for read-write access or a location secret key (Bearer sk_...) for read-only access. Scoped keys (mcp_) are accepted too and need destinations:read or destinations:write. See Using an mcp_ key over HTTP.
Bearer ak_...) for read-write access or a location secret key (Bearer sk_...) for read-only access. Scoped keys (mcp_) are accepted too and need destinations:read or destinations:write. See Using an mcp_ key over HTTP.
Filter to a single destination id.
Filter by delivery status.
Filter to deliveries triggered by a source event. Accepts a single event uuid, or a comma-separated list (up to 200) to resolve delivery status for a whole batch of events in one request — see the endpoint description for the profile activity-stream use case. Each value matches the uuid field on an event returned by the activity endpoints.
Lower time bound. ISO 8601 or YYYY-MM-DD HH:MM:SS. Defaults to 7 days ago when omitted.
Upper time bound. ISO 8601 or YYYY-MM-DD HH:MM:SS.
Maximum rows. Default 50, min 1, max 500.
Rows to skip. Default 0.
Request Preview
Response
Response will appear here after sending the request
Authentication
Bearer token. Client key as bearer token. Use an agency key (Bearer ak_...) for read-write access or a location secret key (Bearer sk_...) for read-only access. Scoped keys (mcp_) are accepted too and need destinations:read or destinations:write. See Using an mcp_ key over HTTP.
Query Parameters
Filter to a single destination id.
Filter to deliveries triggered by a source event. Accepts a single event uuid, or a comma-separated list (up to 200) to resolve delivery status for a whole batch of events in one request — see the endpoint description for the profile activity-stream use case. Each value matches the uuid field on an event returned by the activity endpoints.
Lower time bound. ISO 8601 or YYYY-MM-DD HH:MM:SS. Defaults to 7 days ago when omitted.
Upper time bound. ISO 8601 or YYYY-MM-DD HH:MM:SS.
Maximum rows. Default 50, min 1, max 500.
Rows to skip. Default 0.