Skip to main content
OSForms uses email and password with a 6-digit email code for verification. Logging in issues a JWT in an httpOnly cookie (ff_token, valid for 7 days). Dashboard endpoints also accept the same JWT as Authorization: Bearer <token>.
For server-to-server access to submissions, create an API key instead of using a login session.

Sign up

Creates the account and emails a 6-digit code. The account can’t log in until the code is verified.

Verify email

On success, sets the ff_token cookie and returns the user:
Codes expire after 30 minutes. A wrong or expired code returns 400.

Resend verification code

Sends a new code. You can request one every 60 seconds. Sooner returns 429 with retryAfter (seconds) in the body.

Log in

Sets the ff_token cookie and returns the user:
If the email isn’t verified yet, no cookie is set and the response is { "requiresVerification": true, "email": "..." } (status 200). Verify with the code to finish logging in.

Log out

Clears the ff_token cookie. No body required.

Get current user

Returns 401 if not logged in. For this month’s submission usage, see usage in GET /api/v1/forms.

Google OAuth (Google Sheets)

Google OAuth only connects Google Sheets to a form. It isn’t a way to log in to OSForms.
Requires your login session, and you must own the form. Redirects to Google’s consent screen. Google then redirects to /api/auth/google/callback, which creates a spreadsheet for the form and saves the encrypted OAuth token for the Google Sheets integration. The connection has to be finished within 10 minutes, in the same browser session that started it.