TRCN Teacher Verification API
A partner integration guide for approved examination bodies and government agencies that need to confirm TRCN teacher standing before examiner, invigilator, supervisor, or posting workflows.
Is this person a TRCN-verified teacher?
- Have they passed PQE?
- Do they hold a TRCN certificate?
- Do they hold a professional licence?
- Is the licence valid, expired, due for renewal, suspended, or revoked?
Quickstart
Use the primary endpoint for single-record checks. Send the least sensitive identifier that can uniquely match the teacher, preferably TRCN registration number or Teacher ID.
curl https://api.trcn.gov.ng/v1/inter-agency/teacher-verification \
-H "Authorization: Bearer $TRCN_PARTNER_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 9d6d3c30-8bd1-4d62-9ec6-17c03d44f3a7" \
-d '{
"identifier": {
"regNo": "TRCN/AB/001234"
},
"purpose": "WAEC_EXAMINER_REGISTRATION",
"context": {
"partnerReference": "WAEC-EXAMINER-2026-000481",
"examBody": "WAEC",
"examYear": 2026,
"role": "Examiner",
"subjectCode": "ENG"
}
}'{
"verificationId": "ver_8f4b7d6c9a1e4f23b1c0a992",
"verifiedAt": "2026-05-04T18:34:11.229Z",
"issuer": "https://api.trcn.gov.ng",
"audience": "waec",
"result": {
"found": true,
"source": "new_system",
"verifiedByTrcn": true,
"eligibleForExamDuty": true,
"professionalStanding": "ACTIVE",
"teacher": {
"name": "Okafor Adaeze Ngozi",
"tId": 70123,
"state": "Lagos",
"category": "A"
},
"pqe": {
"status": "PASSED",
"examNumber": "PQE-001",
"gradeLabel": "Passed",
"source": "result"
},
"certificate": {
"status": "VERIFIED",
"regNo": "TRCN/AB/001234",
"issueDate": "2026-01-10"
},
"license": {
"status": "VALID",
"expiryDate": "2029-01-10",
"daysRemaining": 981,
"validityYears": 3,
"renewalState": "CURRENT"
},
"disciplinary": {
"status": "CLEAR",
"source": "credential_records"
},
"reasons": ["PQE_PASSED", "CERTIFICATE_VERIFIED", "LICENSE_VALID"]
},
"signature": "eyJhbGciOiJSUzI1NiIsImtpZCI6InRyY24taW50ZXJhZ2VuY3ktdjEifQ...",
"signatureKid": "trcn-interagency-v1"
}Authentication and signed responses
Partner access is not self-service because the API can disclose regulated professional standing. TRCN issues credentials after partner approval, scope assignment, and UAT.
import { jwtVerify, createRemoteJWKSet } from "jose";
const jwks = createRemoteJWKSet(
new URL("https://api.trcn.gov.ng/v1/inter-agency/.well-known/jwks.json")
);
const response = await fetch("https://api.trcn.gov.ng/v1/inter-agency/teacher-verification", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.TRCN_PARTNER_API_KEY}`,
"Content-Type": "application/json",
"Idempotency-Key": crypto.randomUUID()
},
body: JSON.stringify({
identifier: { nin: "12345678901" },
purpose: "NECO_SUPERVISOR_RECRUITMENT",
context: {
partnerReference: "NECO-SUP-2026-01442",
examBody: "NECO",
examYear: 2026,
role: "Supervisor"
}
})
});
const envelope = await response.json();
await jwtVerify(envelope.signature, jwks, {
issuer: "https://api.trcn.gov.ng",
audience: "neco"
});
if (envelope.result.eligibleForExamDuty) {
// Continue examiner or supervisor workflow.
}Endpoints and partner purposes
The API is versioned in the URL and returns JSON. Batch calls accept up to 100 records and should include idempotency keys for safe retry.
| Method | Path | Use |
|---|---|---|
| POST | /v1/inter-agency/teacher-verification | Primary teacher standing check |
| POST | /v1/inter-agency/eligibility-check | Compatibility alias for older integrations |
| POST | /v1/inter-agency/batch | Batch verification, maximum 100 records |
| GET | /v1/inter-agency/.well-known/jwks.json | Public keys for response verification |
| GET | /v1/inter-agency/health | Public service health check |
Supported WAEC and NECO purposes
Professional standing statuses
Partners should drive their workflow from eligibleForExamDuty and keep professionalStanding for audit, reporting, and manual review queues.
| Standing | Eligible | Meaning |
|---|---|---|
| ACTIVE | Yes | PQE passed, certificate verified, licence valid. |
| RENEWAL_DUE | Yes | Licence is still valid but close to renewal. |
| EXPIRED | No | TRCN licence has expired. |
| CERTIFIED_UNLICENSED | No | Certificate exists but no valid licence was found. |
| PQE_FAILED | No | Candidate did not pass PQE. |
| PQE_NOT_FOUND | No | No digital PQE pass or trusted legacy substitute was found. |
| REVOKED | No | Credential record indicates revocation. |
| SUSPENDED | No | Credential record indicates suspension. |
| NOT_FOUND | No | No matching TRCN teacher record was found. |
Production checklist
These are the integration rules TRCN expects partner teams to meet before production traffic is enabled.
Retry safely
Use Idempotency-Key on POST requests and exponential backoff on 429 or transient 5xx responses.
Protect teacher data
Never expose API keys in browser code. Store only the minimum response fields needed for the exam workflow.
Use typed integration code
Validate request and response schemas in the partner application, and reject unknown professional standing values.
Keep an audit trail
Persist verificationId, partnerReference, purpose, timestamp, and professionalStanding for later review.
Need access?
Contact TRCN with your organisation name, technical contact, intended use case, expected request volume, and preferred identifiers. Credentials are issued only to approved partners.
For public teacher checks without partner credentials, use Search the Register.