How to Create and Manage Forms with the API

Create, list, update and delete FormRobin forms and read their sessions with the API. Get a token under Settings → API, then call the /api/v1/forms endpoints.

What can I do with the Forms API?

With the Forms API you can:

  • Create a form (name, folder, submit button text, email notifications)
  • List your forms, 100 per page
  • Get, update or delete one form
  • Read a form's sessions (submissions and visits)
To Send
Create a form POST /api/v1/forms
List your forms GET /api/v1/forms
Get one form GET /api/v1/forms/{id}
Update a form PUT /api/v1/forms/{id}
Delete a form DELETE /api/v1/forms/{id}
Read a form's sessions GET /api/v1/forms/{id}/sessions

Questions, design and settings are built in the form editor; the API creates the form itself. Tokens are managed under Settings → API:

FormRobin API Settings page showing Developer API and Personal Access Tokens sections

Prerequisites: a Personal Access Token or a token from the login endpoint — see the API Authentication Guide. The API is available on both plans, Free Plan and Individual Plan.

How do I create a form?

Endpoint

POST https://formrobin.com/api/v1/forms

Request Format

Authorization: Bearer YOUR_TOKEN
Content-Type: application/json

{
  "name": "Contact Form",
  "folder_id": 42,
  "data": {
    "submit_text": "Send"
  },
  "email_notifications_enabled": true
}

