Retrieve a paginated collection of the notification emails Arta sent on your Organization's behalf, newest first unless sort says otherwise. Each record reports who the email was addressed to and how far it got.
The collection covers mailings created in the last 90 days, of the notification types GET /metadata/email_notifications publishes for your Organization.
This collection is narrowed with filter, over the fields it declares; search is not accepted here, and a clause filter cannot apply is refused rather than ignored.
Unrecognized query parameters, and any parameter sent more than once, are rejected with a 400, as is a sort value the parameter does not declare.
To read past what paging reaches, narrow the collection with created_at rather than paging into it.
Requires API access to be enabled for your Organization, and answers 403 otherwise.
Query parameters
-
Narrow the returned collection with one or more clauses. Every clause is applied: a request returns exactly the records the filter describes, or is refused with a
400naming what was at fault. A clause this parameter cannot express is never dropped silently. This syntax differs from thesearchparameter described under Search, so the rules below apply rather than those.Each clause names a field, an operator and a value. Clauses on different fields all have to hold. Repeating a text field matches any of its values, and repeating its negation excludes all of them:
status:failed type:self_ship_label status:failed status:acceptedOperators
Operator Usage Description Example :field:valueMatches the value status:failedreturns records whose status isfailed--field:valueReturns records holding a different value. Records holding no value are returned by neither the clause nor its negation; match them with null. Text fields only, except-field:null, which date fields take too-status:deliveredreturns records with another status, and not those holding no statusnullfield:null,-field:nullMatches records holding no value for the field, or with -, those holding one. Text and date fields, written in upper or lower case, unless the endpoint's field table says otherwisestatus:nullreturns records holding no status>=,>,<=,<field:>=valueCompares a date field created_at:>=2026-09-01returns records created on or after 1 September 2026..field:from..to,field:from..,field:..toA range over a date field, both ends included. Either end may be left out, but not both created_at:2026-09-01..2026-09-07returns records created in that weekDate fields are in UTC, and a bare date names the whole UTC day it falls in, so
created_at:2026-09-01covers that day end to end, whilecreated_at:>2026-09-01starts after it, at midnight on 2 September. Use>=and<=to include the day named.For a narrower bound give a timestamp in the form
"2026-09-01T09:30:00Z", quoted, since any value containing a:has to be. A timestamp takes:,>,>=,<and<=, while a range takes dates only. An offset in place ofZis resolved to the UTC instant it names:created_at:>="2026-09-01T09:30:00Z"A quoted timestamp names the second it is written to, or the fraction of a second it gives, as a bare date names its day, and every operator reads it the same way:
:covers that span,>starts after it ends,<=runs to its end, and>=and<start at its beginning.A date field carries at most one lower bound and one upper bound across the whole filter, and a bare date sets both, so a bare date cannot be combined with another bound on the same field. Two comparisons that bound opposite sides are read as the span between them, as in
created_at:>=2026-09-01 created_at:<=2026-09-10, while bounds that cross are refused.No value
nullnames a record holding no value for a field. Repeating a text field withnullmatches its values or no value:status:null status:failed status:null -sent_at:nullnulltakes no comparison or range. Besidefield:null, a text field takes only furtherfield:valueclauses, which widen it as shown above. Any other clause on the same field is refused, since a record holding no value could never also hold it, sostatus:null -status:failedis refused. Quotes do not change it:status:"null"reads asstatus:null.Refusals
A clause this endpoint cannot apply is refused with a
400naming what was at fault — an unknown field, an operator the field does not support, a value it cannot read,nullgiven as a bound, or a clause matchingnullbeside another clause on its field. Wildcards and bare terms without a field are refused too. Clauses on different fields are combined with AND, and repeated values of one text field with OR, implicitly: the wordsAND,ORandNOT, and grouping with parentheses, are not part of the syntax. Those words and a clause opening with a parenthesis are refused, while a parenthesis inside a value is read as part of that value. A filter longer than 2,000 bytes is refused too.Transactional Mailing filter fields
Each field is named after the response field it reads. Text values are matched without regard to case.
Field Type Notes idstring The mailing's own identifier. A value that is not a well-formed identifier is refused; a well-formed one naming no mailing of your Organization returns an empty page. nullis refused, since every mailing carries onestatusstring accepted,delivered,failed,sending, ornullfor a mailing whose send is still under way or did not complete. Another value returns an empty page rather than a refusaltypestring An idfromGET /metadata/email_notifications. A value this endpoint does not serve returns an empty page rather than a refusalrequest_idstring A Request identifier. One naming no Request of your Organization in the same mode as your API key is refused. nullmatches mailings sent about no Requestshipment_idstring A Shipment identifier. One naming no Shipment of your Organization in the same mode as your API key is refused. nullmatches mailings sent about no Shipmentcreated_atdate sent_atdate nullmatches mailings not yet sent -
Page number of the results to fetch. A value outside 1 to 100 is rejected with a
400.Minimum value is
1, maximum value is100. Default value is1. -
Results per page. A value outside 1 to 50 is rejected with a
400.Minimum value is
1, maximum value is50. Default value is20. -
An optional sort order for the returned collection. Another value is rejected with a
400.Values are
created_at_ascorcreated_at_desc.
curl \
--request GET 'https://api.arta.io/transactional_mailings' \
--header "Authorization: ARTA_APIKey s0e1t2e3c4a5s6t7r8o9n10o11m12y"
# Headers
content-type: application/json
x-arta-request-id: FkBjuxbwLLTx4RoAARkx
# Payload
{
"items": [
{
"created_at": "2026-09-20T15:23:10.482113",
"email_rule_id": 1942,
"email_subscription_id": 317,
"id": "e25f02f6-44b1-47ab-8fb5-e5fcc6e3b754",
"recipients": [
{
"email_address": "gallery@example.com",
"name": "Gallery"
}
],
"request_id": "f5c8652b-7b23-4370-ac61-a474ccdad3db",
"sent_at": "2026-09-20T15:23:11.000000",
"shipment_id": "93604c50-8fd5-4953-adfe-922d3baf41ab",
"status": "failed",
"type": "self_ship_label"
}
],
"metadata": {
"page": 1,
"page_size": 20,
"total_count": 1
}
}
# Headers
content-type: application/json
x-arta-request-id: FkBjuxbwLLTx4RoAARkx
# Payload
{
"error": "status is not a supported parameter"
}