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 subscription-source credential, or a grant token whose scope names this source and includes events.writeSource-only ingestion for MemoUpdate. The credential is fixed to one workspace, one source, that source's origin allowlist, and the audiences that source allows -- either its exact audience allowlist or, for a source created with `allows_all_audiences`, any live audience in its own workspace. 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 subscription-source credential, or a grant token whose scope names this source and includes audiences.readRead-only companion to the ingest route, for a caller building an audience picker. Returns exactly the audiences this source may write to, minus archived ones -- its audience allowlist, or every live audience in its own workspace when it was created with `allows_all_audiences` -- so a rendered picker cannot offer a choice ingestion would refuse. A static source credential carries no scope and reaches this route on whatever the source itself allows. A grant token must carry `audiences.read` in its scope; a grant scoped only to `events.write` is refused here, so a caller needing both lists both.
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}/subscription-sources
manage_subscription_sourcesFor a caller attaching to an existing source rather than creating a near-duplicate. Each entry carries the source's id, which is what a grant scope names -- never its slug, which is unique only within one workspace. No credential is ever included.
curl -sS -X GET \
'https://connect.heliumrises.com/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/subscription-sources' \
-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
manage_subscription_sourcesCreates the source and returns it, including its id, so the caller can build a grant scope naming it. Mints no credential and none is needed: a source created this way is expected to authenticate with a Wallet grant scoped to that id. Issuing, rotating and revoking a static credential remain console-only, because that flow shows a secret exactly once. Choose how the source allows audiences: `allowed_audience_ids` is required, naming at least one live audience in this workspace, unless `allows_all_audiences` is true; with the flag true it must be absent, null or empty, and a non-empty list beside it is a `422` rather than a resolution of the two.
curl -sS -X POST \
'https://connect.heliumrises.com/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/subscription-sources' \
-H 'Authorization: Bearer $GFAVIP_TOKEN' \
-H 'Content-Type: application/json' \
--data '{"allowed_audience_ids": ["22222222-2222-4222-8222-222222222222"], "allowed_origins": ["https://my.lifeisshortdoitnow.com"], "display_name": "MemoUpdate signup form", "slug": "memoupdate-signup"}'
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}/origins
manage_subscription_sourcesTakes the complete list, never a delta. This set decides whether a live submission is accepted, so a partial apply would surface as signups quietly not arriving rather than as an error. The slug cannot be changed here: it is in the URL every live form posts to.
curl -sS -X PATCH \
'https://connect.heliumrises.com/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/subscription-sources/{source_slug}/origins' \
-H 'Authorization: Bearer $GFAVIP_TOKEN' \
-H 'Content-Type: application/json' \
--data '{"allowed_origins": ["https://my.lifeisshortdoitnow.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}
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
viewEvery audience in the workspace, for a caller rendering a picker. Archived audiences are included and flagged rather than omitted: a caller needs to know one exists and cannot be chosen, since its absence would otherwise read as a missing audience.
curl -sS -X GET \
'https://connect.heliumrises.com/api/v1/organizations/{organization_slug}/workspaces/{workspace_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}/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}/campaign-webhook
manage_sendersSets or clears the URL Console is notified at when a campaign is scheduled, completes, is cancelled, or fails, and the secret sent as a plaintext X-Webhook-Secret header on every delivery for the receiver to compare. A key absent from the body leaves that field unchanged. A workspace with no URL configured emits nothing. The secret is write-only and never appears in the response.
curl -sS -X POST \
'https://connect.heliumrises.com/api/v1/organizations/{organization_slug}/workspaces/{workspace_slug}/campaign-webhook' \
-H 'Authorization: Bearer $GFAVIP_TOKEN' \
-H 'Content-Type: application/json' \
--data '{"campaign_webhook_secret": "whsec_example", "campaign_webhook_url": "https://console.gfavip.com/webhooks/campaign-events"}'
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.