Skip to content

Enroll Student to Course

The enrollStudentToCourse mutation allows you to enroll a student to a specified course, or update existing enrollment details.

Input Parameters

FieldTypeRequiredDescription
userIdStringNo*ID of the student (User) to enroll
emailStringNo*Email of the student. If user doesn’t exist, a placeholder user will be created
nameStringNoName of the student. Required when creating a new user
courseIdString!YesID of the course to enroll the student into
planIdStringNoID of the curriculum plan to apply to this enrollment. If not provided, will use the course’s default plan
endedAtIntNoOptional expiration date for the enrollment (Unix Timestamp)

*Note: Either userId or email must be provided.

Return Type

type AdminEnrollStudentToCoursePayload {
# The created or updated enrollment
enrollment: StudentCourseShip
}

StudentCourseShip Object

FieldTypeDescription
idString!ID of the enrollment
completionRateFloatThe completion rate of the enrolled course which student achieved
courseAdminCourse!Information of the enrolled course
userAdminUser!User information of the enrolled course
createdAtInt!Created date of the enrollment (Unix Timestamp)
updatedAtInt!Last updated date of the enrollment (Unix Timestamp)
endedAtIntExpiration date for the enrollment (Unix Timestamp)

Example

Enroll a new student (name required) to the course

mutation EnrollNewStudent {
enrollStudentToCourse(
courseId: "ab6ee332-614d-475d-93b5-abc5ebb1fc84"
name: "student_new" # Required when creating a new user
) {
enrollment {
id
completionRate
createdAt
updatedAt
endedAt
course {
id
name
slug
}
user {
id
name
email
}
}
}
}

Enroll existing student to the course

mutation EnrollExistingStudent {
enrollStudentToCourse(
courseId: "ab6ee332-614d-475d-93b5-abc5ebb1fc84"
) {
enrollment {
id
completionRate
createdAt
updatedAt
endedAt
course {
id
name
slug
}
user {
id
name
email
}
}
}
}

Enroll student with specific plan and expiration

mutation EnrollStudentWithPlan {
enrollStudentToCourse(
courseId: "ab6ee332-614d-475d-93b5-abc5ebb1fc84"
planId: "plan_123"
endedAt: 1735689600 # Unix timestamp for expiration
) {
enrollment {
id
completionRate
endedAt
course {
id
name
}
user {
id
name
email
}
}
}
}

Sample Response

{
"data": {
"enrollStudentToCourse": {
"enrollment": {
"id": "619ad939-8591-40ad-9364-cf3825a9bf70",
"completionRate": 0.0,
"createdAt": 1672531200,
"updatedAt": 1672531200,
"endedAt": null,
"course": {
"id": "ab6ee332-614d-475d-93b5-abc5ebb1fc84",
"name": "Introduction to GraphQL",
"slug": "intro-graphql"
},
"user": {
"id": "387b0c87-0f85-44cc-833e-7306c1b5d3e6",
"name": "Student B",
"email": "[email protected]"
}
}
}
}
}

Common Errors

ErrorDescription
Name is required when creating a new userRequired when creating a new user via email
Either user_id or email must be providedAt least one identifier must be provided
Course not foundThe specified course ID does not exist
User not foundThe specified user ID does not exist
Public access courses don't require enrollmentPublic access courses don’t require enrollment
No valid plan found for this courseThe specified planId is invalid for this course
Invalid expiration dateThe endedAt timestamp is invalid or in the past

For more information about the Teachify Admin API, please refer to the API Overview.