Export tenant usage data
Changed onExport email usage data for all tenants in CSV or JSON Lines format. Designed for billing system integration, data warehousing, and analytics.
Jobs to be done:
- Import usage data into billing systems (Stripe, Chargebee, etc.)
- Load into data warehouses (Snowflake, BigQuery, etc.)
- Process in spreadsheets (Excel, Google Sheets)
- Feed into BI tools (Looker, Metabase, etc.)
Export formats:
- csv - UTF-8 with BOM for Excel compatibility (default)
- jsonl - JSON Lines (one JSON object per line, streamable)
CSV columns: tenant_id, tenant_name, external_id, status, sent, delivered, soft_failed, hard_failed, bounced, held, delivery_rate, bounce_rate, period_start, period_end
Response headers:
- Content-Disposition - Filename for download
- Content-Type - text/csv or application/x-ndjson
Request
- Base URLhttps://api.arkhq.io/v1
- AuthHTTP bearer
- TypeScriptA function with typed inputs. Its response is checked against the schema.
Query parameters
Time period for export.
Shortcuts: this_month, last_month, last_30_days, etc.
Month format: 2024-01 (YYYY-MM)
Custom range: 2024-01-01..2024-01-15
Export format
Filter by tenant status
Only include tenants with at least this many emails sent
Timezone for period calculations (IANA format)
Response
Usage export data
Example response
[
{
"tenant_id": "cm6abc123def456",
"tenant_name": "Acme Corp",
"external_id": "acme_123",
"status": "active",
"sent": 10000,
"delivered": 9700,
"soft_failed": 100,
"hard_failed": 50,
"bounced": 100,
"held": 50,
"delivery_rate": 0.97,
"bounce_rate": 0.015
}
]Changes
- breaking
for the
queryrequest parameterperiod, default valuethis_monthwas added - breaking
removed the enum value
jsonfrom thequeryrequest parameterformat - warning
deleted the
queryrequest parametermin_sent - warning
added the new
infrastructure_errorenum value to the/response property for the response status - warning
added the new
infrastructure_errorenum value to the/response property for the response status - warning
added the new
infrastructure_errorenum value to the/response property for the response status - warning
added the new
infrastructure_errorenum value to the/response property for the response status - info
added the new optional
queryrequest parameterminSent - info
removed the
postal_errorenum value from the/response property for the response status - info
removed the
postal_errorenum value from the/response property for the response status - info
removed the
postal_errorenum value from the/response property for the response status - info
removed the
postal_errorenum value from the/response property for the response status
- breaking
- warning
added the new
already_existsenum value to the/response property for the response status - warning
added the new
already_existsenum value to the/response property for the response status - warning
added the new
already_existsenum value to the/response property for the response status - warning
added the new
already_existsenum value to the/response property for the response status - warning
added the new
attachment_too_largeenum value to the/response property for the response status - warning
added the new
attachment_too_largeenum value to the/response property for the response status - warning
added the new
attachment_too_largeenum value to the/response property for the response status - warning
added the new
attachment_too_largeenum value to the/response property for the response status - warning
added the new
authentication_requiredenum value to the/response property for the response status - warning
added the new
authentication_requiredenum value to the/response property for the response status - warning
added the new
authentication_requiredenum value to the/response property for the response status - warning
added the new
authentication_requiredenum value to the/response property for the response status - warning
added the new
billing_errorenum value to the/response property for the response status - warning
added the new
billing_errorenum value to the/response property for the response status - warning
added the new
billing_errorenum value to the/response property for the response status - warning
added the new
billing_errorenum value to the/response property for the response status - warning
added the new
billing_not_configuredenum value to the/response property for the response status - warning
added the new
billing_not_configuredenum value to the/response property for the response status - warning
added the new
billing_not_configuredenum value to the/response property for the response status - warning
added the new
billing_not_configuredenum value to the/response property for the response status - warning
added the new
credential_not_foundenum value to the/response property for the response status - warning
added the new
credential_not_foundenum value to the/response property for the response status - warning
added the new
credential_not_foundenum value to the/response property for the response status - warning
added the new
credential_not_foundenum value to the/response property for the response status - warning
added the new
credential_on_holdenum value to the/response property for the response status - warning
added the new
credential_on_holdenum value to the/response property for the response status - warning
added the new
credential_on_holdenum value to the/response property for the response status - warning
added the new
credential_on_holdenum value to the/response property for the response status - warning
added the new
credential_revokedenum value to the/response property for the response status - warning
added the new
credential_revokedenum value to the/response property for the response status - warning
added the new
credential_revokedenum value to the/response property for the response status - warning
added the new
credential_revokedenum value to the/response property for the response status - warning
added the new
delivery_not_foundenum value to the/response property for the response status - warning
added the new
delivery_not_foundenum value to the/response property for the response status - warning
added the new
delivery_not_foundenum value to the/response property for the response status - warning
added the new
delivery_not_foundenum value to the/response property for the response status - warning
added the new
domain_already_existsenum value to the/response property for the response status - warning
added the new
domain_already_existsenum value to the/response property for the response status - warning
added the new
domain_already_existsenum value to the/response property for the response status - warning
added the new
domain_already_existsenum value to the/response property for the response status - warning
added the new
domain_not_foundenum value to the/response property for the response status - warning
added the new
domain_not_foundenum value to the/response property for the response status - warning
added the new
domain_not_foundenum value to the/response property for the response status - warning
added the new
domain_not_foundenum value to the/response property for the response status - warning
added the new
domain_not_verifiedenum value to the/response property for the response status - warning
added the new
domain_not_verifiedenum value to the/response property for the response status - warning
added the new
domain_not_verifiedenum value to the/response property for the response status - warning
added the new
domain_not_verifiedenum value to the/response property for the response status - warning
added the new
email_not_foundenum value to the/response property for the response status - warning
added the new
email_not_foundenum value to the/response property for the response status - warning
added the new
email_not_foundenum value to the/response property for the response status - warning
added the new
email_not_foundenum value to the/response property for the response status - warning
added the new
external_id_already_existsenum value to the/response property for the response status - warning
added the new
external_id_already_existsenum value to the/response property for the response status - warning
added the new
external_id_already_existsenum value to the/response property for the response status - warning
added the new
external_id_already_existsenum value to the/response property for the response status - warning
added the new
forbiddenenum value to the/response property for the response status - warning
added the new
forbiddenenum value to the/response property for the response status - warning
added the new
forbiddenenum value to the/response property for the response status - warning
added the new
forbiddenenum value to the/response property for the response status - warning
added the new
idempotency_conflictenum value to the/response property for the response status - warning
added the new
idempotency_conflictenum value to the/response property for the response status - warning
added the new
idempotency_conflictenum value to the/response property for the response status - warning
added the new
idempotency_conflictenum value to the/response property for the response status - warning
added the new
insufficient_balanceenum value to the/response property for the response status - warning
added the new
insufficient_balanceenum value to the/response property for the response status - warning
added the new
insufficient_balanceenum value to the/response property for the response status - warning
added the new
insufficient_balanceenum value to the/response property for the response status - warning
added the new
internal_errorenum value to the/response property for the response status - warning
added the new
internal_errorenum value to the/response property for the response status - warning
added the new
internal_errorenum value to the/response property for the response status - warning
added the new
internal_errorenum value to the/response property for the response status - warning
added the new
invalid_api_keyenum value to the/response property for the response status - warning
added the new
invalid_api_keyenum value to the/response property for the response status - warning
added the new
invalid_api_keyenum value to the/response property for the response status - warning
added the new
invalid_api_keyenum value to the/response property for the response status - warning
added the new
invalid_email_addressenum value to the/response property for the response status - warning
added the new
invalid_email_addressenum value to the/response property for the response status - warning
added the new
invalid_email_addressenum value to the/response property for the response status - warning
added the new
invalid_email_addressenum value to the/response property for the response status - warning
added the new
invalid_raw_messageenum value to the/response property for the response status - warning
added the new
invalid_raw_messageenum value to the/response property for the response status - warning
added the new
invalid_raw_messageenum value to the/response property for the response status - warning
added the new
invalid_raw_messageenum value to the/response property for the response status - warning
added the new
invalid_requestenum value to the/response property for the response status - warning
added the new
invalid_requestenum value to the/response property for the response status - warning
added the new
invalid_requestenum value to the/response property for the response status - warning
added the new
invalid_requestenum value to the/response property for the response status - warning
added the new
ip_not_allowedenum value to the/response property for the response status - warning
added the new
ip_not_allowedenum value to the/response property for the response status - warning
added the new
ip_not_allowedenum value to the/response property for the response status - warning
added the new
ip_not_allowedenum value to the/response property for the response status - warning
added the new
message_too_largeenum value to the/response property for the response status - warning
added the new
message_too_largeenum value to the/response property for the response status - warning
added the new
message_too_largeenum value to the/response property for the response status - warning
added the new
message_too_largeenum value to the/response property for the response status - warning
added the new
metadata_key_invalidenum value to the/response property for the response status - warning
added the new
metadata_key_invalidenum value to the/response property for the response status - warning
added the new
metadata_key_invalidenum value to the/response property for the response status - warning
added the new
metadata_key_invalidenum value to the/response property for the response status - warning
added the new
metadata_too_largeenum value to the/response property for the response status - warning
added the new
metadata_too_largeenum value to the/response property for the response status - warning
added the new
metadata_too_largeenum value to the/response property for the response status - warning
added the new
metadata_too_largeenum value to the/response property for the response status - warning
added the new
metadata_value_invalidenum value to the/response property for the response status - warning
added the new
metadata_value_invalidenum value to the/response property for the response status - warning
added the new
metadata_value_invalidenum value to the/response property for the response status - warning
added the new
metadata_value_invalidenum value to the/response property for the response status - warning
added the new
missing_fieldenum value to the/response property for the response status - warning
added the new
missing_fieldenum value to the/response property for the response status - warning
added the new
missing_fieldenum value to the/response property for the response status - warning
added the new
missing_fieldenum value to the/response property for the response status - warning
added the new
missing_scopeenum value to the/response property for the response status - warning
added the new
missing_scopeenum value to the/response property for the response status - warning
added the new
missing_scopeenum value to the/response property for the response status - warning
added the new
missing_scopeenum value to the/response property for the response status - warning
added the new
not_foundenum value to the/response property for the response status - warning
added the new
not_foundenum value to the/response property for the response status - warning
added the new
not_foundenum value to the/response property for the response status - warning
added the new
not_foundenum value to the/response property for the response status - warning
added the new
payload_too_largeenum value to the/response property for the response status - warning
added the new
payload_too_largeenum value to the/response property for the response status - warning
added the new
payload_too_largeenum value to the/response property for the response status - warning
added the new
payload_too_largeenum value to the/response property for the response status - warning
added the new
payment_requiredenum value to the/response property for the response status - warning
added the new
payment_requiredenum value to the/response property for the response status - warning
added the new
payment_requiredenum value to the/response property for the response status - warning
added the new
payment_requiredenum value to the/response property for the response status - warning
added the new
postal_errorenum value to the/response property for the response status - warning
added the new
postal_errorenum value to the/response property for the response status - warning
added the new
postal_errorenum value to the/response property for the response status - warning
added the new
postal_errorenum value to the/response property for the response status - warning
added the new
rate_limit_exceededenum value to the/response property for the response status - warning
added the new
rate_limit_exceededenum value to the/response property for the response status - warning
added the new
rate_limit_exceededenum value to the/response property for the response status - warning
added the new
rate_limit_exceededenum value to the/response property for the response status - warning
added the new
send_limit_exceededenum value to the/response property for the response status - warning
added the new
send_limit_exceededenum value to the/response property for the response status - warning
added the new
send_limit_exceededenum value to the/response property for the response status - warning
added the new
send_limit_exceededenum value to the/response property for the response status - warning
added the new
server_suspendedenum value to the/response property for the response status - warning
added the new
server_suspendedenum value to the/response property for the response status - warning
added the new
server_suspendedenum value to the/response property for the response status - warning
added the new
server_suspendedenum value to the/response property for the response status - warning
added the new
service_unavailableenum value to the/response property for the response status - warning
added the new
service_unavailableenum value to the/response property for the response status - warning
added the new
service_unavailableenum value to the/response property for the response status - warning
added the new
service_unavailableenum value to the/response property for the response status - warning
added the new
suppressed_recipientenum value to the/response property for the response status - warning
added the new
suppressed_recipientenum value to the/response property for the response status - warning
added the new
suppressed_recipientenum value to the/response property for the response status - warning
added the new
suppressed_recipientenum value to the/response property for the response status - warning
added the new
suppression_not_foundenum value to the/response property for the response status - warning
added the new
suppression_not_foundenum value to the/response property for the response status - warning
added the new
suppression_not_foundenum value to the/response property for the response status - warning
added the new
suppression_not_foundenum value to the/response property for the response status - warning
added the new
tenant_not_foundenum value to the/response property for the response status - warning
added the new
tenant_not_foundenum value to the/response property for the response status - warning
added the new
tenant_not_foundenum value to the/response property for the response status - warning
added the new
tenant_not_foundenum value to the/response property for the response status - warning
added the new
too_many_attachmentsenum value to the/response property for the response status - warning
added the new
too_many_attachmentsenum value to the/response property for the response status - warning
added the new
too_many_attachmentsenum value to the/response property for the response status - warning
added the new
too_many_attachmentsenum value to the/response property for the response status - warning
added the new
too_many_recipientsenum value to the/response property for the response status - warning
added the new
too_many_recipientsenum value to the/response property for the response status - warning
added the new
too_many_recipientsenum value to the/response property for the response status - warning
added the new
too_many_recipientsenum value to the/response property for the response status - warning
added the new
unauthenticated_from_addressenum value to the/response property for the response status - warning
added the new
unauthenticated_from_addressenum value to the/response property for the response status - warning
added the new
unauthenticated_from_addressenum value to the/response property for the response status - warning
added the new
unauthenticated_from_addressenum value to the/response property for the response status - warning
added the new
unprocessable_entityenum value to the/response property for the response status - warning
added the new
unprocessable_entityenum value to the/response property for the response status - warning
added the new
unprocessable_entityenum value to the/response property for the response status - warning
added the new
unprocessable_entityenum value to the/response property for the response status - warning
added the new
validation_errorenum value to the/response property for the response status - warning
added the new
validation_errorenum value to the/response property for the response status - warning
added the new
validation_errorenum value to the/response property for the response status - warning
added the new
validation_errorenum value to the/response property for the response status - warning
added the new
webhook_not_foundenum value to the/response property for the response status - warning
added the new
webhook_not_foundenum value to the/response property for the response status - warning
added the new
webhook_not_foundenum value to the/response property for the response status - warning
added the new
webhook_not_foundenum value to the/response property for the response status
- warning