OpenAPI Specification
openapi: 3.0.3
info:
title: HeyForm Auth GraphQL 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: GraphQL
description: Primary data API (GraphQL over HTTP)
paths:
/graphql:
post:
operationId: graphqlEndpoint
summary: GraphQL API endpoint
description: 'The primary HeyForm data API. All form management operations (create, update, delete, publish), user operations (login, sign-up, password reset), submission retrieval, project management, team management, integration configuration, and the public form open/submit flow are handled through this GraphQL endpoint. Authentication uses HTTP-only cookies set during login. Key mutations and queries include: login, signUp, createForm, updateFormSchemas, publishForm, deleteForm, openForm, completeSubmission, submissions, deleteSubmission, createProject, createTeam, updateIntegrationSettings.'
tags:
- GraphQL
security:
- cookieAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/GraphQLRequest'
examples:
openForm:
summary: Open a published form (public)
value:
query: "query openForm($input: OpenFormInput!) {\n openForm(input: $input)\n}\n"
variables:
input:
formId: abc123xyz
completeSubmission:
summary: Submit answers to a form (public)
value:
query: "mutation completeSubmission($input: CompleteSubmissionInput!) {\n completeSubmission(input: $input) {\n clientSecret\n }\n}\n"
variables:
input:
formId: abc123xyz
openToken: eyJ...
answers:
- id: field1
value: Jane Doe
login:
summary: Authenticate with email and password
value:
query: "query login($input: LoginInput!) {\n login(input: $input)\n}\n"
variables:
input:
email: user@example.com
password: secret
createForm:
summary: Create a new form
value:
query: "mutation createForm($input: CreateFormInput!) {\n createForm(input: $input)\n}\n"
variables:
input:
projectId: proj123
name: Customer Feedback
responses:
'200':
description: GraphQL response (errors are returned inline per the GraphQL spec)
content:
application/json:
schema:
$ref: '#/components/schemas/GraphQLResponse'
components:
schemas:
GraphQLResponse:
type: object
properties:
data:
type: object
description: The data returned by the GraphQL operation.
additionalProperties: true
errors:
type: array
description: Array of GraphQL errors, if any.
items:
type: object
properties:
message:
type: string
locations:
type: array
items:
type: object
properties:
line:
type: integer
column:
type: integer
path:
type: array
items: {}
extensions:
type: object
additionalProperties: true
GraphQLRequest:
type: object
required:
- query
properties:
query:
type: string
description: GraphQL query or mutation document.
variables:
type: object
description: Variable values for the query.
additionalProperties: true
operationName:
type: string
description: Name of the operation to execute (when the document contains multiple).
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