messages
GET
https://hermeticor.com /v1/messages Parameters
limitintegerquerycursorstringquerysortstringqueryprofileIdstringquerystatusstringquerysourceKindstringquerysourceIdstringqueryqstringqueryobjectTypestringqueryobjectIdstringqueryorderstringquerytagstringquerymetadatastringquerysenderIdentityIdstringquerytemplateIdstringquerychannelstringqueryfromstringquerytostringqueryvarsstringqueryeventKindstringqueryCode samples
cURL
curl -X GET "https://hermeticor.com/v1/messages" \
-H "Authorization: Bearer $HERMETICOR_API_KEY"TypeScript
Python
Go
PHP
Ruby
Java
Responses
200 Default Response
Example
{
"items": [
{
"id": "string",
"idempotencyKey": "string",
"purpose": "marketing",
"channel": "email",
"profileId": "string",
"destination": "string",
"connectionId": "string",
"senderIdentityId": "string",
"sourceKind": "campaign",
"sourceId": "string",
"stepKey": "string",
"templateVersionId": "string",
"variantKey": "string",
"status": "queued",
"blockReason": "string",
"errorClass": "string",
"decisionLog": [
{
"stage": "string",
"outcome": "allow",
"reason": "string",
"at": "2024-01-01T00:00:00Z"
}
],
"scheduledFor": "2024-01-01T00:00:00Z",
"sentAt": "2024-01-01T00:00:00Z",
"providerMessageId": "string",
"subject": "string",
"tags": [
"string"
],
"metadata": {},
"createdAt": "2024-01-01T00:00:00Z",
"updatedAt": "2024-01-01T00:00:00Z"
}
],
"nextCursor": "string"
}Schema
itemsItemsItem42[]requiredShow child parameters
idstringrequiredidempotencyKeystringrequiredpurposestringrequiredchannelstringrequiredprofileIdstringrequireddestinationstringrequiredconnectionIdstringrequiredsenderIdentityIdstringrequiredsourceKindstringrequiredsourceIdstringrequiredstepKeystringrequiredtemplateVersionIdstringrequiredvariantKeystringrequiredstatusstringrequiredblockReasonstringrequirederrorClassstringrequireddecisionLogDecisionLogItem[]requiredShow child parameters
stagestringrequiredoutcomestringrequiredreasonstringatstringscheduledForstringrequiredsentAtstringrequiredproviderMessageIdstringrequiredsubjectstringrequiredtagsstring[]requiredmetadataobjectrequiredcreatedAtstringrequiredupdatedAtstringrequirednextCursorstringrequired4XX Default Response
Example
{
"error": {
"code": "string",
"message": "string",
"details": {}
}
}Schema
errorobjectrequiredShow child parameters
codestringrequiredmessagestringrequireddetailsobjectGET
https://hermeticor.com /v1/messages/{id} Parameters
idstringpathrequiredCode samples
cURL
curl -X GET "https://hermeticor.com/v1/messages/{id}" \
-H "Authorization: Bearer $HERMETICOR_API_KEY"TypeScript
Python
Go
PHP
Ruby
Java
Responses
200 Default Response
Example
{
"job": {
"id": "string",
"idempotencyKey": "string",
"purpose": "marketing",
"channel": "email",
"profileId": "string",
"destination": "string",
"connectionId": "string",
"senderIdentityId": "string",
"sourceKind": "campaign",
"sourceId": "string",
"stepKey": "string",
"templateVersionId": "string",
"variantKey": "string",
"status": "queued",
"blockReason": "string",
"errorClass": "string",
"decisionLog": [
{
"stage": "string",
"outcome": "allow",
"reason": "string",
"at": "2024-01-01T00:00:00Z"
}
],
"scheduledFor": "2024-01-01T00:00:00Z",
"sentAt": "2024-01-01T00:00:00Z",
"providerMessageId": "string",
"subject": "string",
"tags": [
"string"
],
"metadata": {},
"createdAt": "2024-01-01T00:00:00Z",
"updatedAt": "2024-01-01T00:00:00Z"
},
"attempts": [
{
"id": "string",
"jobId": "string",
"n": 0,
"status": "string",
"errorClass": "string",
"startedAt": "2024-01-01T00:00:00Z",
"finishedAt": "2024-01-01T00:00:00Z"
}
],
"events": [
{
"id": "string",
"jobId": "string",
"profileId": "string",
"kind": "string",
"source": "string",
"connectionId": "string",
"url": "string",
"ua": "string",
"isMachine": true,
"occurredAt": "2024-01-01T00:00:00Z"
}
],
"decisionLog": [
{
"stage": "string",
"outcome": "allow",
"reason": "string",
"at": "2024-01-01T00:00:00Z"
}
]
}Schema
jobobjectrequiredShow child parameters
idstringrequiredidempotencyKeystringrequiredpurposestringrequiredchannelstringrequiredprofileIdstringrequireddestinationstringrequiredconnectionIdstringrequiredsenderIdentityIdstringrequiredsourceKindstringrequiredsourceIdstringrequiredstepKeystringrequiredtemplateVersionIdstringrequiredvariantKeystringrequiredstatusstringrequiredblockReasonstringrequirederrorClassstringrequireddecisionLogDecisionLogItem[]requiredShow child parameters
stagestringrequiredoutcomestringrequiredreasonstringatstringscheduledForstringrequiredsentAtstringrequiredproviderMessageIdstringrequiredsubjectstringrequiredtagsstring[]requiredmetadataobjectrequiredcreatedAtstringrequiredupdatedAtstringrequiredattemptsobject[]requiredShow child parameters
idstringrequiredjobIdstringrequirednintegerrequiredstatusstringrequirederrorClassstringrequiredstartedAtstringrequiredfinishedAtstringrequiredeventsobject[]requiredShow child parameters
idstringrequiredjobIdstringrequiredprofileIdstringrequiredkindstringrequiredsourcestringrequiredconnectionIdstringrequiredurlstringrequireduastringrequiredisMachinebooleanrequiredoccurredAtstringrequireddecisionLogDecisionLogItem[]requiredShow child parameters
stagestringrequiredoutcomestringrequiredreasonstringatstringPOST
https://hermeticor.com /v1/messages/send Send one message through the full consent/suppression/quiet-hours pipeline (idempotent on idempotencyKey). Purpose transactional/operational is a separate stream that still reaches people who unsubscribed from marketing, so it refuses (400) a template in a preference topic or used by a campaign, a topicId, and copy with {{ unsubscribe_url }}: send those as marketing
Request body
application/json
purposestringrequiredchannelstringrequiredprofileIdstringrequiredtemplateIdstringrequiredversionIdstringrouteobjectrequiredShow child parameters
connectionIdstringpoolIdstringroutePolicyIdstringidempotencyKeystringtopicIdstringscheduledForstringvarsobject{
"purpose": "marketing",
"channel": "email",
"profileId": "string",
"templateId": "string",
"versionId": "string",
"route": {
"connectionId": "string",
"poolId": "string",
"routePolicyId": "string"
},
"idempotencyKey": "string",
"topicId": "string",
"scheduledFor": "2024-01-01T00:00:00Z",
"vars": {}
}Code samples
cURL
curl -X POST "https://hermeticor.com/v1/messages/send" \
-H "Authorization: Bearer $HERMETICOR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"purpose":"marketing","channel":"email","profileId":"string","templateId":"string","versionId":"string","route":{"connectionId":"string","poolId":"string","routePolicyId":"string"},"idempotencyKey":"string","topicId":"string","scheduledFor":"2024-01-01T00:00:00Z","vars":{}}'TypeScript
Python
Go
PHP
Ruby
Java
Responses
202 Default Response
Example
{
"jobId": "string",
"status": "queued",
"reason": "string"
}Schema
jobIdstringrequiredstatusstringrequiredreasonstringDELETE
https://hermeticor.com /v1/profiles/{id}/engagement Delete a person's open and/or click history (privacy request); deliveries, bounces and consent stay
Parameters
kindstringqueryidstringpathrequiredCode samples
cURL
curl -X DELETE "https://hermeticor.com/v1/profiles/{id}/engagement" \
-H "Authorization: Bearer $HERMETICOR_API_KEY"TypeScript
Python
Go
PHP
Ruby
Java
Responses
200 Default Response
Example
{
"removed": 0
}Schema
removednumberrequiredPOST
https://hermeticor.com /v1/admin/messages/{id}/retry Replay a dead-lettered message; re-runs every policy stage
Parameters
idstringpathrequiredCode samples
cURL
curl -X POST "https://hermeticor.com/v1/admin/messages/{id}/retry" \
-H "Authorization: Bearer $HERMETICOR_API_KEY"TypeScript
Python
Go
PHP
Ruby
Java
Responses
200 Default Response
Example
{
"jobId": "string",
"status": "string"
}Schema
jobIdstringrequiredstatusstringrequiredUpdated