Reports
Put what you spent against what it produced, for any date range.
Get the money-vs-outcomes report
Puts spend against results for a window (since/until compare inclusively; both optional). Spend has two parts. (1) Settled credit debits from the workspace ledger, grouped by reason; in-flight reservations are excluded until they settle, credits used while Emailchaser had made the workspace's credits free are not spend and are excluded, and credits are valued at the current list price of one credit, the same per-credit price a top-up is quoted at before volume discounts, regardless of what was actually paid for them via bulk discounts or plan allowances. (2) Done-for-you order costs from each order's stored cost breakdown; orders are counted by creation time, and failed or canceled orders are excluded because their charges are unwound. Subscription (platform) fees are NOT included: the backend stores only the current subscription state, not per-window invoice history, so they cannot be attributed to a window honestly. Outcomes are sent emails, replied leads, positively-replied (interested) leads and leads marked meeting-booked in the window. costPerReply, costPerPositive and costPerMeeting divide total spend by each outcome count and are null when that count is zero. The optional campaignId narrows the OUTCOME side only - credit and order spend is workspace-level and cannot be attributed to one campaign - so per-campaign cost figures are partial attribution, not a true campaign cost.
Parameters
- since string in query
Window start, RFC3339 or YYYY-MM-DD (inclusive)
- until string in query
Window end, RFC3339 or YYYY-MM-DD (inclusive; a bare date means midnight UTC at the start of that day)
- campaignId integer in query
Narrow the outcome side to one campaign (partial attribution; spend stays workspace-level)
Responses
- 200 The report · OutcomesReportResponse
- 400 Invalid query parameter · ErrorResponse
- 401 Unauthorized - invalid or missing API key · ErrorUnauthorized
- 404 Campaign not found · ErrorResponse
- 500 Failed to build the report · ErrorResponse
Fields in the 200 response
- campaignId integer
CampaignID echoes the campaign filter when one was given. Only the outcome side is narrowed by it; spend stays workspace-level.
Example:12 - costPerMeeting number
CostPerMeeting is total spend divided by meetings, null when there are none.
Example:11.48 - costPerPositive number
CostPerPositive is total spend divided by positive replies, null when there are none.
Example:4.59 - costPerReply number
CostPerReply is total spend divided by replies, null when there are none.
Example:1.91 - outcomes OutcomesReportOutcomes
4 fields inside outcomes
- meetings integer
Meetings counts leads marked as having booked a meeting in the window.
Example:2 - positiveReplies integer
PositiveReplies counts leads whose reply was categorized as interested.
Example:5 - replies integerExample:
12 - sent integerExample:
400
- since string
Since echoes the window start, or null when the window is open-ended.
Example:2026-07-01T00:00:00Z - spend OutcomesReportSpend
6 fields inside spend
- credits integer
Credits is the total of settled credit debits in the window. In-flight reservations are excluded until they settle.
Example:120 - creditsByReason array of OutcomesReportCreditReason
- creditsUsd number
CreditsUsd values the spent credits at the list price per credit.
Example:3.96 - dfyOrders integer
DfyOrders is how many done-for-you orders were placed in the window (failed and canceled orders are excluded).
Example:1 - dfyOrdersUsd numberExample:
18.99 - totalUsd numberExample:
22.95
- until string
Until echoes the window end, or null when the window is open-ended.
Example:2026-07-31T00:00:00Z
Request
curl -X GET "https://api.emailchaser.com/r/reports/outcomes" \
-H "Authorization: Bearer $EMAILCHASER_API_KEY"Response
{
"campaignId": 12,
"costPerMeeting": 11.48,
"costPerPositive": 4.59,
"costPerReply": 1.91,
"outcomes": {
"meetings": 2,
"positiveReplies": 5,
"replies": 12,
"sent": 400
},
"since": "2026-07-01T00:00:00Z",
"spend": {
"credits": 120,
"creditsByReason": [
{
"credits": 120,
"reason": "prospect_reveal"
}
],
"creditsUsd": 3.96,
"dfyOrders": 1,
"dfyOrdersUsd": 18.99,
"totalUsd": 22.95
},
"until": "2026-07-31T00:00:00Z"
}Generated from the Emailchaser API's own OpenAPI definition, so it always matches the running API.