Scout SelectDeveloper Documentation
Certifications

Invites

Create a certification invite and get back the challenge link.

Requires the CERTIFICATION_INVITE_CREATE scope.

mutation CreateCertificationInvite($input: DeveloperCreateCertificationInviteInput!) {
  developerCreateCertificationInvite(input: $input) {
    inviteId
    status
    challengeUrl
    expiresAt
    emailSent
  }
}
Variables
{
  "input": {
    "quizId": "react-intermediate-id",
    "candidate": { "name": "Jane Doe", "email": "jane@example.com" },
    "sendInviteEmail": true,
    "externalReference": "seemesol-user-12345",
    "callbackUrl": "https://api.seemesol.com/webhooks/scout-select"
  }
}

Field notes

  • quizId comes from the catalog response's levels[].quizId. The quiz must currently be READY (enabled) or the request fails with BAD_USER_INPUT.
  • candidate.email must be a syntactically valid email address.
  • sendInviteEmail defaults to true. Set it to false if you'd rather deliver challengeUrl yourself and skip Scout Select's invite email.
  • callbackUrl is optional and must be https:// - see Webhooks. It can only be set when authenticating with an API key (not an admin session).
  • The invite link expires in 14 days.
  • A candidate can only have one in-progress attempt per quiz at a time, and can't be re-invited to a quiz they already hold a currently-valid certification for - both cases return BAD_USER_INPUT.

Example request

curl https://select.getscout.ai/api/developer/graphql \
  -H "x-api-key: sk_scout_..." \
  -H "content-type: application/json" \
  -d '{
    "query": "mutation CreateCertificationInvite($input: DeveloperCreateCertificationInviteInput!) { developerCreateCertificationInvite(input: $input) { inviteId status challengeUrl expiresAt emailSent } }",
    "variables": { "input": { "quizId": "react-intermediate-id", "candidate": { "name": "Jane Doe", "email": "jane@example.com" }, "sendInviteEmail": true } }
  }'

Example response

{
  "data": {
    "developerCreateCertificationInvite": {
      "inviteId": "clv2x...",
      "status": "PENDING",
      "challengeUrl": "https://select.getscout.ai/i/9f3a1c...",
      "expiresAt": "2026-08-06T12:00:00.000Z",
      "emailSent": true
    }
  }
}

On this page