newsletter
POST
https://hermeticor.com /v1/newsletter/imports Import a Substack/Medium zip, a beehiiv CSV, a Ghost JSON or a WordPress WXR file (multipart: file, publicationId, source, attestedBy?). Subscribers in the file are added only when attestedBy names who vouches they opted in
Code samples
cURL
curl -X POST "https://hermeticor.com/v1/newsletter/imports" \
-H "Authorization: Bearer $HERMETICOR_API_KEY"TypeScript
Python
Go
PHP
Ruby
Java
Responses
202 Default Response
Example
{
"id": "string",
"publicationId": "string",
"source": "substack",
"status": "queued",
"stats": {
"posts": 0,
"skipped": 0,
"redirects": 0,
"subscribers": 0,
"errors": []
},
"error": "string",
"createdAt": "2024-01-01T00:00:00Z",
"updatedAt": "2024-01-01T00:00:00Z"
}Schema
idstringrequiredpublicationIdstringrequiredsourcestringrequiredstatusstringrequiredstatsobjectrequiredShow child parameters
postsintegerrequiredskippedintegerrequiredredirectsintegerrequiredsubscribersintegerrequirederrorsstring[]requirederrorstringrequiredcreatedAtstringrequiredupdatedAtstringrequired4XX Default Response
Example
{
"error": {
"code": "string",
"message": "string",
"details": {}
}
}Schema
errorobjectrequiredShow child parameters
codestringrequiredmessagestringrequireddetailsobjectPOST
https://hermeticor.com /v1/newsletter/imports/rss Import posts from an RSS or Atom feed that carries full content (fetched by the worker, SSRF-guarded)
Request body
application/json
publicationIdstringrequiredurlstringrequired{
"publicationId": "string",
"url": "string"
}Code samples
cURL
curl -X POST "https://hermeticor.com/v1/newsletter/imports/rss" \
-H "Authorization: Bearer $HERMETICOR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"publicationId":"string","url":"string"}'TypeScript
Python
Go
PHP
Ruby
Java
Responses
GET
https://hermeticor.com /v1/newsletter/publications/{id}/imports Parameters
limitintegerqueryPage size; omitted returns the whole list
cursorstringqueryOpaque: the
nextCursor of the previous pageidstringpathrequiredCode samples
cURL
curl -X GET "https://hermeticor.com/v1/newsletter/publications/{id}/imports" \
-H "Authorization: Bearer $HERMETICOR_API_KEY"TypeScript
Python
Go
PHP
Ruby
Java
Responses
200 Default Response
Example
{
"items": [
{
"id": "string",
"publicationId": "string",
"source": "substack",
"status": "queued",
"stats": {
"posts": 0,
"skipped": 0,
"redirects": 0,
"subscribers": 0,
"errors": []
},
"error": "string",
"createdAt": "2024-01-01T00:00:00Z",
"updatedAt": "2024-01-01T00:00:00Z"
}
],
"nextCursor": "string"
}Schema
itemsPostV1NewsletterImportsResponse[]requiredShow child parameters
idstringrequiredpublicationIdstringrequiredsourcestringrequiredstatusstringrequiredstatsobjectrequiredShow child parameters
postsintegerrequiredskippedintegerrequiredredirectsintegerrequiredsubscribersintegerrequirederrorsstring[]requirederrorstringrequiredcreatedAtstringrequiredupdatedAtstringrequirednextCursorstringrequiredGET
https://hermeticor.com /v1/newsletter/imports/{id} Parameters
idstringpathrequiredCode samples
cURL
curl -X GET "https://hermeticor.com/v1/newsletter/imports/{id}" \
-H "Authorization: Bearer $HERMETICOR_API_KEY"TypeScript
Python
Go
PHP
Ruby
Java
Responses
GET
https://hermeticor.com /v1/newsletter/stripe Stripe connection status and the webhook URL to register
Code samples
cURL
curl -X GET "https://hermeticor.com/v1/newsletter/stripe" \
-H "Authorization: Bearer $HERMETICOR_API_KEY"TypeScript
Python
Go
PHP
Ruby
Java
Responses
200 Default Response
Example
{
"connected": true,
"livemode": true,
"keyHint": "string",
"webhookUrl": "string",
"lastEventAt": "2024-01-01T00:00:00Z"
}Schema
connectedbooleanrequiredlivemodebooleanrequiredkeyHintstringrequiredwebhookUrlstringrequiredlastEventAtstringrequiredPUT
https://hermeticor.com /v1/newsletter/stripe Connect the workspace's own Stripe account (keys are sealed and never returned)
Request body
application/json
secretKeystringrequiredwebhookSecretstringrequired{
"secretKey": "string",
"webhookSecret": "string"
}Code samples
cURL
curl -X PUT "https://hermeticor.com/v1/newsletter/stripe" \
-H "Authorization: Bearer $HERMETICOR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"secretKey":"string","webhookSecret":"string"}'TypeScript
Python
Go
PHP
Ruby
Java
Responses
DELETE
https://hermeticor.com /v1/newsletter/stripe Code samples
cURL
curl -X DELETE "https://hermeticor.com/v1/newsletter/stripe" \
-H "Authorization: Bearer $HERMETICOR_API_KEY"TypeScript
Python
Go
PHP
Ruby
Java
Responses
200 Default Response
Example
{
"ok": true
}Schema
okbooleanrequiredGET
https://hermeticor.com /v1/newsletter/tiers Parameters
limitintegerqueryPage size; omitted returns the whole list
cursorstringqueryOpaque: the
nextCursor of the previous pageCode samples
cURL
curl -X GET "https://hermeticor.com/v1/newsletter/tiers" \
-H "Authorization: Bearer $HERMETICOR_API_KEY"TypeScript
Python
Go
PHP
Ruby
Java
Responses
200 Default Response
Example
{
"items": [
{
"id": "string",
"name": "string",
"description": "string",
"benefits": [
"string"
],
"currency": "string",
"monthlyMinor": 0,
"annualMinor": 0,
"trialDays": 0,
"isFounding": true,
"foundingLimit": 0,
"teamPlan": true,
"status": "active",
"position": 0,
"members": 0
}
],
"nextCursor": "string"
}Schema
itemsItemsItem191[]requiredShow child parameters
idstringrequirednamestringrequireddescriptionstringrequiredbenefitsstring[]requiredcurrencystringrequiredmonthlyMinorintegerrequiredannualMinorintegerrequiredtrialDaysintegerrequiredisFoundingbooleanrequiredfoundingLimitintegerrequiredteamPlanbooleanrequiredstatusstringrequiredpositionintegerrequiredmembersintegernextCursorstringrequiredPOST
https://hermeticor.com /v1/newsletter/tiers Request body
application/json
namestringrequireddescriptionstringbenefitsstring[]currencystringmonthlyMinorintegerannualMinorintegertrialDaysintegerisFoundingbooleanfoundingLimitintegerteamPlanboolean{
"name": "string",
"description": "string",
"benefits": [],
"currency": "string",
"monthlyMinor": null,
"annualMinor": null,
"trialDays": 0,
"isFounding": false,
"foundingLimit": null,
"teamPlan": false
}Code samples
cURL
curl -X POST "https://hermeticor.com/v1/newsletter/tiers" \
-H "Authorization: Bearer $HERMETICOR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"string","description":"string","benefits":[],"currency":"string","monthlyMinor":null,"annualMinor":null,"trialDays":0,"isFounding":false,"foundingLimit":null,"teamPlan":false}'TypeScript
Python
Go
PHP
Ruby
Java
Responses
200 Default Response
Example
{
"id": "string",
"name": "string",
"description": "string",
"benefits": [
"string"
],
"currency": "string",
"monthlyMinor": 0,
"annualMinor": 0,
"trialDays": 0,
"isFounding": true,
"foundingLimit": 0,
"teamPlan": true,
"status": "active",
"position": 0,
"members": 0
}Schema
idstringrequirednamestringrequireddescriptionstringrequiredbenefitsstring[]requiredcurrencystringrequiredmonthlyMinorintegerrequiredannualMinorintegerrequiredtrialDaysintegerrequiredisFoundingbooleanrequiredfoundingLimitintegerrequiredteamPlanbooleanrequiredstatusstringrequiredpositionintegerrequiredmembersintegerUpdated