Which parameters can I send?

  • name (required, string, up to 255 characters) - the form name
  • folder_id (optional, integer or null) - a folder in your account (a folder ID that does not exist returns 422; another account's folder returns 404)
  • data.submit_text (optional, string, up to 255 characters) - the submit button text (default "Submit")
  • email_notifications_enabled (optional, boolean) - default true

Success Response

HTTP 201 Created:

{
  "data": {
    "id": 123,
    "name": "Contact Form",
    "folder_id": 42,
    "email_notifications_enabled": true,
    "url": "https://formrobin.com/f/j50q4kw",
    "redirect_url": null,
    "webhook_url": null,
    "created_at": "2026-01-15T10:30:00.000000Z",
    "updated_at": "2026-01-15T10:30:00.000000Z"
  }
}

The url field is the form's public link. A form created through the API starts unpublished and has no questions yet: open it in FormRobin, add questions, then publish it with its toggle on the Forms page (see Publishing and Sharing Your Form).

Example: Creating a Form

curl -X POST https://formrobin.com/api/v1/forms \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name": "Newsletter Signup", "folder_id": 42, "data": {"submit_text": "Subscribe"}}'

How do I list all forms?

Endpoint

GET https://formrobin.com/api/v1/forms

Description

Returns your forms, newest first, 100 per page. The endpoint takes no filter, sort or search parameters; use ?page=2 (or the next link) for more pages.

Example: List Forms

curl https://formrobin.com/api/v1/forms \
  -H "Authorization: Bearer YOUR_TOKEN"

Response

{
  "data": [
    {
      "id": 123,
      "name": "Contact Form",
      "folder_id": 42,
      "email_notifications_enabled": true,
      "url": "https://formrobin.com/f/j50q4kw",
      "redirect_url": null,
      "webhook_url": null,
      "created_at": "...",
      "updated_at": "..."
    }
  ],
  "links": {
    "first": "https://formrobin.com/api/v1/forms?page=1",
    "last": "...",
    "prev": null,
    "next": null
  },
  "meta": {
    "current_page": 1,
    "last_page": 1,
    "per_page": 100,
    "total": 1,
    ...
  }
}

How do I get a specific form?

Endpoint

GET https://formrobin.com/api/v1/forms/{id}

Example

curl https://formrobin.com/api/v1/forms/123 \
  -H "Authorization: Bearer YOUR_TOKEN"

Response

The same form object as above, inside "data".

How do I update a form?

Endpoint

PUT https://formrobin.com/api/v1/forms/{id}

Request Format

{
  "name": "Contact Us",
  "data": { "submit_text": "Send Message" },
  "email_notifications_enabled": false
}

Request Parameters

Send only what you want to change:

  • name (string, up to 255 characters)
  • folder_id (integer or null) - a folder in your account
  • data.submit_text (string, up to 255 characters)
  • email_notifications_enabled (boolean)

The response is the updated form object.

Example: Update Form Name

curl -X PUT https://formrobin.com/api/v1/forms/123 \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name": "Contact Us - Updated"}'

How do I delete a form?

Endpoint

DELETE https://formrobin.com/api/v1/forms/{id}

Example

curl -X DELETE https://formrobin.com/api/v1/forms/123 \
  -H "Authorization: Bearer YOUR_TOKEN"

Response

HTTP 204 No Content. The form and its responses disappear from your account, and deleted forms cannot be restored from FormRobin. Export responses first if you need them (see Exporting Form Data as CSV).

How do I get form sessions?

Endpoint

GET https://formrobin.com/api/v1/forms/{id}/sessions

Which query parameters are supported?

  • completed (optional, boolean) - true returns only submitted sessions, newest submission first. Without it you get every session, newest first — including visits where someone opened the form but did not submit (their completed_at is null).

Example: Get All Sessions

curl https://formrobin.com/api/v1/forms/123/sessions \
  -H "Authorization: Bearer YOUR_TOKEN"

Example: Get Submitted Sessions Only

curl "https://formrobin.com/api/v1/forms/123/sessions?completed=true" \
  -H "Authorization: Bearer YOUR_TOKEN"

Response

{
  "data": [
    {
      "id": 456,
      "form_id": 123,
      "form_field_responses": [
        { "id": 789, "form_session_id": 456, "form_field_id": 10,
          "form_field_label": "Email Address", "value": "user@example.com" }
      ],
      "completed_at": "2026-01-15T10:35:00.000000Z",
      "utm_source": null, "utm_medium": null, "utm_campaign": null,
      "utm_term": null, "utm_content": null,
      "referrer_url": null,
      "landing_page_url": "https://formrobin.com/f/j50q4kw",
      "device_type": "desktop", "browser_name": "Chrome", "browser_version": "120.0",
      "operating_system": "Windows", "ip_address": "203.0.113.7",
      "created_at": "2026-01-15T10:30:00.000000Z", "updated_at": "2026-01-15T10:35:00.000000Z"
    }
  ],
  "links": { ... },
  "meta": { "current_page": 1, "per_page": 100, "total": 42, ... }
}

Sessions are paginated 100 per page. Field descriptions: FormRobin API: Getting Started.

How do form URLs work?

Every form's public link is https://formrobin.com/f/{code}, where the code is generated from the form's ID (lowercase letters and numbers, for example j50q4kw). The API returns it in url; it cannot be customized.

Best Practices

  • Store form IDs returned by the API for later updates
  • Page through results with ?page=N or the next link
  • Use folders to keep API-created forms together
  • Check status codes and the errors object on 422 responses

What are the limitations?

  • Questions: the API does not create or edit questions; build them in the form editor
  • Publishing: API-created forms start unpublished; publish them in FormRobin
  • One form per request: there are no bulk endpoints
  • No filtering or sorting on the list endpoint
  • Ownership: only forms you have access to

Which error responses can I get?

  • 401 Unauthorized - missing, expired or deleted token: {"message": "Unauthenticated."}
  • 403 Forbidden - the form exists but you have no access to it: {"message": "This action is unauthorized."}
  • 404 Not Found - no form with that ID, or a folder_id that belongs to another account
  • 422 Unprocessable Entity - validation failed; the errors object names each field, for example "name": ["The name field is required."]
  • 429 Too Many Requests - more than 60 requests in a minute

Troubleshooting

"The name field is required."

  • Include name in the JSON body and send Content-Type: application/json.

The folder_id is rejected

  • Use the ID of a folder in your own account, or null for no folder.

The form has no questions, or its link shows "Page Not Found"

403 when deleting or updating a form

  • You can change only forms you have access to. Check the form ID with GET /api/v1/forms.

Still stuck? Contact support at support@formrobin.com with the request method, URL and body (without your token) and the full response.

Frequently Asked Questions

Can I create questions via the API?

No. The API creates the form (name, folder, submit text, notifications); add questions in the form editor.

Can I duplicate a form via the API?

No. Use Duplicate in the form's menu on the Forms page, which also copies its questions.

What happens to responses when I delete a form?

They disappear from your account together with the form, and the form cannot be restored from FormRobin. Export them first.

Can I retrieve submissions via the API?

Yes. GET /api/v1/forms/{id}/sessions?completed=true returns submitted sessions with every answer, source and device details. For a spreadsheet, use Export CSV on the form's Sessions page.