---
title: "Read Provider"
method: GET
path: "/v1/provider/{provider_id}"
tags: ["Provider"]
---

# Read Provider

`GET /v1/provider/{provider_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/provider/{provider_id}`
- Auth: OAuth 2
  - Password
  - Token URL: `/v1/token`
- TypeScript: <https://skmtc.dev/navigatr/apis/navigatr-api/docs/v1/provider/:provider_id/get.ts> (a function with typed inputs; its response is checked against the schema)

Get data for a specific provider.

Returns the full `Provider` schema to platform admins, the provider's own
admins, and the parent community's admins. All other callers (including
unauthenticated) receive a reduced `Provider_Public` schema that includes the
contact email and the analytics flag but omits phone, address,
verification email, internal CRM ids, consent audit trail, every other
feature flag, and the arbitrary `config` dict.

## Path parameters

- `provider_id` integer, required

## Headers

- `X-Access-Token` string, nullable

## Response `200`

Successful Response

- union
  - Provider
    - `name` string, nullable
    - `short_name` string, nullable
    - `organisation_name` string, nullable
    - `company_number` string, nullable
    - `verification_url` string, nullable
    - `type` 'Learning_Provider' | 'Training_Provider' | 'Awarding_Body' | 'Employer' | 'Local_Authority' | 'University' | 'College' | 'Charity' | 'Department' | 'Project' | 'Other'
    - `description` string, nullable
    - `email` string, email, nullable
    - `phone` string, nullable
    - `address` string, nullable
    - `latitude` number, nullable
    - `longitude` number, nullable
    - `city` string, nullable
    - `country` string, nullable
    - `external_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
    - `source_credly_id` integer, nullable
    - `featured` boolean, nullable
    - `brand_colours` string[], nullable
    - `badge_logo_regular_url` string, nullable
    - `badge_logo_mono_url` string, nullable
    - `enable_summary_emails` boolean, nullable
    - `enable_surveys` boolean, 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
    - `consent_supply_of_service` string, date-time, nullable
    - `consent_supply_of_service_by` integer, nullable
    - `pipedrive_org_id` integer, nullable
    - `pipedrive_deal_id` integer, nullable
    - `id` integer
    - `community_id` integer, nullable
    - `status` 'Active' | 'Suspended' | 'Deleted'
    - `seo_keywords` string[], nullable
    - `seo_title` string, nullable
    - `seo_description` string, nullable
    - `enable_engagement_emails` boolean, nullable
    - `suspension_reason` 'Subscription_Expired' | 'Manual'
    - `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
    - `ranking` integer, nullable
    - `created_by_id` integer, nullable
    - `updated_by_id` integer, nullable
    - `verified_by_id` integer, nullable
    - `verification_request_by_id` integer, nullable
    - `time_created` string, date-time
    - `time_updated` string, date-time, nullable
    - `time_verified` string, date-time, nullable
    - `time_stats_email_sent` string, date-time, nullable
    - `config` unknown
    - `community` Community, required
      - `name` string, nullable
      - `short_name` string, nullable
      - `organisation_name` string, nullable
      - `company_number` string, nullable
      - `verification_url` string, nullable
      - `type` 'City' | 'Region' | 'Local_Authority' | 'Membership_Organisation' | 'Awarding_Body' | 'Partnership' | 'Corporate' | 'Association' | 'University' | 'College' | 'Charity' | 'Other'
      - `description` string, nullable
      - `email` string, email, nullable
      - `phone` string, nullable
      - `address` string, nullable
      - `latitude` number, nullable
      - `longitude` number, nullable
      - `city` string, nullable
      - `country` string, nullable
      - `is_default` boolean, nullable
      - `external_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
      - `featured` boolean, nullable
      - `colour` string, nullable
      - `enable_summary_emails` boolean, 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
      - `consent_supply_of_service` string, date-time, nullable
      - `consent_supply_of_service_by` integer, nullable
      - `pipedrive_org_id` integer, nullable
      - `pipedrive_deal_id` integer, nullable
      - `id` integer
      - `status` 'Active' | 'Suspended' | 'Deleted'
      - `seo_keywords` string[], nullable
      - `seo_title` string, nullable
      - `seo_description` string, nullable
      - `enable_engagement_emails` boolean, nullable
      - `suspension_reason` 'Subscription_Expired' | 'Manual'
      - `ranking` integer, nullable
      - `created_by_id` integer, nullable
      - `updated_by_id` integer, nullable
      - `verified_by_id` integer, nullable
      - `verification_request_by_id` integer, nullable
      - `time_created` string, date-time
      - `time_updated` string, date-time, nullable
      - `time_verified` string, date-time, nullable
      - `time_stats_email_sent` 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
      - `config` unknown
      - `survey_consent` string, nullable
      - `is_demo` boolean, nullable
      - `is_verified` boolean, nullable
      - `verification_text` string, nullable
      - `verification_email` string, email, nullable
      - `enable_analytics` boolean, nullable
      - `enable_members` boolean, nullable
      - `enable_library_card` boolean, nullable
      - `spydus_library_url` string, nullable
      - `referral_code` string, nullable
      - `member_visibility_default` '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.
      - `url` string, nullable
    - `is_verified` boolean, nullable
    - `verification_text` string, nullable
    - `verification_email` string, email, nullable
    - `is_demo` boolean, nullable
    - `open_access` boolean, nullable
    - `enable_analytics` boolean, nullable
    - `enable_members` boolean, nullable
    - `enable_badge_publish` boolean, nullable
    - `enable_badge_create` boolean, nullable
    - `enable_badge_submit` boolean, nullable
    - `enable_job_feed` boolean, nullable
    - `qa_community_id` integer, nullable
    - `member_visibility_default` '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.
    - `url` string, nullable
  - 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

## Other responses

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

## Changes

- **2026-11-07** `efbd3c328549`: 2 info
  - added the optional property `anyOf[subschema #1: Provider]/community/anyOf[subschema #1: Community]/suspension_reason` to the response with the `200` status
  - added the optional property `anyOf[subschema #1: Provider]/suspension_reason` to the response with the `200` status
- **2026-10-22** `5b575d75af2b`: 2 info
  - added the optional property `anyOf[subschema #2: Provider_Public]/email` to the response with the `200` status
  - added the optional property `anyOf[subschema #2: Provider_Public]/enable_analytics` to the response with the `200` status
- **2026-09-24** `2e7136176810`: 2 info
  - added the optional property `anyOf[subschema #1: Provider]/community/anyOf[subschema #1: Community]/member_visibility_default` to the response with the `200` status
  - added the optional property `anyOf[subschema #1: Provider]/member_visibility_default` to the response with the `200` status
- **2026-08-06** `4039d06e340b`: 2 breaking, 63 warning, 4 info
  - the response's body type changed from `object` to no type for status `200`
  - removed the required property `community` from the response with the `200` status
  - removed the optional property `address` from the response with the `200` status
  - removed the optional property `badge_logo_mono_url` from the response with the `200` status
  - …65 more
- …earlier changes not shown

[Operation history](https://skmtc.dev/navigatr/apis/navigatr-api/changes/v1/provider/:provider_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)
