---
title: "Read Badge Assertion"
method: GET
path: "/v1/badge_assertion/{badge_assertion_id}"
tags: ["Badge Assertion"]
---

# Read Badge Assertion

`GET /v1/badge_assertion/{badge_assertion_id}`

## Request

- Base URL: `https://api.navigatr.app` (the document declares no server; this is the origin it was published from)
- URL: `https://api.navigatr.app/v1/badge_assertion/{badge_assertion_id}`
- Auth: OAuth 2
  - Password
  - Token URL: `/v1/token`
- TypeScript: <https://skmtc.dev/navigatr/apis/navigatr-api/docs/v1/badge_assertion/:badge_assertion_id/get.ts> (a function with typed inputs; its response is checked against the schema)

Get a single badge assertion by ID.

This is the publicly verifiable badge page surface, so it is optional-auth.
Recipient PII (plaintext email and platform role) is returned only to the
recipient, the issuing org's admins, and platform admins (the full
Badge_Assertion); every other caller — anonymous or otherwise — receives the
redacted Badge_Assertion_Public. See P-Nav-APISA-202606-010 / -014.

## Path parameters

- `badge_assertion_id` integer, required

## Headers

- `X-Access-Token` string, nullable

## Response `200`

Successful Response

- union
  - BadgeAssertion
    - `recipient_email` string, nullable
    - `recipient_firstname` string, nullable
    - `recipient_lastname` string, nullable
    - `recipient_organisation` string, nullable
    - `recipient_id` integer, nullable
    - `end_date` string, date-time, nullable
    - `image_url` string, nullable
    - `image_url_2x` string, nullable
    - `image_url_original` string, nullable
    - `narrative` string, nullable
    - `source` 'Internal' | 'Credly' | 'Open_University' | 'Imported'
    - `external_id` string, nullable
    - `external_url` string, nullable
    - `badge_issuer_id` integer, nullable
    - `provider_id` integer, nullable
    - `evidence` BadgeAssertionEvidence[], nullable, required
      - `name` string, nullable
      - `description` string, nullable
      - `type` 'UrlEvidence' | 'PlainTextEvidence' | 'IdEvidence' | 'KeyValueGroupEvidence'
      - `narrative` string, nullable
      - `genre` string, nullable
      - `audience` string, nullable
      - `value` string, nullable
      - `external_id` string, nullable
      - `id` integer, required
      - `badge_assertion_id` integer
      - `values` BadgeAssertionEvidenceValues[], nullable, required
        - `key` string, nullable
        - `value` string, nullable
        - `url` string, nullable
    - `issue_date` string, date-time, nullable
    - `time_verified` string, date-time, nullable
    - `id` integer
    - `status` 'Pending' | 'Claimed' | 'Expired' | 'Revoked' | 'Deleted' | 'Failed' | 'Complained'
    - `issuing_method` 'Email' | 'Activity' | 'Autobadge' | 'Bulk' | 'API' | 'Pushed' | 'Migrated' | 'QR' | 'Library_Card' | 'Riddle' | 'Typeform' | 'Zoho_Forms' | 'Tally' | 'Imported' | 'Pathway'
    - `seo_keywords` string[], nullable
    - `seo_title` string, nullable
    - `seo_description` string, nullable
    - `grade` 'Pass' | 'Merit' | 'Distinction' | 'Distinction*'
    - `credits_earned` number, nullable
    - `recipient` UserDetailPublic
      - `id` integer
      - `firstname` string, nullable, required
      - `lastname` string, nullable, required
      - `avatar_url` string, nullable
      - `avatar_url_2x` string, nullable
      - `avatar_url_original` string, nullable
      - `interests` string[], nullable
      - `noindex_enabled` boolean, nullable
      - `visibility` 'Public' | 'Private': Who may see a user's human-readable public pages (profile, badge and pathway assertion). Deliberately NOT a User_Status value: a Private user is still Active, they can sign in, earn badges and be issued to exactly as before. Also independent of `noindex_enabled`, which only asks search engines not to index a page that stays publicly reachable. Enforced in crud_user_detail.can_read, so every existing "view this user" gate inherits it.
      - `time_created` string, date-time
      - `time_updated` string, date-time, nullable
      - `seo_keywords` string[], nullable
      - `seo_title` string, nullable
      - `seo_description` string, nullable
      - `social_handle_linkedin` string, nullable
      - `social_handle_twitter` string, nullable
      - `social_handle_facebook` string, nullable
      - `social_handle_instagram` string, nullable
    - `issuer` BadgeIssuer
      - `name` string, nullable
      - `type` 'Employer' | 'Learning_Provider' | 'Other'
      - `description` string, nullable
      - `address` string, nullable
      - `source` 'Internal' | 'Credly' | 'Open_University' | 'Imported'
      - `source_credly_id` integer, nullable
      - `external_id` string, nullable
      - `external_url` string, nullable
      - `email` string, nullable
      - `image_url` string, nullable
      - `banner_url` string, nullable
      - `image_url_2x` string, nullable
      - `banner_url_2x` string, nullable
      - `id` integer
      - `status` 'Active' | 'Suspended' | 'Deleted'
      - `created_by_id` integer, nullable
      - `updated_by_id` integer, nullable
      - `time_created` string, date-time
      - `time_updated` string, date-time, nullable
    - `provider` ProviderPublic
      - `id` integer
      - `status` 'Active' | 'Suspended' | 'Deleted'
      - `type` 'Learning_Provider' | 'Training_Provider' | 'Awarding_Body' | 'Employer' | 'Local_Authority' | 'University' | 'College' | 'Charity' | 'Department' | 'Project' | 'Other'
      - `name` string, nullable
      - `short_name` string, nullable
      - `description` string, nullable
      - `email` string, email, nullable
      - `external_url` string, nullable
      - `is_verified` boolean, nullable
      - `verification_text` string, nullable
      - `verification_url` string, nullable
      - `is_demo` boolean, nullable
      - `open_access` boolean
      - `enable_analytics` boolean, nullable
      - `community_id` integer, nullable
      - `community` CommunityPublic, required
        - `id` integer
        - `status` 'Active' | 'Suspended' | 'Deleted'
        - `type` 'City' | 'Region' | 'Local_Authority' | 'Membership_Organisation' | 'Awarding_Body' | 'Partnership' | 'Corporate' | 'Association' | 'University' | 'College' | 'Charity' | 'Other'
        - `name` string, nullable
        - `short_name` string, nullable
        - `description` string, nullable
        - `external_url` string, nullable
        - `address` string, nullable
        - `latitude` number, nullable
        - `longitude` number, nullable
        - `is_verified` boolean, nullable
        - `verification_text` string, nullable
        - `verification_url` string, nullable
        - `is_demo` boolean, nullable
        - `colour` string, nullable
        - `spydus_library_url` string, nullable
        - `referral_code` string, nullable
        - `image_url` string, nullable
        - `banner_url` string, nullable
        - `image_url_2x` string, nullable
        - `banner_url_2x` string, nullable
        - `image_url_original` string, nullable
        - `banner_url_original` string, nullable
        - `linkedin_organisation_id` integer, nullable
        - `social_handle_linkedin` string, nullable
        - `social_handle_twitter` string, nullable
        - `social_handle_facebook` string, nullable
        - `social_handle_instagram` string, nullable
        - `seo_title` string, nullable
        - `seo_description` string, nullable
        - `seo_keywords` string[], nullable
        - `url` string, nullable
      - `latitude` number, nullable
      - `longitude` number, nullable
      - `image_url` string, nullable
      - `banner_url` string, nullable
      - `image_url_2x` string, nullable
      - `banner_url_2x` string, nullable
      - `image_url_original` string, nullable
      - `banner_url_original` string, nullable
      - `brand_colours` string[], nullable
      - `qa_community_id` integer, nullable
      - `linkedin_organisation_id` integer, nullable
      - `social_handle_linkedin` string, nullable
      - `social_handle_twitter` string, nullable
      - `social_handle_facebook` string, nullable
      - `social_handle_instagram` string, nullable
      - `seo_title` string, nullable
      - `seo_description` string, nullable
      - `seo_keywords` string[], nullable
      - `url` string, nullable
    - `badge` Badge
      - `name` string, nullable
      - `design_standard` 'Generic' | 'Navigatr'
      - `type` 'Experience' | 'Learning' | 'Validation' | 'Certification' | 'Attendance' | 'Work_Experience' | 'Volunteering' | 'Job' | 'Apprenticeship' | 'Course' | 'Internship' | 'Workshop' | 'Campaigning' | 'Activism' | 'Other' | 'Informal_Learning' | 'Training' | 'Certified' | 'Qualification' | 'Membership'
      - `language` 'Arabic_Modern_Standard' | 'Bengali' | 'Bulgarian' | 'Chinese_Cantonese' | 'Chinese_Mandarin' | 'Chinese_Simplified' | 'Chinese_Traditional' | 'Croatian' | 'Czech' | 'Dutch' | 'English' | 'French' | 'German' | 'Greek' | 'Hungarian' | 'Irish_Gaeilge' | 'Italian' | 'Kurdish_Kurmanji' | 'Kurdish_Sorani' | 'Latvian' | 'Lithuanian' | 'Pashto' | 'Persian' | 'Polish' | 'Portuguese' | 'Punjabi' | 'Romanian' | 'Scottish_Gaelic_Gaidhlig' | 'Slovak' | 'Somali' | 'Spanish' | 'Tigrinya' | 'Turkish' | 'Ukrainian' | 'Urdu' | 'Welsh_Cymraeg'
      - `provider_ids` integer[], nullable
      - `community_ids` integer[], nullable
      - `recipient_type` 'User' | 'Organisation'
      - `description` string, nullable
      - `issuer_id` integer, nullable
      - `image_url` string, nullable
      - `image_url_2x` string, nullable
      - `image_url_original` string, nullable
      - `design_parameters` unknown
      - `source` 'Internal' | 'Credly' | 'Open_University' | 'Imported'
      - `earn_url` string, nullable
      - `external_url` string, nullable
      - `information_url` string, nullable
      - `embed` string, nullable
      - `external_id` string, nullable
      - `latitude` number, nullable
      - `longitude` number, nullable
      - `city` string, nullable
      - `country` string, nullable
      - `config` unknown
      - `address` string, nullable
      - `available_to_all` boolean, nullable
      - `availability` string, nullable
      - `end_date` string, date-time, nullable
      - `cost` 'Free' | 'Paid' | 'Other'
      - `level` 'Foundational' | 'Intermediate' | 'Advanced' | 'Other' | 'Explore' | 'Deepen' | 'Apply' | 'Teach' | 'Lead'
      - `time_to_earn` 'Hours' | 'Days' | 'Weeks' | 'Months' | 'Years' | 'Other'
      - `participation_type` 'Online' | 'Hybrid' | 'In_Person'
      - `qa_locked` boolean, nullable
      - `job_titles` string[], nullable
      - `specialized_occupations` string[], nullable
      - `title_names` string[], nullable
      - `is_demo` boolean, nullable
      - `certificates_enabled` boolean
      - `industries` string[], nullable
      - `occupation_groups` string[], nullable
      - `skill_category_names` string[], nullable
      - `edu_levels` string[], nullable
      - `qualification_code` string, nullable
      - `credits_available` number, nullable
      - `credits_unit` string, nullable
      - `qualification_type` 'Award' | 'Certificate' | 'Diploma'
      - `qualification_framework` 'RQF' | 'CQFW' | 'SCQF' | 'EQF' | 'QFEmirates'
      - `qualification_level` string, nullable
      - `grade` 'Pass' | 'Merit' | 'Distinction' | 'Distinction*'
      - `field_of_study_id` integer, nullable
      - `id` integer
      - `status` 'Initialising' | 'Draft' | 'Awaiting_Approval' | 'Published' | 'Deleted' | 'Expired'
      - `created_by` UserDetailPublic
        - `id` integer
        - `firstname` string, nullable, required
        - `lastname` string, nullable, required
        - `avatar_url` string, nullable
        - `avatar_url_2x` string, nullable
        - `avatar_url_original` string, nullable
        - `interests` string[], nullable
        - `noindex_enabled` boolean, nullable
        - `visibility` 'Public' | 'Private': Who may see a user's human-readable public pages (profile, badge and pathway assertion). Deliberately NOT a User_Status value: a Private user is still Active, they can sign in, earn badges and be issued to exactly as before. Also independent of `noindex_enabled`, which only asks search engines not to index a page that stays publicly reachable. Enforced in crud_user_detail.can_read, so every existing "view this user" gate inherits it.
        - `time_created` string, date-time
        - `time_updated` string, date-time, nullable
        - `seo_keywords` string[], nullable
        - `seo_title` string, nullable
        - `seo_description` string, nullable
        - `social_handle_linkedin` string, nullable
        - `social_handle_twitter` string, nullable
        - `social_handle_facebook` string, nullable
        - `social_handle_instagram` string, nullable
      - `submitted_by` UserDetailPublic
        - `id` integer
        - `firstname` string, nullable, required
        - `lastname` string, nullable, required
        - `avatar_url` string, nullable
        - `avatar_url_2x` string, nullable
        - `avatar_url_original` string, nullable
        - `interests` string[], nullable
        - `noindex_enabled` boolean, nullable
        - `visibility` 'Public' | 'Private': Who may see a user's human-readable public pages (profile, badge and pathway assertion). Deliberately NOT a User_Status value: a Private user is still Active, they can sign in, earn badges and be issued to exactly as before. Also independent of `noindex_enabled`, which only asks search engines not to index a page that stays publicly reachable. Enforced in crud_user_detail.can_read, so every existing "view this user" gate inherits it.
        - `time_created` string, date-time
        - `time_updated` string, date-time, nullable
        - `seo_keywords` string[], nullable
        - `seo_title` string, nullable
        - `seo_description` string, nullable
        - `social_handle_linkedin` string, nullable
        - `social_handle_twitter` string, nullable
        - `social_handle_facebook` string, nullable
        - `social_handle_instagram` string, nullable
      - `published_by` UserDetailPublic
        - `id` integer
        - `firstname` string, nullable, required
        - `lastname` string, nullable, required
        - `avatar_url` string, nullable
        - `avatar_url_2x` string, nullable
        - `avatar_url_original` string, nullable
        - `interests` string[], nullable
        - `noindex_enabled` boolean, nullable
        - `visibility` 'Public' | 'Private': Who may see a user's human-readable public pages (profile, badge and pathway assertion). Deliberately NOT a User_Status value: a Private user is still Active, they can sign in, earn badges and be issued to exactly as before. Also independent of `noindex_enabled`, which only asks search engines not to index a page that stays publicly reachable. Enforced in crud_user_detail.can_read, so every existing "view this user" gate inherits it.
        - `time_created` string, date-time
        - `time_updated` string, date-time, nullable
        - `seo_keywords` string[], nullable
        - `seo_title` string, nullable
        - `seo_description` string, nullable
        - `social_handle_linkedin` string, nullable
        - `social_handle_twitter` string, nullable
        - `social_handle_facebook` string, nullable
        - `social_handle_instagram` string, nullable
      - `updated_by` UserDetailPublic
        - `id` integer
        - `firstname` string, nullable, required
        - `lastname` string, nullable, required
        - `avatar_url` string, nullable
        - `avatar_url_2x` string, nullable
        - `avatar_url_original` string, nullable
        - `interests` string[], nullable
        - `noindex_enabled` boolean, nullable
        - `visibility` 'Public' | 'Private': Who may see a user's human-readable public pages (profile, badge and pathway assertion). Deliberately NOT a User_Status value: a Private user is still Active, they can sign in, earn badges and be issued to exactly as before. Also independent of `noindex_enabled`, which only asks search engines not to index a page that stays publicly reachable. Enforced in crud_user_detail.can_read, so every existing "view this user" gate inherits it.
        - `time_created` string, date-time
        - `time_updated` string, date-time, nullable
        - `seo_keywords` string[], nullable
        - `seo_title` string, nullable
        - `seo_description` string, nullable
        - `social_handle_linkedin` string, nullable
        - `social_handle_twitter` string, nullable
        - `social_handle_facebook` string, nullable
        - `social_handle_instagram` string, nullable
      - `issuer` BadgeIssuerPublic
        - `id` integer
        - `name` string, nullable
        - `type` 'Employer' | 'Learning_Provider' | 'Other'
        - `status` 'Active' | 'Suspended' | 'Deleted'
        - `external_url` string, nullable
        - `email` string, nullable
        - `image_url` string, nullable
        - `banner_url` string, nullable
        - `image_url_2x` string, nullable
        - `banner_url_2x` string, nullable
      - `ranking` integer, nullable
      - `time_created` string, date-time
      - `time_updated` string, date-time, nullable
      - `time_submitted` string, date-time, nullable
      - `time_published` string, date-time, nullable
      - `quality_assured_at` string, date-time, nullable
      - `time_issued` string, date-time, nullable
      - `postal_address` Address
        - `full_address` string, nullable
        - `name` string, nullable
        - `number` string, nullable
        - `street` string, nullable
        - `postcode` string, nullable
        - `locality` string, nullable
        - `city` string, nullable
        - `district` string, nullable
        - `region` string, nullable
        - `country` string, nullable
      - `created_by_id` integer, nullable
      - `submitted_by_id` integer, nullable
      - `published_by_id` integer, nullable
      - `updated_by_id` integer, nullable
      - `criteria` BadgeCriteria[], nullable
        - `external_id` string, nullable
        - `description` string, nullable
        - `type` 'Application' | 'Assessment' | 'Award' | 'Badge' | 'Course' | 'Credential' | 'Education_Experience' | 'Leadership' | 'Member' | 'Participant' | 'Pathway' | 'Payment' | 'Portfolio' | 'Presenter' | 'Project' | 'Professional_Experience' | 'Schedule_Registration' | 'Volunteer' | 'Other'
        - `external_url` string, nullable
        - `badge_id` integer, nullable
        - `id` integer, nullable
      - `tags` BadgeTag[], nullable
        - `name` string, nullable
        - `external_id` string, nullable
        - `type` string, nullable
        - `source` string, nullable
      - `alignments` BadgeAlignment[], nullable
        - `external_id` string, nullable
        - `name` string, nullable
        - `description` string, nullable
        - `url` string, nullable
        - `framework` string, nullable
        - `code` string, nullable
        - `id` integer, nullable
        - `badge_id` integer, nullable
      - `endorsements` BadgeEndorsement[], nullable
        - `external_id` string, nullable
        - `name` string, nullable
        - `description` string, nullable
        - `url` string, nullable
        - `image_url` string, nullable
        - `image_url_2x` string, nullable
        - `image_url_original` string, nullable
        - `id` integer, nullable
        - `badge_id` integer, nullable
      - `collections` CollectionLight[], nullable
        - `id` integer, required
        - `name` string, nullable
        - `badge_issuer_id` integer, nullable
      - `providers` ProviderLight[], nullable
        - `id` integer, required
        - `status` 'Active' | 'Suspended' | 'Deleted'
        - `type` 'Learning_Provider' | 'Training_Provider' | 'Awarding_Body' | 'Employer' | 'Local_Authority' | 'University' | 'College' | 'Charity' | 'Department' | 'Project' | 'Other'
        - `name` string, nullable
        - `short_name` string, nullable
        - `external_url` string, nullable
        - `is_verified` boolean, nullable
        - `verification_text` string, nullable
        - `verification_url` string, nullable
        - `is_demo` boolean, nullable
        - `open_access` boolean
        - `community_id` integer, nullable
        - `community` CommunityLight, required
          - `id` integer, required
          - `status` 'Active' | 'Suspended' | 'Deleted'
          - `type` 'City' | 'Region' | 'Local_Authority' | 'Membership_Organisation' | 'Awarding_Body' | 'Partnership' | 'Corporate' | 'Association' | 'University' | 'College' | 'Charity' | 'Other'
          - `name` string, nullable
          - `short_name` string, nullable
          - `is_verified` boolean, nullable
          - `image_url` string, nullable
          - `image_url_2x` string, nullable
          - `image_url_original` string, nullable
          - `linkedin_organisation_id` integer, nullable
          - `social_handle_linkedin` string, nullable
          - `social_handle_twitter` string, nullable
          - `social_handle_facebook` string, nullable
          - `social_handle_instagram` string, nullable
          - `url` string, nullable
        - `image_url` string, nullable
        - `banner_url` string, nullable
        - `image_url_2x` string, nullable
        - `banner_url_2x` string, nullable
        - `image_url_original` string, nullable
        - `banner_url_original` string, nullable
        - `qa_community_id` integer, nullable
        - `linkedin_organisation_id` integer, nullable
        - `social_handle_linkedin` string, nullable
        - `social_handle_twitter` string, nullable
        - `social_handle_facebook` string, nullable
        - `social_handle_instagram` string, nullable
        - `url` string, nullable
      - `interacted_with` boolean, nullable
      - `featured` boolean
      - `ai_generated` boolean
      - `url` string
      - `seo_keywords` string[], nullable
      - `seo_title` string, nullable
      - `seo_description` string, nullable
      - `field_of_study` SectorSubjectAreaEmbedded: A badge's field of study as embedded in badge reads and the Ofqual lookup (#1946). The website editor and the CLI read these names, so they are a contract.
        - `id` integer, required
        - `code` string, required
        - `name` string, required
        - `tier_1_name` string, nullable
        - `image_label` string, nullable
      - `display_level` string, nullable, required: The one level to show: the qualification level label when set, else `level` (#1915).
    - `time_created` string, date-time
    - `time_updated` string, date-time, nullable
    - `created_by_id` integer, nullable
    - `updated_by_id` integer, nullable
    - `reject_code` string, nullable, required
    - `revocation_reason` string, nullable
    - `url` string, nullable
    - `badge_id` integer, nullable
    - `reminder_emails_sent` integer, nullable
    - `time_claimed` string, date-time, nullable
    - `change_request` BadgeAssertionChangeRequest[], nullable
      - `id` string, required
      - `changes` BadgeAssertionChangeRequestItem[], required
        - `field` 'recipient_firstname' | 'recipient_lastname' | 'recipient_organisation' | 'extend_expiry', required
        - `value` string, nullable
        - `status` 'requested' | 'approved' | 'rejected'
        - `reason` string, nullable
      - `note` string, nullable
      - `time_created` string, date-time, required
      - `last_reminded_at` string, date-time, nullable
      - `reminder_count` integer, nullable
    - `restorable_until` string, date-time, nullable
  - BadgeAssertionPublic
    - `id` integer
    - `recipient_firstname` string, nullable
    - `recipient_lastname` string, nullable
    - `recipient_organisation` string, nullable
    - `recipient_id` integer, nullable
    - `recipient` BadgeAssertionRecipientPublic
      - `id` integer
      - `firstname` string, nullable
      - `lastname` string, nullable
      - `avatar_url` string, nullable
      - `avatar_url_2x` string, nullable
      - `avatar_url_original` string, nullable
      - `noindex_enabled` boolean, nullable
      - `visibility` 'Public' | 'Private': Who may see a user's human-readable public pages (profile, badge and pathway assertion). Deliberately NOT a User_Status value: a Private user is still Active, they can sign in, earn badges and be issued to exactly as before. Also independent of `noindex_enabled`, which only asks search engines not to index a page that stays publicly reachable. Enforced in crud_user_detail.can_read, so every existing "view this user" gate inherits it.
    - `badge` Badge
      - `name` string, nullable
      - `design_standard` 'Generic' | 'Navigatr'
      - `type` 'Experience' | 'Learning' | 'Validation' | 'Certification' | 'Attendance' | 'Work_Experience' | 'Volunteering' | 'Job' | 'Apprenticeship' | 'Course' | 'Internship' | 'Workshop' | 'Campaigning' | 'Activism' | 'Other' | 'Informal_Learning' | 'Training' | 'Certified' | 'Qualification' | 'Membership'
      - `language` 'Arabic_Modern_Standard' | 'Bengali' | 'Bulgarian' | 'Chinese_Cantonese' | 'Chinese_Mandarin' | 'Chinese_Simplified' | 'Chinese_Traditional' | 'Croatian' | 'Czech' | 'Dutch' | 'English' | 'French' | 'German' | 'Greek' | 'Hungarian' | 'Irish_Gaeilge' | 'Italian' | 'Kurdish_Kurmanji' | 'Kurdish_Sorani' | 'Latvian' | 'Lithuanian' | 'Pashto' | 'Persian' | 'Polish' | 'Portuguese' | 'Punjabi' | 'Romanian' | 'Scottish_Gaelic_Gaidhlig' | 'Slovak' | 'Somali' | 'Spanish' | 'Tigrinya' | 'Turkish' | 'Ukrainian' | 'Urdu' | 'Welsh_Cymraeg'
      - `provider_ids` integer[], nullable
      - `community_ids` integer[], nullable
      - `recipient_type` 'User' | 'Organisation'
      - `description` string, nullable
      - `issuer_id` integer, nullable
      - `image_url` string, nullable
      - `image_url_2x` string, nullable
      - `image_url_original` string, nullable
      - `design_parameters` unknown
      - `source` 'Internal' | 'Credly' | 'Open_University' | 'Imported'
      - `earn_url` string, nullable
      - `external_url` string, nullable
      - `information_url` string, nullable
      - `embed` string, nullable
      - `external_id` string, nullable
      - `latitude` number, nullable
      - `longitude` number, nullable
      - `city` string, nullable
      - `country` string, nullable
      - `config` unknown
      - `address` string, nullable
      - `available_to_all` boolean, nullable
      - `availability` string, nullable
      - `end_date` string, date-time, nullable
      - `cost` 'Free' | 'Paid' | 'Other'
      - `level` 'Foundational' | 'Intermediate' | 'Advanced' | 'Other' | 'Explore' | 'Deepen' | 'Apply' | 'Teach' | 'Lead'
      - `time_to_earn` 'Hours' | 'Days' | 'Weeks' | 'Months' | 'Years' | 'Other'
      - `participation_type` 'Online' | 'Hybrid' | 'In_Person'
      - `qa_locked` boolean, nullable
      - `job_titles` string[], nullable
      - `specialized_occupations` string[], nullable
      - `title_names` string[], nullable
      - `is_demo` boolean, nullable
      - `certificates_enabled` boolean
      - `industries` string[], nullable
      - `occupation_groups` string[], nullable
      - `skill_category_names` string[], nullable
      - `edu_levels` string[], nullable
      - `qualification_code` string, nullable
      - `credits_available` number, nullable
      - `credits_unit` string, nullable
      - `qualification_type` 'Award' | 'Certificate' | 'Diploma'
      - `qualification_framework` 'RQF' | 'CQFW' | 'SCQF' | 'EQF' | 'QFEmirates'
      - `qualification_level` string, nullable
      - `grade` 'Pass' | 'Merit' | 'Distinction' | 'Distinction*'
      - `field_of_study_id` integer, nullable
      - `id` integer
      - `status` 'Initialising' | 'Draft' | 'Awaiting_Approval' | 'Published' | 'Deleted' | 'Expired'
      - `created_by` UserDetailPublic
        - `id` integer
        - `firstname` string, nullable, required
        - `lastname` string, nullable, required
        - `avatar_url` string, nullable
        - `avatar_url_2x` string, nullable
        - `avatar_url_original` string, nullable
        - `interests` string[], nullable
        - `noindex_enabled` boolean, nullable
        - `visibility` 'Public' | 'Private': Who may see a user's human-readable public pages (profile, badge and pathway assertion). Deliberately NOT a User_Status value: a Private user is still Active, they can sign in, earn badges and be issued to exactly as before. Also independent of `noindex_enabled`, which only asks search engines not to index a page that stays publicly reachable. Enforced in crud_user_detail.can_read, so every existing "view this user" gate inherits it.
        - `time_created` string, date-time
        - `time_updated` string, date-time, nullable
        - `seo_keywords` string[], nullable
        - `seo_title` string, nullable
        - `seo_description` string, nullable
        - `social_handle_linkedin` string, nullable
        - `social_handle_twitter` string, nullable
        - `social_handle_facebook` string, nullable
        - `social_handle_instagram` string, nullable
      - `submitted_by` UserDetailPublic
        - `id` integer
        - `firstname` string, nullable, required
        - `lastname` string, nullable, required
        - `avatar_url` string, nullable
        - `avatar_url_2x` string, nullable
        - `avatar_url_original` string, nullable
        - `interests` string[], nullable
        - `noindex_enabled` boolean, nullable
        - `visibility` 'Public' | 'Private': Who may see a user's human-readable public pages (profile, badge and pathway assertion). Deliberately NOT a User_Status value: a Private user is still Active, they can sign in, earn badges and be issued to exactly as before. Also independent of `noindex_enabled`, which only asks search engines not to index a page that stays publicly reachable. Enforced in crud_user_detail.can_read, so every existing "view this user" gate inherits it.
        - `time_created` string, date-time
        - `time_updated` string, date-time, nullable
        - `seo_keywords` string[], nullable
        - `seo_title` string, nullable
        - `seo_description` string, nullable
        - `social_handle_linkedin` string, nullable
        - `social_handle_twitter` string, nullable
        - `social_handle_facebook` string, nullable
        - `social_handle_instagram` string, nullable
      - `published_by` UserDetailPublic
        - `id` integer
        - `firstname` string, nullable, required
        - `lastname` string, nullable, required
        - `avatar_url` string, nullable
        - `avatar_url_2x` string, nullable
        - `avatar_url_original` string, nullable
        - `interests` string[], nullable
        - `noindex_enabled` boolean, nullable
        - `visibility` 'Public' | 'Private': Who may see a user's human-readable public pages (profile, badge and pathway assertion). Deliberately NOT a User_Status value: a Private user is still Active, they can sign in, earn badges and be issued to exactly as before. Also independent of `noindex_enabled`, which only asks search engines not to index a page that stays publicly reachable. Enforced in crud_user_detail.can_read, so every existing "view this user" gate inherits it.
        - `time_created` string, date-time
        - `time_updated` string, date-time, nullable
        - `seo_keywords` string[], nullable
        - `seo_title` string, nullable
        - `seo_description` string, nullable
        - `social_handle_linkedin` string, nullable
        - `social_handle_twitter` string, nullable
        - `social_handle_facebook` string, nullable
        - `social_handle_instagram` string, nullable
      - `updated_by` UserDetailPublic
        - `id` integer
        - `firstname` string, nullable, required
        - `lastname` string, nullable, required
        - `avatar_url` string, nullable
        - `avatar_url_2x` string, nullable
        - `avatar_url_original` string, nullable
        - `interests` string[], nullable
        - `noindex_enabled` boolean, nullable
        - `visibility` 'Public' | 'Private': Who may see a user's human-readable public pages (profile, badge and pathway assertion). Deliberately NOT a User_Status value: a Private user is still Active, they can sign in, earn badges and be issued to exactly as before. Also independent of `noindex_enabled`, which only asks search engines not to index a page that stays publicly reachable. Enforced in crud_user_detail.can_read, so every existing "view this user" gate inherits it.
        - `time_created` string, date-time
        - `time_updated` string, date-time, nullable
        - `seo_keywords` string[], nullable
        - `seo_title` string, nullable
        - `seo_description` string, nullable
        - `social_handle_linkedin` string, nullable
        - `social_handle_twitter` string, nullable
        - `social_handle_facebook` string, nullable
        - `social_handle_instagram` string, nullable
      - `issuer` BadgeIssuerPublic
        - `id` integer
        - `name` string, nullable
        - `type` 'Employer' | 'Learning_Provider' | 'Other'
        - `status` 'Active' | 'Suspended' | 'Deleted'
        - `external_url` string, nullable
        - `email` string, nullable
        - `image_url` string, nullable
        - `banner_url` string, nullable
        - `image_url_2x` string, nullable
        - `banner_url_2x` string, nullable
      - `ranking` integer, nullable
      - `time_created` string, date-time
      - `time_updated` string, date-time, nullable
      - `time_submitted` string, date-time, nullable
      - `time_published` string, date-time, nullable
      - `quality_assured_at` string, date-time, nullable
      - `time_issued` string, date-time, nullable
      - `postal_address` Address
        - `full_address` string, nullable
        - `name` string, nullable
        - `number` string, nullable
        - `street` string, nullable
        - `postcode` string, nullable
        - `locality` string, nullable
        - `city` string, nullable
        - `district` string, nullable
        - `region` string, nullable
        - `country` string, nullable
      - `created_by_id` integer, nullable
      - `submitted_by_id` integer, nullable
      - `published_by_id` integer, nullable
      - `updated_by_id` integer, nullable
      - `criteria` BadgeCriteria[], nullable
        - `external_id` string, nullable
        - `description` string, nullable
        - `type` 'Application' | 'Assessment' | 'Award' | 'Badge' | 'Course' | 'Credential' | 'Education_Experience' | 'Leadership' | 'Member' | 'Participant' | 'Pathway' | 'Payment' | 'Portfolio' | 'Presenter' | 'Project' | 'Professional_Experience' | 'Schedule_Registration' | 'Volunteer' | 'Other'
        - `external_url` string, nullable
        - `badge_id` integer, nullable
        - `id` integer, nullable
      - `tags` BadgeTag[], nullable
        - `name` string, nullable
        - `external_id` string, nullable
        - `type` string, nullable
        - `source` string, nullable
      - `alignments` BadgeAlignment[], nullable
        - `external_id` string, nullable
        - `name` string, nullable
        - `description` string, nullable
        - `url` string, nullable
        - `framework` string, nullable
        - `code` string, nullable
        - `id` integer, nullable
        - `badge_id` integer, nullable
      - `endorsements` BadgeEndorsement[], nullable
        - `external_id` string, nullable
        - `name` string, nullable
        - `description` string, nullable
        - `url` string, nullable
        - `image_url` string, nullable
        - `image_url_2x` string, nullable
        - `image_url_original` string, nullable
        - `id` integer, nullable
        - `badge_id` integer, nullable
      - `collections` CollectionLight[], nullable
        - `id` integer, required
        - `name` string, nullable
        - `badge_issuer_id` integer, nullable
      - `providers` ProviderLight[], nullable
        - `id` integer, required
        - `status` 'Active' | 'Suspended' | 'Deleted'
        - `type` 'Learning_Provider' | 'Training_Provider' | 'Awarding_Body' | 'Employer' | 'Local_Authority' | 'University' | 'College' | 'Charity' | 'Department' | 'Project' | 'Other'
        - `name` string, nullable
        - `short_name` string, nullable
        - `external_url` string, nullable
        - `is_verified` boolean, nullable
        - `verification_text` string, nullable
        - `verification_url` string, nullable
        - `is_demo` boolean, nullable
        - `open_access` boolean
        - `community_id` integer, nullable
        - `community` CommunityLight, required
          - `id` integer, required
          - `status` 'Active' | 'Suspended' | 'Deleted'
          - `type` 'City' | 'Region' | 'Local_Authority' | 'Membership_Organisation' | 'Awarding_Body' | 'Partnership' | 'Corporate' | 'Association' | 'University' | 'College' | 'Charity' | 'Other'
          - `name` string, nullable
          - `short_name` string, nullable
          - `is_verified` boolean, nullable
          - `image_url` string, nullable
          - `image_url_2x` string, nullable
          - `image_url_original` string, nullable
          - `linkedin_organisation_id` integer, nullable
          - `social_handle_linkedin` string, nullable
          - `social_handle_twitter` string, nullable
          - `social_handle_facebook` string, nullable
          - `social_handle_instagram` string, nullable
          - `url` string, nullable
        - `image_url` string, nullable
        - `banner_url` string, nullable
        - `image_url_2x` string, nullable
        - `banner_url_2x` string, nullable
        - `image_url_original` string, nullable
        - `banner_url_original` string, nullable
        - `qa_community_id` integer, nullable
        - `linkedin_organisation_id` integer, nullable
        - `social_handle_linkedin` string, nullable
        - `social_handle_twitter` string, nullable
        - `social_handle_facebook` string, nullable
        - `social_handle_instagram` string, nullable
        - `url` string, nullable
      - `interacted_with` boolean, nullable
      - `featured` boolean
      - `ai_generated` boolean
      - `url` string
      - `seo_keywords` string[], nullable
      - `seo_title` string, nullable
      - `seo_description` string, nullable
      - `field_of_study` SectorSubjectAreaEmbedded: A badge's field of study as embedded in badge reads and the Ofqual lookup (#1946). The website editor and the CLI read these names, so they are a contract.
        - `id` integer, required
        - `code` string, required
        - `name` string, required
        - `tier_1_name` string, nullable
        - `image_label` string, nullable
      - `display_level` string, nullable, required: The one level to show: the qualification level label when set, else `level` (#1915).
    - `provider` ProviderPublic
      - `id` integer
      - `status` 'Active' | 'Suspended' | 'Deleted'
      - `type` 'Learning_Provider' | 'Training_Provider' | 'Awarding_Body' | 'Employer' | 'Local_Authority' | 'University' | 'College' | 'Charity' | 'Department' | 'Project' | 'Other'
      - `name` string, nullable
      - `short_name` string, nullable
      - `description` string, nullable
      - `email` string, email, nullable
      - `external_url` string, nullable
      - `is_verified` boolean, nullable
      - `verification_text` string, nullable
      - `verification_url` string, nullable
      - `is_demo` boolean, nullable
      - `open_access` boolean
      - `enable_analytics` boolean, nullable
      - `community_id` integer, nullable
      - `community` CommunityPublic, required
        - `id` integer
        - `status` 'Active' | 'Suspended' | 'Deleted'
        - `type` 'City' | 'Region' | 'Local_Authority' | 'Membership_Organisation' | 'Awarding_Body' | 'Partnership' | 'Corporate' | 'Association' | 'University' | 'College' | 'Charity' | 'Other'
        - `name` string, nullable
        - `short_name` string, nullable
        - `description` string, nullable
        - `external_url` string, nullable
        - `address` string, nullable
        - `latitude` number, nullable
        - `longitude` number, nullable
        - `is_verified` boolean, nullable
        - `verification_text` string, nullable
        - `verification_url` string, nullable
        - `is_demo` boolean, nullable
        - `colour` string, nullable
        - `spydus_library_url` string, nullable
        - `referral_code` string, nullable
        - `image_url` string, nullable
        - `banner_url` string, nullable
        - `image_url_2x` string, nullable
        - `banner_url_2x` string, nullable
        - `image_url_original` string, nullable
        - `banner_url_original` string, nullable
        - `linkedin_organisation_id` integer, nullable
        - `social_handle_linkedin` string, nullable
        - `social_handle_twitter` string, nullable
        - `social_handle_facebook` string, nullable
        - `social_handle_instagram` string, nullable
        - `seo_title` string, nullable
        - `seo_description` string, nullable
        - `seo_keywords` string[], nullable
        - `url` string, nullable
      - `latitude` number, nullable
      - `longitude` number, nullable
      - `image_url` string, nullable
      - `banner_url` string, nullable
      - `image_url_2x` string, nullable
      - `banner_url_2x` string, nullable
      - `image_url_original` string, nullable
      - `banner_url_original` string, nullable
      - `brand_colours` string[], nullable
      - `qa_community_id` integer, nullable
      - `linkedin_organisation_id` integer, nullable
      - `social_handle_linkedin` string, nullable
      - `social_handle_twitter` string, nullable
      - `social_handle_facebook` string, nullable
      - `social_handle_instagram` string, nullable
      - `seo_title` string, nullable
      - `seo_description` string, nullable
      - `seo_keywords` string[], nullable
      - `url` string, nullable
    - `issuer` BadgeIssuer
      - `name` string, nullable
      - `type` 'Employer' | 'Learning_Provider' | 'Other'
      - `description` string, nullable
      - `address` string, nullable
      - `source` 'Internal' | 'Credly' | 'Open_University' | 'Imported'
      - `source_credly_id` integer, nullable
      - `external_id` string, nullable
      - `external_url` string, nullable
      - `email` string, nullable
      - `image_url` string, nullable
      - `banner_url` string, nullable
      - `image_url_2x` string, nullable
      - `banner_url_2x` string, nullable
      - `id` integer
      - `status` 'Active' | 'Suspended' | 'Deleted'
      - `created_by_id` integer, nullable
      - `updated_by_id` integer, nullable
      - `time_created` string, date-time
      - `time_updated` string, date-time, nullable
    - `evidence` BadgeAssertionEvidence[], nullable
      - `name` string, nullable
      - `description` string, nullable
      - `type` 'UrlEvidence' | 'PlainTextEvidence' | 'IdEvidence' | 'KeyValueGroupEvidence'
      - `narrative` string, nullable
      - `genre` string, nullable
      - `audience` string, nullable
      - `value` string, nullable
      - `external_id` string, nullable
      - `id` integer, required
      - `badge_assertion_id` integer
      - `values` BadgeAssertionEvidenceValues[], nullable, required
        - `key` string, nullable
        - `value` string, nullable
        - `url` string, nullable
    - `status` 'Pending' | 'Claimed' | 'Expired' | 'Revoked' | 'Deleted' | 'Failed' | 'Complained'
    - `issuing_method` 'Email' | 'Activity' | 'Autobadge' | 'Bulk' | 'API' | 'Pushed' | 'Migrated' | 'QR' | 'Library_Card' | 'Riddle' | 'Typeform' | 'Zoho_Forms' | 'Tally' | 'Imported' | 'Pathway'
    - `source` 'Internal' | 'Credly' | 'Open_University' | 'Imported'
    - `issue_date` string, date-time, nullable
    - `end_date` string, date-time, nullable
    - `time_verified` string, date-time, nullable
    - `time_claimed` string, date-time, nullable
    - `revocation_reason` string, nullable
    - `url` string, nullable
    - `badge_id` integer, nullable
    - `image_url` string, nullable
    - `image_url_2x` string, nullable
    - `image_url_original` string, nullable
    - `narrative` string, nullable
    - `external_url` string, nullable
    - `seo_keywords` string[], nullable
    - `seo_title` string, nullable
    - `seo_description` string, nullable
    - `grade` 'Pass' | 'Merit' | 'Distinction' | 'Distinction*'
    - `credits_earned` number, nullable

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not Found
- `410`: Gone
- `422`: Unprocessable Content

## Changes

- **2026-11-06** `04bf6727d360`: 2 info
  - added the optional property `anyOf[subschema #1: Badge_Assertion]/badge/anyOf[subschema #1: Badge]/quality_assured_at` to the response with the `200` status
  - added the optional property `anyOf[subschema #2: Badge_Assertion_Public]/badge/anyOf[subschema #1: Badge]/quality_assured_at` to the response with the `200` status
- **2026-10-22** `5b575d75af2b`: 28 info
  - added the optional property `anyOf[subschema #1: Badge_Assertion]/badge/anyOf[subschema #1: Badge]/credits_available` to the response with the `200` status
  - added the optional property `anyOf[subschema #1: Badge_Assertion]/badge/anyOf[subschema #1: Badge]/credits_unit` to the response with the `200` status
  - added the optional property `anyOf[subschema #1: Badge_Assertion]/badge/anyOf[subschema #1: Badge]/field_of_study` to the response with the `200` status
  - added the optional property `anyOf[subschema #1: Badge_Assertion]/badge/anyOf[subschema #1: Badge]/field_of_study_id` to the response with the `200` status
  - …24 more
- …earlier changes not shown

[Operation history](https://skmtc.dev/navigatr/apis/navigatr-api/changes/v1/badge_assertion/:badge_assertion_id/get.md)

---

[API](https://skmtc.dev/navigatr/apis/navigatr-api.md) - [All operations](https://skmtc.dev/navigatr/apis/navigatr-api/llms.txt) - [OpenAPI document](https://skmtc.dev/navigatr/apis/navigatr-api/revisions/efbd3c328549?raw)
