plugin-support

POST /v1/plugin-support/showcase

Ask for a site to be shown on a product website's showcase page.

All plugin-support endpoints

All developer docs →

Authentication

This endpoint is public. It takes no credential and no organisation — it is what our own marketing site and AI answer engines read.

This endpoint takes no organisation id. Your key already identifies the organisation it belongs to, and the response is scoped to it.

Try it

Replace anything in angle brackets with your own values, and the key placeholder with a key from your dashboard.

curl -X POST https://api.zinndigital.com/v1/plugin-support/showcase \
  -H "Content-Type: application/json" \
  -d '{ "product": <PluginSupportProduct>, "site_url": <string>, "site_name": <string>, "description": <string>, "email": <string>, "consent": <boolean> }'

Signed in? The API console in your dashboard fills in your real organisation id and your own key, and runs the request against the live API so you can see the actual response. Open this endpoint in the API console

Details

The "Get featured" form on pagebuildersandwich.com/showcase/ (owner, 2026-10-05: "Yes, opt-in and reviewed"). Anonymous, from the visitor's browser. consent must be literally true: the visitor ticked the box agreeing that the site, its name, the description and a screenshot may be shown publicly. Files a showcase ticket in the plugin-support inbox (the sender gets the standard confirmation e-mail in their language) and a pending entry. The filing (the ticket's language detection and translation take seconds) runs on the platform worker (ShowcaseIntakeWorkflow), so the 201 answers at once with the ticket handle the worker files under; when Temporal cannot take it the request files it itself. ⛔ Nothing is public until a member of staff approves it (adminApproveShowcaseEntry) and its screenshot has been taken. Spam controls, the same as the product websites' support form: a fail-closed per-IP budget (5/hour) charged before the body is parsed, the website honeypot (202, nothing stored), then the per-e-mail ticket budget (5/hour). CORS: the product-website origins listed on createPluginSupportTicket.

Request body

NameTypeRequiredWhat it is
productPluginSupportProductYesA product plugin support is offered for. Adding one is a registry entry in engine/pluginsupport/products.py, not a new endpoint.
site_urlstringYesThe site's address (https:// is assumed when missing). Stored without query or fragment.
site_namestringYes—
descriptionstringYesA sentence or two about the site.
emailstringYes—
namestringNoThe sender's own name.
localestringNoThe page language (ar, pt-BR).
consentbooleanYesMust be literally true — the visitor agreed to the site being shown publicly.
websitestringNoThe honeypot. Leave empty; a filled one answers 202 and stores nothing.

Response

NameTypeRequiredWhat it is
referencestringYesThe ticket handle (ZT-XXXXXX).
statusShowcaseStatusYespending waits for staff; approved is public once its screenshot is ready; removed was declined or taken down.

Errors this endpoint can return

422 · 429