Skip to content

Forms Query

Note: The Teachify Admin API is currently under development and not yet available for public use. This documentation is provided for preview purposes only.

Endpoint and authentication. All admin queries are sent to POST /admin/graphqlnot /graphql, which is the public school API. Authenticate with an sk_live_… API key in the X-Teachify-API-Key header. See the API Overview for details.

The Forms API lets you list the forms in your school and read their fields. Its primary use is to look up a form’s id so you can bind it to a consulting service as a rating form — pass that id as ratingFormId to the consultingServiceUpdate mutation.

Only general forms are returned. Auto-generated profile forms (student and lecturer profile forms) are excluded, as they are not intended to be used as rating forms.

The query requires the forms:read scope.

Returns a paginated list of general forms for the authenticated school, ordered by creation time (newest first) — createdAt DESC, id DESC. The id tiebreak keeps paging stable when two forms share a creation timestamp.

Parameters:

ParameterTypeDescription
filterAdminFormFilterFilter criteria (see Filtering)
pageIntPage number for pagination
perPageIntNumber of items per page (default: 20, max: 50)
limitIntAlternative to perPage

Returns:

  • A page object with:
    • nodes: Array of Form objects
    • currentPage: Current page number
    • hasNextPage: Whether there are more pages
    • hasPreviousPage: Whether there are previous pages
    • nodesCount: Total number of items matching the query
    • totalPages: Total number of pages

Example:

query {
forms(
page: 1,
perPage: 10
) {
nodes {
id
name
description
slug
fields {
id
label
fieldType
}
}
currentPage
hasNextPage
hasPreviousPage
nodesCount
totalPages
}
}

The Form object contains the following fields:

FieldTypeDescription
idString!Unique identifier. Pass this as ratingFormId when updating a consulting service
nameStringDisplay name of the form
descriptionStringDescription of the form
slugStringURL-friendly identifier. Often null — prefer id for lookups
fields[FormField!]The form’s fields. These define what an integrator must submit when rating a meeting bound to this form

The forms query accepts a filter parameter of type AdminFormFilter.

Filter FieldTypeDescription
keywordStringCase-insensitive substring match against name or slug

Search forms by keyword:

query {
forms(
filter: {
keyword: "rating"
}
) {
nodes {
id
name
}
nodesCount
}
}