OpenAPI Specification
openapi: 3.0.3
info:
title: HeyForm Auth API
description: HeyForm is an open-source conversational form builder providing REST and GraphQL endpoints for managing forms, submissions, workspaces, integrations, and webhooks. The primary data API uses GraphQL; this document covers the publicly accessible REST endpoints discovered in the open-source codebase.
version: 1.0.0
contact:
name: HeyForm Support
url: https://docs.heyform.net
license:
name: AGPL-3.0
url: https://github.com/heyform/heyform/blob/main/LICENSE
servers:
- url: https://api.heyform.net
description: HeyForm Cloud API
- url: http://localhost:8000
description: Self-hosted HeyForm instance (default port)
tags:
- name: Auth
description: Authentication and social login (OAuth)
paths:
/connect/{kind}:
get:
operationId: socialLoginInitiate
summary: Initiate social login (OAuth)
description: Redirects the user to the OAuth provider's authorization URL. Supported providers include Google, GitHub, and Apple.
tags:
- Auth
parameters:
- name: kind
in: path
required: true
description: The OAuth provider identifier (e.g. google, github, apple).
schema:
type: string
enum:
- google
- github
- apple
example: google
- name: state
in: query
required: true
description: Browser ID / CSRF state token generated by the client to correlate the callback.
schema:
type: string
example: DMbcJqLJ
- name: redirect_uri
in: query
required: false
description: Optional URI to redirect to after successful login.
schema:
type: string
format: uri
responses:
'302':
description: Redirect to OAuth provider authorization URL
headers:
Location:
schema:
type: string
format: uri
'200':
description: Error page rendered in HTML when the state is missing or the provider is unsupported.
content:
text/html:
schema:
type: string
/connect/{kind}/callback:
get:
operationId: socialLoginCallbackGet
summary: Handle OAuth callback (GET)
description: Receives the OAuth authorization code from the provider (GET variant, used by most providers). Validates state, exchanges code for tokens, and logs the user in.
tags:
- Auth
parameters:
- name: kind
in: path
required: true
description: The OAuth provider identifier.
schema:
type: string
enum:
- google
- github
- apple
example: google
- name: code
in: query
required: false
description: Authorization code returned by the OAuth provider.
schema:
type: string
- name: state
in: query
required: true
description: CSRF state token to verify.
schema:
type: string
responses:
'302':
description: Redirect to dashboard after successful login
headers:
Location:
schema:
type: string
'200':
description: Error page on failure
content:
text/html:
schema:
type: string
post:
operationId: socialLoginCallbackPost
summary: Handle OAuth callback (POST)
description: Receives the OAuth authorization code from the provider via POST (used by Sign in with Apple which posts directly to the backend).
tags:
- Auth
parameters:
- name: kind
in: path
required: true
description: The OAuth provider identifier.
schema:
type: string
enum:
- apple
example: apple
requestBody:
required: true
content:
application/x-www-form-urlencoded:
schema:
type: object
properties:
code:
type: string
description: Authorization code from Apple.
state:
type: string
description: CSRF state token.
responses:
'302':
description: Redirect to dashboard after successful login
'200':
description: Error page on failure
content:
text/html:
schema:
type: string
components:
securitySchemes:
cookieAuth:
type: apiKey
in: cookie
name: heyform_sid
description: Session cookie set by the login mutation or OAuth callback. All authenticated GraphQL mutations and the CSV export endpoint require this cookie.
externalDocs:
description: HeyForm Documentation
url: https://docs.heyform.net