דלג לתוכן מרכזי

Developer docs · Reference

Automation endpoints for Make, n8n and HTTP clients

The automation endpoints under https://formy.co.il/api/external are what a Make scenario, an n8n workflow or your own script needs to connect to Formy: check a token, list workspaces, list a workspace's forms and a form's fields, and subscribe a webhook to a form with a sample delivery for mapping. They use the same personal access tokens as the REST API, on every plan.

Most people connecting Make never call them: Make's built-in Custom webhook module is enough, as the Make guide shows. These endpoints are for scenarios that list forms and fields, register their own webhook, or send documents for signature.

Base
https://formy.co.il/api/external
Auth
Authorization: Bearer <token>
Rate limit
60 requests a minute, across all /external routes
Formy app in Make
Not in Make's public app directory
Formy app in Zapier
None. Use a webhook and Catch Hook
By , CTO of FormyPublished Updated

Written with AI assistance and checked against the product on . Approved for publication by Tomer Gal, CTO of Formy. How we write and approve content (Hebrew)

The endpoints

Automation endpoints
RouteAbilityReturns
GET /external/validateany token{name, email} of the token's owner
GET /external/workspacesworkspaces-readYour workspaces
GET /external/forms?workspace_id=forms-readOne workspace's forms
GET /external/forms/{form}/fieldsforms-readA form's answerable fields
POST /external/make/webhookmanage-integrationsSubscribes a hook URL to a form
DELETE /external/make/webhookmanage-integrationsUnsubscribes it
GET /external/make/submissions/recent?form_id=manage-integrationsOne sample delivery
POST /external/forms/{form}/signing-requestsforms-writeSee Signing requests

Every list returns plain JSON arrays, not paginated: each list holds a whole workspace. Items carry both {id, name} and {value, label}, so a platform's dropdown can read them without remapping.

Validate a token

GET /external/validate needs no ability: it answers whether the token is real, which is what a connection test asks. A token that connects but lacks an ability fails later, on the route that needs it, with 403.

curl https://formy.co.il/api/external/validate \
  -H "Authorization: Bearer $FORMY_TOKEN" -H "Accept: application/json"
{ "name": "Dana Cohen", "email": "dana@example.com" }

Workspaces, forms and fields

curl https://formy.co.il/api/external/workspaces -H "Authorization: Bearer $FORMY_TOKEN" -H "Accept: application/json"

curl "https://formy.co.il/api/external/forms?workspace_id=1" -H "Authorization: Bearer $FORMY_TOKEN" -H "Accept: application/json"
[
  { "id": 1, "name": "Acme Ltd", "label": "Acme Ltd", "value": 1 }
]
GET /external/workspaces
[
  {
    "id": 1,
    "name": "Service agreement",
    "label": "Service agreement (service-agreement)",
    "value": 1,
    "slug": "service-agreement",
    "visibility": "public"
  }
]
GET /external/forms?workspace_id=1. Without workspace_id the call answers 422.

GET /external/forms/{form}/fields lists the fields a response can hold, so a mapping screen can show "Full name" instead of a field ID before the form was ever filled in. Layout blocks, such as headings, text and page breaks, are left out because they never hold an answer. {form} is the form's ID or slug.

[
  {
    "value": "3f6c2a1e-8b4d-4c2f-9a71-1d2e3f4a5b6c",
    "label": "Full name",
    "id": "3f6c2a1e-8b4d-4c2f-9a71-1d2e3f4a5b6c",
    "name": "Full name",
    "type": "text",
    "required": true,
    "hidden": false
  },
  {
    "value": "8a1d4e2b-5c3f-4a6e-b7d8-9e0f1a2b3c4d",
    "label": "Package",
    "id": "8a1d4e2b-5c3f-4a6e-b7d8-9e0f1a2b3c4d",
    "name": "Package",
    "type": "select",
    "required": false,
    "hidden": false
  }
]
GET /external/forms/service-agreement/fields (two of the fields).

required and hidden matter for mapping: an optional or hidden field is often absent from a delivery, so a scenario that depends on it needs a fallback.

Subscribe a Make webhook

A Make instant trigger registers its own webhook when its scenario is switched on and removes it when the scenario is switched off. These three routes do that:

