Distributions (Public Submission)
Distributions are public landing pages that let end users claim a wallet pass by submitting a short form. This section documents the public submission surface only: fetching a published page's config, submitting the form to enroll, and resending a pass email.
These pages are powered by the wallethero-api Directus endpoint extension. All endpoints are mounted under the /wallethero-api prefix. Base URL: https://api.wallethero.app.
Dashboard CRUD for distributions (
/wallethero-api/workspace/:workspaceId/distributions) is covered in Distribution CRUD. The embeddable widget endpoints (/wallethero-api/embed/distribution/:token/*) and API-token rotation are documented elsewhere and are not covered here.
The public flow
- Fetch the public page —
GET /wallethero-api/distribution/public/:pageAddressreturns the published page's HTML, CSS, and form-field configuration. Render the form from this. - Submit to enroll —
POST /wallethero-api/distribution/submitcreates (or reuses) a client and pass for the submitter and emails them the wallet download links. - Resend the pass email —
POST /wallethero-api/pass/resendre-sends the download links for an existing pass.
| Method | Path | Auth | Doc |
|---|---|---|---|
GET | /wallethero-api/distribution/public/:pageAddress | Public | This page |
POST | /wallethero-api/distribution/submit | Public | Submit |
POST | /wallethero-api/pass/resend | Bearer token (workspace member) | Resend |
Get Public Distribution Page
GET /wallethero-api/distribution/public/:pageAddress
Resolves a published distribution by its public page address and returns the data needed to render its landing form. Returns 404 if no matching published page exists.
Auth: Public — no Bearer token, no workspace membership.
Path Parameters
| Parameter | Type | Description |
|---|---|---|
pageAddress | string | The distribution's public page address (slug). |
Query Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
workspaceSlug | string | No | — | Disambiguates the page address when the same slug exists across multiple workspaces. When provided, the lookup is constrained to that workspace. |
Example Request
curl "https://api.wallethero.app/wallethero-api/distribution/public/PAGE_ADDRESS?workspaceSlug=acme"Response (200)
{
"success": true,
"data": {
"id": "b7f0c9d2-1a3e-4c8b-9f2d-7e6a5c4b3a21",
"status": "published",
"css": ".form { max-width: 480px; }",
"form_fields_config": {
"marketing_consent": { "enabled": true, "required": false, "label": "Send me offers" }
},
"landing_html": "<form>...</form>",
"landing_html_success": "<p>Check your email!</p>"
}
}Response Fields
| Field | Type | Description |
|---|---|---|
data.id | string (UUID) | Distribution identifier — pass this as distribution_id when submitting. |
data.status | string | Distribution status (always published for a successful response). |
data.css | string | null | Custom CSS for the landing form. |
data.form_fields_config | object | null | Configuration describing which form fields to render. |
data.landing_html | string | null | HTML for the landing/form page. |
data.landing_html_success | string | null | HTML to show after a successful submission. |
Errors
| Status | Body | Description |
|---|---|---|
400 | { "error": "Page address is required" } | Missing :pageAddress. |
404 | { "error": "Distribution not found or not published" } | No published distribution matches the page address (and workspace slug, if given). |
SDK
No SDK method — call the REST endpoint directly. (The SDK's PublicDistributionService targets the token-based /embed/distribution/:token/* endpoints, which are documented separately.)