How to Get Started with the FormRobin API
The FormRobin REST API lets you manage forms and read submissions from your own code. Create a token under Settings → API and call https://formrobin.com/api/v1.
What Is the FormRobin API?
The FormRobin API is a JSON REST API. With it you can:
- Create, list, update and delete forms
- Read a form's sessions: submitted answers plus source and device details
- Check which account a token belongs to
Plan requirement: the API is available on both plans, Free Plan and Individual Plan.
What is the API base URL?
https://formrobin.com/api/v1/
The login endpoint is https://formrobin.com/api/jwt/login.
How does authentication work?
Every request needs a Bearer token. The simplest way to get one:
- Open the account menu in the top right, click Settings, then API.
- In Personal Access Tokens, click Create New Token, enter a Token Name and click Create Token.
- Copy the token from the yellow banner (it is shown only once) and send it in the
Authorizationheader.

Tokens last one year. The API Authentication Guide covers the login endpoint, OAuth clients and token management.
Quick Start Example
Step 1: Get Your Access Token
Create a Personal Access Token as above, or log in with your email and password:
POST https://formrobin.com/api/jwt/login
Content-Type: application/json
{ "email": "your-email@example.com", "password": "your-password" }
{
"access": "your-token-here",
"token_type": "bearer",
"expires_in": 31536000
}
Step 2: Make an API Request
GET https://formrobin.com/api/v1/forms Authorization: Bearer your-token-here
{
"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"
}
],
"links": { ... },
"meta": { ... }
}
Which endpoints are available?
User Endpoints
GET /api/v1/me- the account the token belongs to
Form Endpoints
| Request | What it does |
|---|---|
GET /api/v1/forms |
List your forms (100 per page, newest first) |
POST /api/v1/forms |
Create a form |
GET /api/v1/forms/{id} |
Get one form |
PUT /api/v1/forms/{id} |
Update a form |
DELETE /api/v1/forms/{id} |
Delete a form |
GET /api/v1/forms/{id}/sessions |
A form's sessions (add ?completed=true for submissions only) |
Details and examples: Creating Forms via API.
Getting Current User Information
GET https://formrobin.com/api/v1/me Authorization: Bearer your-token-here
{
"data": {
"id": 1,
"name": "Jane Doe",
"email": "jane@example.com",
"created_at": "2026-01-01T00:00:00.000000Z",
"updated_at": "2026-01-15T10:30:00.000000Z"
}
}
Use it to check that a token works and which account it belongs to.
Getting Form Submissions
A session is created when someone opens a form and completed when they submit it. To get submissions only, add ?completed=true:
GET https://formrobin.com/api/v1/forms/123/sessions?completed=true Authorization: Bearer your-token-here
{
"data": [
{
"id": 456,
"form_id": 123,
"form_field_responses": [
{ "id": 789, "form_session_id": 456, "form_field_id": 10,
"form_field_label": "Email", "value": "user@example.com" }
],
"completed_at": "2026-01-15T12:34:56.000000Z",
"utm_source": "google", "utm_medium": "cpc", "utm_campaign": null,
"utm_term": null, "utm_content": null,
"referrer_url": "https://example.com/blog",
"landing_page_url": "https://formrobin.com/f/j50q4kw?utm_source=google&utm_medium=cpc",
"device_type": "desktop", "browser_name": "Chrome", "browser_version": "120.0",
"operating_system": "Windows", "ip_address": "203.0.113.7",
"created_at": "2026-01-15T12:30:02.000000Z", "updated_at": "2026-01-15T12:34:56.000000Z"
}
],
"links": { ... },
"meta": { ... }
}
Form Session Field Descriptions
- id: session ID (integer)
- form_id: the form's ID
- form_field_responses: one object per answered question — form_field_id, form_field_label (the question label as entered in the editor, which can include formatting tags) and value (a string, or an array for questions with several selected options)
- completed_at: when the form was submitted (null for a visit without a submission)
- utm_source, utm_medium, utm_campaign, utm_term, utm_content: UTM parameters from the URL the form was opened with
- referrer_url: the page the visitor came from, when their browser sent it
- landing_page_url: the full URL the form was loaded from
- device_type, browser_name, browser_version, operating_system: the visitor's device and browser
- ip_address: the visitor's IP address
- created_at: when the form was opened; updated_at: last change
Common Request Headers
Authorization: Bearer your-token- required on every endpoint except the login endpointContent-Type: application/json- for POST and PUT bodiesAccept: application/json- optional; the API answers in JSON
Response Format
Successful Response
Single objects and lists are wrapped in "data". Lists also include "links" (first, last, prev, next) and "meta" (current_page, per_page, total and more).
Error Response
{
"message": "The name field is required.",
"errors": {
"name": ["The name field is required."]
}
}
HTTP Status Codes
- 200 OK - request successful
- 201 Created - form created
- 204 No Content - form deleted
- 401 Unauthorized - missing, expired or deleted token (
{"message": "Unauthenticated."}) - 403 Forbidden - you do not have access to that form
- 404 Not Found - no form with that ID
- 422 Unprocessable Entity - validation errors (see
errors) - 429 Too Many Requests - rate limit reached
How does pagination work?
List endpoints return 100 items per page. Add ?page=2 (or follow links.next) for the next page; meta.total gives the number of items.
Is there a rate limit?
The API allows 60 requests per minute per user (per IP address for requests without a valid token). Over the limit you receive HTTP 429; wait for the next minute and retry with exponential backoff.
API Troubleshooting
401 Unauthorized
- Send the header as
Authorization: Bearer your-token. - Tokens expire after one year and stop working when deleted. Create a new one under Settings → API (see API Authentication Guide).
422 validation error
- Read the
errorsobject: it names each field that failed and why.
Sessions have no answers
- Without
?completed=truethe list includes visits where nobody submitted the form. Add?completed=trueto get submissions only (see Creating Forms via API).
Still stuck? Contact support at support@formrobin.com with the endpoint, the status code and the response body (never your token).
FAQ
Is the API available on the Free Plan?
Yes. The API is available on both plans, Free Plan and Individual Plan.
How long do tokens last?
One year. After that, create a new Personal Access Token or log in again.
Can I call the API from a browser?
Keep API calls on your server. A token in browser code is visible to anyone who opens the page, and it gives full access to your forms.
What is the difference between the API and webhooks?
With the API you pull data by making requests. Webhooks push each new submission to your URL as it happens; they need the Individual Plan (see Setting Up Webhooks).