Browse the docs Open

Embedded Forms

let anyone render, no key required

An embedded form turns a template into a fill-in-the-blanks widget you can hand to a teammate, a client, or the public. Whoever opens it edits only the layers you chose to expose and renders a snap, and they never touch an API token. You, the form owner, pay for the render.

An embedded form is authenticated by the link itself. The signature is built into the URL, so the form needs no API key. That is the opposite of Signed URLs, where you sign each request with an API token. Use an embedded form when a person fills in the values, and a signed URL when your code does.

1. Create a form

Open a template, or a template collection, and choose Forms → New form. Tick the layers you want people to edit. Anything you leave unticked stays locked to the template default. A template form renders a single snap, and a collection form renders one snap for each template in the collection.

2. Grab the signed URLs

Every form comes with two ready-to-use links:

Field Use
signed_url The hosted form page. Drop it in an <iframe> to embed the whole widget.
submit_signed_url The POST target. Send layer values straight to it if you would rather build your own UI.

3. Embed it, or post to it

Drop the form into a page with an iframe:

<iframe src="https://snapsbrew.com/embedded-form/<formUuid>?signature=<sig>"
        width="100%" height="640" frameborder="0"></iframe>

Or send the layer values yourself:

curl -X POST 'https://snapsbrew.com/api/v1/embedded-forms/<formUuid>?signature=<sig>' \
  -F 'layers[headline]=Summer sale' \
  -F 'layers[logo][email protected]'

Layer keys

Template forms address a layer by its plain key, like headline. Collection forms put the template UUID in front of the key ({templateUuid}__{layerKey}), so the same key on two templates stays separate. Values key by layer type: image → image_url (a file), text → text, empty → background_color, and qr_code → qr_content. Any layer the form was not set up with is quietly ignored.

Billing

The form owner pays: 1 credit for a template form, or 1 credit per template for a collection form. The person filling it in is never charged, and never needs an account.

Good to know

A signature that has been changed or is missing returns a 404. There is no placeholder fallback the way there is with signed URLs, so always use the exact signed_url the form handed you.

Collection forms hand back a bare array of snap objects rather than a data-wrapped object, and the submit endpoint is not rate limited. The full request and response shapes live in the Embedded Forms endpoint reference.