Database-only
Preview, authoring, drafts, eligibility, and synthetic rehearsal do not contact recipients.
Implemented API ยท OpenAPI 3.1
Production reference generated from the implemented routes. Versioned automation authoring is available; enrollment and execution are not implemented. Protected legacy reconstruction is a non-production local CLI and is deliberately absent from the public API.
Agents send a GFAVIP Wallet bearer token. Never send a PowerLobster API key to
Connect. Humans may use the browser session; mutating session API calls also need
X-CSRF-Token. API success bodies are JSON. Current error bodies are
Flask text/html; handle the HTTP status and retain
X-Correlation-ID.
Preview, authoring, drafts, eligibility, and synthetic rehearsal do not contact recipients.
Provider and domain verification may read Mailgun or DNS but do not send email.
Test sends and controlled rehearsals may contact Mailgun and one configured recipient.
Scheduling fails closed unless every global, workspace, provider, domain, sender, consent, and approval gate is open.
| Capability | owner | brand_admin | editor | analyst |
|---|---|---|---|---|
view | yes | yes | yes | yes |
upsert_contacts | yes | yes | yes | no |
edit_content | yes | yes | yes | no |
edit_automations | yes | yes | yes | no |
send_test | yes | yes | yes | no |
schedule_campaign | yes | yes | yes | no |
manage_senders | yes | yes | no | no |
pause_delivery | yes | yes | no | no |
resolve_suppressions | yes | yes | no | no |
manage_subscription_sources | yes | yes | no | no |
manage_subscription_sources governs the console-only administration
of external intake sources and their credentials. It has no JSON API: a credential
that can write contacts into audiences is never mintable by an agent token.
edit_automations governs database-only workflow authoring.
generate_ai_content remains a forward-compatible policy name with no
implemented API.
Archived workspaces remove test-send, scheduling, and delivery-control capabilities.
Capability and safety labels are part of the OpenAPI contract.
/healthz
publiccurl -sS -X GET \
'https://connect.heliumrises.com/healthz'
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.
/readyz
publiccurl -sS -X GET \
'https://connect.heliumrises.com/readyz'
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.
/preferences/{token}
valid signed preference tokenA validly signed token is honoured however old it is. `PREFERENCE_TOKEN_MAX_AGE_SECONDS` decides when the hosted page tells the reader the link came from an older email, not when the link stops working: refusing an aged unsubscribe leaves the reader with no way out but a spam report. Aged use is recorded on the audit event as `link_expired`. Forged, tampered, and foreign-key tokens are still refused with 400.
curl -sS -X POST \
'https://connect.heliumrises.com/preferences/{token}'
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.
/preferences/one-click/{token}
valid signed preference tokenA validly signed token is honoured however old it is, so a mail client's own unsubscribe button keeps working on an old message. Aged use is recorded on the audit event as `link_expired`. Forged, tampered, and foreign-key tokens are still refused with 400.
curl -sS -X POST \
'https://connect.heliumrises.com/preferences/one-click/{token}'
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.
/webhooks/mailgun/{connection_id}
valid Mailgun webhook signatureProvider callback. Accepts JSON or Mailgun form fields whose `event-data` and `signature` values are JSON strings.
curl -sS -X POST \
'https://connect.heliumrises.com/webhooks/mailgun/{connection_id}' \
-H 'Content-Type: application/json' \
--data '{"event-data": {"event": "delivered", "id": "provider-event-id", "timestamp": 1784937600}, "signature": {"signature": "provider-supplied-hmac", "timestamp": "1784937600", "token": "provider-supplied-token"}}'
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.
/api/v1/me
authenticatedThe live response contains `user`, `auth_method`, `csrf_token`, and `workspaces`. There is no top-level `memberships` field.
curl -sS -X GET \
'https://connect.heliumrises.com/api/v1/me' \
-H 'Authorization: Bearer $GFAVIP_TOKEN'
{
"auth_method": "bearer",
"csrf_token": null,
"user": {
"gfavip_user_id": "stable-wallet-user-id",
"identity_type": "agent",
"platform_role": null,
"username": "pl-arthur-blaze"
},
"workspaces": [
{
"is_archived": false,
"organization": "gfa-community",
"role": "editor",
"workspace": "gfa-community"
}
]
}
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.
/api/v1/workspaces
authenticatedcurl -sS -X GET \
'https://connect.heliumrises.com/api/v1/workspaces' \
-H 'Authorization: Bearer $GFAVIP_TOKEN'
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.
/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/subscription-sources/{source_slug}/events
active scoped subscription-source credentialSource-only ingestion for MemoUpdate. The credential is fixed to one workspace, source, exact audience allowlist, and origin allowlist. This operation cannot schedule or send.
curl -sS -X POST \
'https://connect.heliumrises.com/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/subscription-sources/{source_slug}/events' \
-H 'Authorization: Bearer $GFAVIP_TOKEN' \
-H 'Content-Type: application/json' \
--data '{"captured_at": "2026-07-29T00:00:00Z", "consent": {"privacy_policy_url": "https://lifeisshortdoitnow.com/privacy", "privacy_policy_version": "2026-07-29", "wording_id": "newsletter-v1", "wording_sha256": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"}, "consent_granted": true, "contact": {"email": "synthetic-phase5@example.test", "first_name": "Synthetic"}, "destination_audience_id": "22222222-2222-4222-8222-222222222222", "schema_version": "connect.subscription-source-event.v1", "source": {"evidence_schema_version": "memoupdate.newsletter-consent-capture.v1", "form_id": "synthetic-form", "form_version": "1", "page_origin": "https://my.lifeisshortdoitnow.com"}, "source_event_id": "11111111-1111-4111-8111-111111111111"}'
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.
/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/subscription-sources/{source_slug}/audiences
active scoped subscription-source credentialRead-only companion to the ingest route, for a caller building an audience picker. Returns exactly the source's allowlisted audiences minus archived ones, so a rendered picker cannot offer a choice ingestion would refuse. Reveals nothing the credential's own allowlist does not already grant.
curl -sS -X GET \
'https://connect.heliumrises.com/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/subscription-sources/{source_slug}/audiences' \
-H 'Authorization: Bearer $GFAVIP_TOKEN'
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.
/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}
viewcurl -sS -X GET \
'https://connect.heliumrises.com/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}' \
-H 'Authorization: Bearer $GFAVIP_TOKEN'
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.
/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/contacts/upsert
upsert_contactscurl -sS -X POST \
'https://connect.heliumrises.com/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/contacts/upsert' \
-H 'Authorization: Bearer $GFAVIP_TOKEN' \
-H 'Content-Type: application/json' \
--data '{"country_code": "US", "email": "person@example.com", "first_name": "Person", "source": "approved-form", "tags": ["newsletter"]}'
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.
/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/imports/csv
viewcurl -sS -X GET \
'https://connect.heliumrises.com/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/imports/csv' \
-H 'Authorization: Bearer $GFAVIP_TOKEN'
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.
/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/imports/csv
upsert_contactscurl -sS -X POST \
'https://connect.heliumrises.com/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/imports/csv' \
-H 'Authorization: Bearer $GFAVIP_TOKEN'
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.
/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/imports/csv/{job_id}
viewcurl -sS -X GET \
'https://connect.heliumrises.com/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/imports/csv/{job_id}' \
-H 'Authorization: Bearer $GFAVIP_TOKEN'
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.
/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/imports/csv/{job_id}/mapping
upsert_contactscurl -sS -X PATCH \
'https://connect.heliumrises.com/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/imports/csv/{job_id}/mapping' \
-H 'Authorization: Bearer $GFAVIP_TOKEN' \
-H 'Content-Type: application/json' \
--data '{"consent_policy": "status_column", "mapping": {"email": "Email", "first_name": "First Name", "status": "Status"}, "policy": {"consent_basis": "Documented newsletter opt-in field.", "consent_source": "documented-event-registration", "default_status": "review_required", "evidence_reference": "approved-registration-export", "static_tags": ["event"], "status_values": {"subscribed": "subscribed", "unsubscribed": "audience_unsubscribe"}, "wording_version": "event-form-v2"}}'
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.
/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/imports/csv/{job_id}/approve
approve_importscurl -sS -X POST \
'https://connect.heliumrises.com/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/imports/csv/{job_id}/approve' \
-H 'Authorization: Bearer $GFAVIP_TOKEN' \
-H 'Content-Type: application/json' \
--data '{"confirmation": "APPLY CSV IMPORT job-id TO gfa-community/gfa-community"}'
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.
/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/imports/csv/{job_id}/cancel
upsert_contactscurl -sS -X POST \
'https://connect.heliumrises.com/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/imports/csv/{job_id}/cancel' \
-H 'Authorization: Bearer $GFAVIP_TOKEN'
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.
/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/imports/csv/{job_id}/retry
upsert_contactscurl -sS -X POST \
'https://connect.heliumrises.com/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/imports/csv/{job_id}/retry' \
-H 'Authorization: Bearer $GFAVIP_TOKEN'
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.
/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/imports/csv-mapping-profiles
viewcurl -sS -X GET \
'https://connect.heliumrises.com/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/imports/csv-mapping-profiles' \
-H 'Authorization: Bearer $GFAVIP_TOKEN'
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.
/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/automations
viewReturns workspace-local immutable authoring state. Phase 5B has no enrollment, execution, activation, provider, or webhook path.
curl -sS -X GET \
'https://connect.heliumrises.com/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/automations' \
-H 'Authorization: Bearer $GFAVIP_TOKEN'
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.
/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/automations
edit_automationsValidates graph structure and workspace dependencies. Makes zero provider or webhook calls and creates no enrollment.
curl -sS -X POST \
'https://connect.heliumrises.com/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/automations' \
-H 'Authorization: Bearer $GFAVIP_TOKEN' \
-H 'Content-Type: application/json' \
--data '{"change_notes": "Initial non-executable shell", "definition": {"edges": [], "nodes": [{"config": {}, "key": "finish", "type": "end"}], "start_node": "finish", "trigger": {"config": {}, "type": "manual"}}, "description": "Authoring-only synthetic workflow", "name": "Lead magnet delivery", "slug": "lead-magnet-delivery"}'
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.
/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/automations/{automation_id}
viewcurl -sS -X GET \
'https://connect.heliumrises.com/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/automations/{automation_id}' \
-H 'Authorization: Bearer $GFAVIP_TOKEN'
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.
/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/automations/{automation_id}/versions/{version_id}
viewcurl -sS -X GET \
'https://connect.heliumrises.com/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/automations/{automation_id}/versions/{version_id}' \
-H 'Authorization: Bearer $GFAVIP_TOKEN'
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.
/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/automations/{automation_id}/versions
edit_automationsResets review-ready state to draft. Does not change or migrate historical versions.
curl -sS -X POST \
'https://connect.heliumrises.com/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/automations/{automation_id}/versions' \
-H 'Authorization: Bearer $GFAVIP_TOKEN' \
-H 'Content-Type: application/json' \
--data '{"change_notes": "Reviewed source definition", "definition": {"edges": [], "nodes": [{"config": {}, "key": "finish", "type": "end"}], "start_node": "finish", "trigger": {"config": {}, "type": "manual"}}}'
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.
/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/automations/{automation_id}/ready-for-review
edit_automationsRecords an authoring milestone only. It cannot enroll contacts, schedule steps, send email, call a webhook, or open a gate.
curl -sS -X POST \
'https://connect.heliumrises.com/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/automations/{automation_id}/ready-for-review' \
-H 'Authorization: Bearer $GFAVIP_TOKEN' \
-H 'Content-Type: application/json' \
--data '{"definition_checksum": "sha256-definition-checksum", "version_id": "automation-version-id"}'
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.
/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/automations/{automation_id}/archive
edit_automationscurl -sS -X POST \
'https://connect.heliumrises.com/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/automations/{automation_id}/archive' \
-H 'Authorization: Bearer $GFAVIP_TOKEN'
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.
/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/automations/{automation_id}/restore
edit_automationsRestores authoring only and cannot activate execution.
curl -sS -X POST \
'https://connect.heliumrises.com/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/automations/{automation_id}/restore' \
-H 'Authorization: Bearer $GFAVIP_TOKEN'
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.
/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/automations/{automation_id}/enrollments
viewProduction currently returns an empty collection.
curl -sS -X GET \
'https://connect.heliumrises.com/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/automations/{automation_id}/enrollments' \
-H 'Authorization: Bearer $GFAVIP_TOKEN'
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.
/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/automation-enrollments/{enrollment_id}
viewcurl -sS -X GET \
'https://connect.heliumrises.com/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/automation-enrollments/{enrollment_id}' \
-H 'Authorization: Bearer $GFAVIP_TOKEN'
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.
/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/automations/{automation_id}/versions/{version_id}/synthetic-enrollments
edit_automationsHard-blocked in production. Accepts only archived synthetic workspaces and `.invalid` contacts bound to a rehearsal ID.
curl -sS -X POST \
'https://connect.heliumrises.com/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/automations/{automation_id}/versions/{version_id}/synthetic-enrollments' \
-H 'Authorization: Bearer $GFAVIP_TOKEN' \
-H 'Content-Type: application/json' \
--data '{"contact_id": "synthetic-contact-id", "synthetic_context_id": "synthetic-rehearsal-id"}'
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.
/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/automation-enrollments/{enrollment_id}/{action}
pause_deliveryHard-blocked while the Phase 5D runtime gate is closed.
curl -sS -X POST \
'https://connect.heliumrises.com/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/automation-enrollments/{enrollment_id}/{action}' \
-H 'Authorization: Bearer $GFAVIP_TOKEN' \
-H 'Content-Type: application/json' \
--data '{"reason": "synthetic operator rehearsal", "step_id": "failed-synthetic-step-id"}'
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.
/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/contact-field-definitions
upsert_contactscurl -sS -X POST \
'https://connect.heliumrises.com/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/contact-field-definitions' \
-H 'Authorization: Bearer $GFAVIP_TOKEN' \
-H 'Content-Type: application/json' \
--data '{"field_key": "industry", "field_type": "single_choice", "label": "Industry", "options": ["commerce", "technology"]}'
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.
/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/contacts/lookup
viewcurl -sS -X GET \
'https://connect.heliumrises.com/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/contacts/lookup' \
-H 'Authorization: Bearer $GFAVIP_TOKEN'
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.
/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/audiences
upsert_contactscurl -sS -X POST \
'https://connect.heliumrises.com/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/audiences' \
-H 'Authorization: Bearer $GFAVIP_TOKEN' \
-H 'Content-Type: application/json' \
--data '{"minimum_interval_seconds": 604800, "name": "Weekly newsletter", "purpose": "Weekly GFA community update", "slug": "weekly-newsletter"}'
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.
/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/audiences/{audience_id}
viewcurl -sS -X GET \
'https://connect.heliumrises.com/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/audiences/{audience_id}' \
-H 'Authorization: Bearer $GFAVIP_TOKEN'
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.
/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/audiences/{audience_id}/archive
upsert_contactscurl -sS -X POST \
'https://connect.heliumrises.com/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/audiences/{audience_id}/archive' \
-H 'Authorization: Bearer $GFAVIP_TOKEN'
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.
/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/audiences/{audience_id}/subscribe
upsert_contactsRefuses with 422 when an unresolved Suppression blocks the contact -- platform-wide, scoped to this workspace, or scoped to this audience -- naming the blocking scope and reason in the error. There is no parameter to override this. Resolve the suppression first via POST /suppressions/{suppression_id}/resolve (resolve_suppressions capability), then call subscribe again.
curl -sS -X POST \
'https://connect.heliumrises.com/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/audiences/{audience_id}/subscribe' \
-H 'Authorization: Bearer $GFAVIP_TOKEN' \
-H 'Content-Type: application/json' \
--data '{"contact_id": "contact-id", "evidence": {"captured_at": "2026-07-25T00:00:00Z"}, "source": "approved-form", "wording_version": "newsletter-v1"}'
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.
/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/audiences/{audience_id}/unsubscribe
upsert_contactscurl -sS -X POST \
'https://connect.heliumrises.com/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/audiences/{audience_id}/unsubscribe' \
-H 'Authorization: Bearer $GFAVIP_TOKEN' \
-H 'Content-Type: application/json' \
--data '{"contact_id": "contact-id", "source": "authorized_api"}'
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.
/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/contacts/{contact_id}/suppress
resolve_suppressionscurl -sS -X POST \
'https://connect.heliumrises.com/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/contacts/{contact_id}/suppress' \
-H 'Authorization: Bearer $GFAVIP_TOKEN' \
-H 'Content-Type: application/json' \
--data '{"reason": "manual", "scope": "workspace", "source": "authorized_api"}'
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.
/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/suppressions/{suppression_id}/resolve
resolve_suppressionsPlatform-scope safety suppressions also require a platform owner or administrator.
curl -sS -X POST \
'https://connect.heliumrises.com/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/suppressions/{suppression_id}/resolve' \
-H 'Authorization: Bearer $GFAVIP_TOKEN' \
-H 'Content-Type: application/json' \
--data '{"resolution_reason": "Reviewed and cleared by an authorized operator"}'
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.
/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/contacts/{contact_id}/eligibility/{audience_id}
viewRead-only evaluation. It never contacts Mailgun or a recipient.
curl -sS -X GET \
'https://connect.heliumrises.com/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/contacts/{contact_id}/eligibility/{audience_id}' \
-H 'Authorization: Bearer $GFAVIP_TOKEN'
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.
/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/contacts/{contact_id}/preference-token
upsert_contactscurl -sS -X POST \
'https://connect.heliumrises.com/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/contacts/{contact_id}/preference-token' \
-H 'Authorization: Bearer $GFAVIP_TOKEN' \
-H 'Content-Type: application/json' \
--data '{"audience_id": "audience-id", "scope": "audience"}'
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.
/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/sending-domains
manage_senderscurl -sS -X POST \
'https://connect.heliumrises.com/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/sending-domains' \
-H 'Authorization: Bearer $GFAVIP_TOKEN' \
-H 'Content-Type: application/json' \
--data '{"domain_name": "mail.example.com", "tracking_domain": "track.example.com"}'
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.
/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/sending-domains/{domain_id}/readiness
manage_senderscurl -sS -X POST \
'https://connect.heliumrises.com/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/sending-domains/{domain_id}/readiness' \
-H 'Authorization: Bearer $GFAVIP_TOKEN' \
-H 'Content-Type: application/json' \
--data '{"alignment_state": "not_checked", "dkim_state": "pending", "dmarc_state": "pending", "notes": "Pending live verification", "quota_state": "not_checked", "spf_state": "pending", "verification_state": "pending"}'
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.
/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/sending-domains/{domain_id}/provider
manage_senderscurl -sS -X POST \
'https://connect.heliumrises.com/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/sending-domains/{domain_id}/provider' \
-H 'Authorization: Bearer $GFAVIP_TOKEN' \
-H 'Content-Type: application/json' \
--data '{"dkim_selector": "smtp", "provider_connection_id": "provider-connection-id", "provider_domain_reference": "mail.example.com"}'
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.
/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/sending-domains/{domain_id}/verify
manage_sendersPerforms DNS lookups and Mailgun status reads. It sends no email.
curl -sS -X POST \
'https://connect.heliumrises.com/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/sending-domains/{domain_id}/verify' \
-H 'Authorization: Bearer $GFAVIP_TOKEN'
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.
/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/sender-identities
manage_senderscurl -sS -X POST \
'https://connect.heliumrises.com/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/sender-identities' \
-H 'Authorization: Bearer $GFAVIP_TOKEN' \
-H 'Content-Type: application/json' \
--data '{"display_name": "GFA Community", "from_address": "news@mail.example.com", "reply_to": "support@example.com", "sending_domain_id": "sending-domain-id"}'
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.
/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/sender-identities/{sender_id}/activate
manage_sendersRequires `ACTIVATE PRODUCTION SENDING` and closed-by-default global activation gates.
curl -sS -X POST \
'https://connect.heliumrises.com/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/sender-identities/{sender_id}/activate' \
-H 'Authorization: Bearer $GFAVIP_TOKEN' \
-H 'Content-Type: application/json' \
--data '{"confirmation": "ACTIVATE PRODUCTION SENDING"}'
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.
/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/activate-sending
manage_sendersRequires `ACTIVATE PRODUCTION SENDING`, a ready sender, and all global activation gates.
curl -sS -X POST \
'https://connect.heliumrises.com/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/activate-sending' \
-H 'Authorization: Bearer $GFAVIP_TOKEN' \
-H 'Content-Type: application/json' \
--data '{"confirmation": "ACTIVATE PRODUCTION SENDING"}'
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.
/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/provider-connections
manage_senderscurl -sS -X POST \
'https://connect.heliumrises.com/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/provider-connections' \
-H 'Authorization: Bearer $GFAVIP_TOKEN' \
-H 'Content-Type: application/json' \
--data '{"credential_env_key": "MAILGUN_API_KEY_GFA", "name": "Mailgun US", "region": "us", "webhook_signing_env_key": "MAILGUN_WEBHOOK_SIGNING_KEY_GFA"}'
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.
/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/provider-connections/{connection_id}/check
manage_sendersContacts Mailgun for an account-level check but sends no email.
curl -sS -X POST \
'https://connect.heliumrises.com/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/provider-connections/{connection_id}/check' \
-H 'Authorization: Bearer $GFAVIP_TOKEN'
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.
/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/provider-connections/{connection_id}/activate
manage_sendersRequires the exact confirmation `ENABLE TEST CONNECTION`. This does not enable production sending.
curl -sS -X POST \
'https://connect.heliumrises.com/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/provider-connections/{connection_id}/activate' \
-H 'Authorization: Bearer $GFAVIP_TOKEN' \
-H 'Content-Type: application/json' \
--data '{"confirmation": "ENABLE TEST CONNECTION"}'
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.
/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/email-templates
edit_contentcurl -sS -X POST \
'https://connect.heliumrises.com/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/email-templates' \
-H 'Authorization: Bearer $GFAVIP_TOKEN' \
-H 'Content-Type: application/json' \
--data '{"description": "Versioned weekly newsletter", "name": "Weekly update", "slug": "weekly-update"}'
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.
/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/email-templates/{template_id}/archive
edit_contentShelves the template container. Send `{"archived": false}` to restore it; an empty body archives. Content versions are untouched, and a campaign already referencing one keeps working. The slug stays reserved either way, since slugs are unique per workspace whether or not the template is archived.
curl -sS -X POST \
'https://connect.heliumrises.com/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/email-templates/{template_id}/archive' \
-H 'Authorization: Bearer $GFAVIP_TOKEN' \
-H 'Content-Type: application/json' \
--data '{"archived": true}'
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.
/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/email-templates/{template_id}/versions
edit_contentDatabase-only authoring. It sends no email. The submitted HTML is sanitized against an allowlist before it is stored, and only the sanitized copy is ever sent. Check `validation.stripped` on the response: it lists tags, attributes, and CSS properties the sanitizer removed. Non-empty lists mean the stored email no longer looks like what was submitted. /skill.md documents the allowlist and the house email structure.
curl -sS -X POST \
'https://connect.heliumrises.com/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/email-templates/{template_id}/versions' \
-H 'Authorization: Bearer $GFAVIP_TOKEN' \
-H 'Content-Type: application/json' \
--data '{"html": "\u003cp\u003eHello {{ first_name }}\u003c/p\u003e\u003cp\u003e\u003ca href=\"{{ unsubscribe_url }}\"\u003eUnsubscribe\u003c/a\u003e\u003c/p\u003e", "personalization_defaults": {"first_name": "there"}, "plain_text": "Hello {{ first_name }}\n\nUnsubscribe: {{ unsubscribe_url }}", "preheader": "This week\u0027s GFA update", "subject": "Hello {{ first_name }}"}'
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.
/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/campaign-drafts
edit_contentDatabase-only draft creation. It schedules and sends nothing.
curl -sS -X POST \
'https://connect.heliumrises.com/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/campaign-drafts' \
-H 'Authorization: Bearer $GFAVIP_TOKEN' \
-H 'Content-Type: application/json' \
--data '{"audience_id": "audience-id", "content_version_id": "content-version-id", "name": "Weekly GFA update", "notes": "Draft only", "sender_identity_id": "sender-id"}'
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.
/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/campaign-drafts/{campaign_id}/versions
edit_contentcurl -sS -X POST \
'https://connect.heliumrises.com/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/campaign-drafts/{campaign_id}/versions' \
-H 'Authorization: Bearer $GFAVIP_TOKEN' \
-H 'Content-Type: application/json' \
--data '{"audience_id": "audience-id", "content_version_id": "content-version-id", "name": "Weekly GFA update", "notes": "Draft only", "sender_identity_id": "sender-id"}'
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.
/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/test-sends
send_testRequires `SEND TEST EMAIL`, an allowlisted recipient, verified domain, active provider, and test-send configuration gate.
curl -sS -X POST \
'https://connect.heliumrises.com/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/test-sends' \
-H 'Authorization: Bearer $GFAVIP_TOKEN' \
-H 'Content-Type: application/json' \
--data '{"confirmation": "SEND TEST EMAIL", "content_version_id": "content-version-id", "recipient_email": "allowlisted@example.com", "sender_identity_id": "sender-id"}'
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.
/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/rehearsals
send_testQueues one gated test email and observes signed Mailgun events. It is not a marketing send.
curl -sS -X POST \
'https://connect.heliumrises.com/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/rehearsals' \
-H 'Authorization: Bearer $GFAVIP_TOKEN' \
-H 'Content-Type: application/json' \
--data '{"confirmation": "RUN CONTROLLED REHEARSAL", "content_version_id": "content-version-id", "recipient_email": "allowlisted@example.com", "sender_identity_id": "sender-id"}'
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.
/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/rehearsals/{rehearsal_id}
viewcurl -sS -X GET \
'https://connect.heliumrises.com/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/rehearsals/{rehearsal_id}' \
-H 'Authorization: Bearer $GFAVIP_TOKEN'
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.
/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/campaign-drafts/{campaign_id}/schedule
schedule_campaignFails closed unless every global, workspace, provider, domain, sender, content, and production-sending gate is open.
curl -sS -X POST \
'https://connect.heliumrises.com/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/campaign-drafts/{campaign_id}/schedule' \
-H 'Authorization: Bearer $GFAVIP_TOKEN' \
-H 'Content-Type: application/json' \
--data '{"scheduled_for": "2026-08-01T10:00:00+07:00"}'
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.
/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/campaign-runs/{run_id}
viewcurl -sS -X GET \
'https://connect.heliumrises.com/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/campaign-runs/{run_id}' \
-H 'Authorization: Bearer $GFAVIP_TOKEN'
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.
/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/campaign-runs/{run_id}/report
viewcurl -sS -X GET \
'https://connect.heliumrises.com/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/campaign-runs/{run_id}/report' \
-H 'Authorization: Bearer $GFAVIP_TOKEN'
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.
/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/campaign-runs/{run_id}/unschedule
schedule_campaigncurl -sS -X POST \
'https://connect.heliumrises.com/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/campaign-runs/{run_id}/unschedule' \
-H 'Authorization: Bearer $GFAVIP_TOKEN'
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.
/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/campaign-runs/{run_id}/{action}
pause_deliverycurl -sS -X POST \
'https://connect.heliumrises.com/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/campaign-runs/{run_id}/{action}' \
-H 'Authorization: Bearer $GFAVIP_TOKEN'
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.
/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/provider-events/{event_id}/replay
pause_deliverycurl -sS -X POST \
'https://connect.heliumrises.com/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/provider-events/{event_id}/replay' \
-H 'Authorization: Bearer $GFAVIP_TOKEN'
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.
/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/operations/preflight
viewcurl -sS -X GET \
'https://connect.heliumrises.com/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/operations/preflight' \
-H 'Authorization: Bearer $GFAVIP_TOKEN'
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.
/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/operations/preflight
manage_sendersMay perform readiness inspection but sends no email and opens no gates.
curl -sS -X POST \
'https://connect.heliumrises.com/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/operations/preflight' \
-H 'Authorization: Bearer $GFAVIP_TOKEN'
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.
/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/operations/synthetic-rehearsals
manage_sendersUses no subscriber data, makes zero provider calls, sends no email, and rolls back synthetic operational rows.
curl -sS -X POST \
'https://connect.heliumrises.com/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/operations/synthetic-rehearsals' \
-H 'Authorization: Bearer $GFAVIP_TOKEN' \
-H 'Content-Type: application/json' \
--data '{"confirmation": "RUN 10000 SYNTHETIC REHEARSAL", "idempotency_key": "synthetic-capacity-10000-0001", "recipient_count": 10000}'
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.
/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/operations/synthetic-rehearsals/{run_id}
viewcurl -sS -X GET \
'https://connect.heliumrises.com/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/operations/synthetic-rehearsals/{run_id}' \
-H 'Authorization: Bearer $GFAVIP_TOKEN'
Replace path placeholders and example identifiers with values from your workspace. Exact schemas and errors remain authoritative in OpenAPI JSON.