curl -X POST https://formy.co.il/api/external/make/webhook \
  -H "Authorization: Bearer $FORMY_TOKEN" -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"form_id": 1, "hookUrl": "https://hook.eu1.make.com/abc123"}'
{ "id": 2, "form_id": 1, "form_title": "Service agreement", "hook_url": "https://hook.eu1.make.com/abc123" }
200 OK. id is the integration Formy created on the form.
  • form_id is the form's numeric ID, and hookUrl must be a public https:// URL. An optional scenario_url is stored so that the integration card in Formy can link to the scenario.
  • The subscription is an ordinary Make integration on the form: it appears on the form's אינטגרציות tab, can be paused there, and records its history under אירועים קודמים.
  • Attaching the same hookUrl again updates the existing integration, and switches it back on if it was paused, instead of adding a second one, so a retried attach never doubles deliveries.
  • DELETE /external/make/webhook with the same body removes only Make integrations with that URL, never a webhook someone added by hand to the same address. It answers {"removed": 1} with the number removed; removing something already gone is not an error.
A form's integrations tab in Formy, in Hebrew: the add-integration button, a filter by state, and four active integrations as cards: an email notification marked as delivering, and Slack, Webhook and Make notifications marked as waiting, each with an on/off switch and an actions menu.
The form's אינטגרציות tab: every webhook, every Make subscription made through the API, and every other integration is a card here, with its state and a switch. Screenshot of the product, with made-up data.

GET /external/make/submissions/recent?form_id=1 returns a list with one delivery in exactly the shape the trigger sends: built from the form's latest response, or from generated placeholder answers if it has none. It is cached for five minutes. Note that it shows a real respondent's latest answers to whoever holds the token.

What Make deliveries contain

A Make delivery is the webhook payload without the deprecated submission and message keys: form_id, form_title, form_slug, submission_id, data keyed by field ID, and attribution, edit_link or pdf_url when they apply. Unlike a webhook, it is not signed and is attempted once, with a 10-second timeout. The same is true of the n8n, Activepieces, Pabbly and Albato cards.

The Formy app for Make

Formy's own Make app, with a trigger, a field picker and a signing-request action, is not in Make's public app directory. Nothing on this page depends on it: Make's built-in Custom webhook module receives Formy deliveries, and Make's HTTP module can call every endpoint here with a token in the Authorization header.

Zapier

There is no Formy app in Zapier, and the Zapier card in the product is switched off on formy.co.il. To use Zapier, start a Zap with Webhooks by Zapier's Catch Hook and paste its URL into a התראת Webhook; the Zapier guide walks through it.

The routes under /external/zapier/... are older copies of the endpoints above, kept so that existing connections keep working. Use the provider-neutral routes in new work.

Errors

Errors from the automation endpoints
StatusMeaning
401The token is missing, wrong or deleted.
403The token lacks the ability the route needs. The message is Invalid ability provided.
404The form does not exist, or it is in a workspace the token's owner is not in. Formy answers 404 rather than 403 so that a token cannot probe other workspaces' form IDs.
422A required parameter is missing, such as workspace_id, or hookUrl is not a public HTTPS URL. The message is in Hebrew.
429More than 60 requests in a minute. Wait for Retry-After.

Questions developers ask

Do I need a Formy app in Make to connect a form?

No. Use Make's Custom webhook module: copy its URL into the Make card on the form's integrations tab and submit a test response. The automation endpoints are only needed when a scenario should list forms and fields or register its own webhook.

Which token abilities does a Make scenario need?

workspaces-read for the workspace list, forms-read for forms and fields, manage-integrations to subscribe a webhook or read a sample, and forms-write only if it sends documents for signature. Give it a token of its own.

Can n8n or Activepieces use these endpoints?

Yes. They are plain HTTPS and JSON, so any HTTP node can call them with a token. To receive responses, give the platform's webhook trigger URL to a Formy webhook, which adds signing and retries.

Why does the form list return 404 for a form I can see in Formy?

The token belongs to someone else, or to a person who is not a member of that form's workspace. A token acts as the person who created it, in that person's workspaces only.

Every page of the docs is listed in Formy developer docs .

Try it on a free account

Every plan includes the API, webhooks, the embed SDK and the MCP server, Free included.

Create a free account