Use YOK_STUDENT when your integration expects a Turkish higher-education student certificate.
This document-specific path is not generic OCR. The current flow verifies authenticity first, then applies the YOK-specific extraction and decision rules.
Request shape
Pass the document type when you create the verification:
{
"document_type": "YOK_STUDENT",
"process_type": "async",
"external_reference_id": "student-12345",
"original_filename": "belge.pdf",
"file_size_bytes": 160585
}
The same signed-upload flow still applies:
- create the verification
- upload the PDF to the signed URL
- call
upload-complete - wait for webhook delivery or fetch the verification result
What is verified
Current product behavior for YOK_STUDENT is authenticity-first:
- the worker extracts QR or barcode material
- the platform verifies the document through its configured authority adapter
- processing short-circuits if the uploaded file does not match the verified authority bytes
- structured extraction is trusted only after the authenticity checks succeed
If the uploaded file does not pass authenticity checks, do not treat the extracted data as a valid student-certificate result.
Structured data fields
The shipped schema version is 1.1.0.
Required fields in the normalized payload:
full_namemother_namefather_namebirth_datenationallityregistered_ateducation_typeeducation_duration_yearstatusis_activeclassprogrambarcode
Optional fields currently returned when available:
university_namefaculty_namedepartment_nameprogram_name
Important compatibility note:
- the current payload key is spelled
nationallityin the shipped schema and JSON payloads - integrations should consume the field exactly as returned today
The extractor also breaks the program path into specific subfields and derives is_active from the status text when the status is recognized.
Expected result behavior
YOK_STUDENT can currently finish as verified when all of these hold:
- document authenticity is verified
- structured data exists and can be decoded
- schema validation passes
- confidence is above the automatic verification threshold
It falls back to review_required when the YOK-specific extraction path is incomplete or unreliable.
Current YOK-specific decision outcomes:
verified_yok_student: authenticity verified and YOK data extracted successfullyyok_student_structured_data_missing: authenticity passed but no structured payload is availableyok_student_payload_invalid: the structured payload exists but cannot be decodedyok_student_schema_invalid: decoded payload failed schema validationyok_student_low_confidence: authenticity passed but extraction confidence is below the automatic verification threshold
General authenticity failures can still occur before those YOK-specific outcomes, for example:
source_verification_failedauthenticity_missing_qrcodeauthenticity_source_missingauthenticity_hash_mismatchauthenticity_lookup_failed
Example normalized payload
{
"full_name": "Jane Customer",
"mother_name": "Ayse",
"father_name": "Mehmet",
"birth_date": "2002-04-18",
"nationallity": "TURK",
"registered_at": "2021-09-20",
"education_type": "Lisans",
"education_duration_year": 4,
"status": "Aktif",
"is_active": true,
"class": "3",
"program": "Muhendislik Fakultesi / Bilgisayar Muhendisligi",
"university_name": "Example University",
"faculty_name": "Muhendislik Fakultesi",
"department_name": "Bilgisayar Muhendisligi",
"program_name": "Bilgisayar Muhendisligi",
"barcode": "YOKOG3REQTMB1Y9WCC"
}
Integration guidance
- Persist both top-level
statusandreason_code. - Treat
verified_yok_studentas the stable machine-readable success path for this document type. - Keep
review_requiredflows visible to operators instead of collapsing them into generic failures. - Do not assume
is_activecan be trusted if you ignore the returnedstatustext. - Use separate sandbox and production apps, keys, and webhook URLs.