---
title: "Get program theme"
method: GET
path: "/program/{programId}/theme"
tags: ["program"]
---

# Get program theme

`GET /program/{programId}/theme`

Get the theme data (messages and CSS) for a program

## Path parameters

- `programId` string, required

## Query parameters

- `locale` string

## Response `200`

The theme data for a program

- ProgramTheme — Any messaging or CSS that was configured in the self service tool for the program being used for verification
  - `intl` Internationalization, required
    - `locale` string, required — The locale to use for internationalization
    - `messages` ProgramMessages, required — The message bundle for the program. A value of `null` means that no override exists, so the client shows its own default text. SheerID also returns keys that this schema does not list, because a program can define its own messages. Ignore the keys you do not know.
      - `companyName` string, required — The company name associated with the program. This is a dynamic value (changes per program)
      - `lowRewardPool` string, nullable, required — The message to show when there are not many rewards available for the program
      - `optIn` string, nullable, required
      - `step` StepMessages, required
        - `personalInfo` PersonalInfoMessages, required
          - `title` string, nullable, required — The title for the collect personal information step
          - `subtitle` string, nullable, required — The subtitle for the collect personal information step
          - `submitButtonText` string, nullable, required — The text shown on the submit button for the collect person info step.
        - `docUpload` DocUploadMessages, required
          - `title` string, nullable, required — The title for the document upload step
          - `subtitle` string, nullable, required — The subtitle for the document upload step
        - `success` SuccessMessages, required
          - `title` string, nullable, required — The title for the success step
          - `subtitle` string, nullable, required — The subtitle for the success step
          - `redirectUrl` string, nullable, required — Deprecated. Use the redirectUrl property of the [SuccessResponse](#!/components/schemas/SuccessResponse) instead
          - `redirectButtonText` string, nullable, required — The text to show on the redirect button if a redirect URL was configured
          - `emailNotification` string, nullable, required — The text to indicate to the user they should check their email for the reward code
        - `pending` PendingMessages, required — Messages to be shown when the verification reaches the pending step.
          - `titleReview` string, nullable, required — The title to show while the user's document is being reviewed.
          - `turnaroundTime` string, nullable, required — The subtitle indicating the expected turnaround time while the user's document is being reviewed.
          - `subtitle2` string, nullable, required — Messages indicating what the user can do while the document is being reviewed.
        - `consolation` ConsolationMessages, required — The messages to be shown to the user when the consolation step is reached.
          - `title` string, nullable, required — The title for the page when the user reaches the consolation step.
          - `subtitle` string, nullable, required — The subtitle for the page when the user reaches the consolation step.
          - `verificationOnly` string, nullable, required — Message shown to direct questions about the verification process.
        - `emailLoop` EmailLoopMessages — Messages to show to the user when the emailLoop step is reached.
          - `title` string, nullable, required — The title of the page shown when the emailLoop step is reached.
          - `subtitleWithoutEmail` string, nullable, required — A message indicating an email was sent and instructions for completing the step.
          - `skipEmail` string, nullable, required — Message shown to indicate how to skip the email loop step if possible.
        - `sso` SsoMessages, required — Messages for the SSO step
          - `title` string, nullable, required — The title on the page when the SSO step is reached.
          - `subtitle` string, nullable, required — The substitle on the page when the SSO step is reached.
          - `login` string, nullable, required — The button text prompting the user to login.
        - `error` ErrorMessages, required — Customized messaging for the error step
          - `errorId` object, required — The messages that should be shown for each ErrorId
        - `collectIdentifier` CollectIdentifierMessages, required — Messages to show to the user when the collectIdentifier step is reached.
          - `submitButton` string, nullable, required — The submit button text for the Collect Identifier step.
          - `inputExplanation` string, nullable, required — A message for the input explanation.
        - `completeAuthentication` CompleteAuthenticationMessages, required — Messages to show to the user when the authenticationLoop step is reached.
          - `title` string, nullable, required — The title of the page shown when the authenticationLoop step is reached.
          - `subtitle` string, nullable, required — A message indicating an email was sent and instructions for completing the step.
          - `manuallyVerifyButton` string, nullable, required — Message shown to indicate how to skip the authentication loop step and manually verify.
        - `override` OverrideMessages, required — Messages to show to the user when the override step is reached.
          - `title` string, nullable, required — The title of the page shown when the override step is reached.
          - `subtitle` string, nullable, required — The subtitle of the page shown when the override step is reached.
          - `subtitle2` string, nullable, required — Information about how to proceed when the override step is reached.
          - `verificationOverrideCodeLabel` string, nullable, required — The label for the input box provided for the override code.
          - `submitOverrideCodeButtonLabel` string, nullable, required — The text shown on the button used to submit the override code.
      - `errorId` object, required — The messages that should be shown for each ErrorId
  - `customCss` string, nullable, required — Custom CSS to use when rendering the verification form
  - `themeChoices` ThemeChoices — The theme choices for the entity.
    - `logoUrl` string, uri — The URL for the logo to present.
    - `font` string — The font to use.
    - `backgroundColor` string — A hex representation of a color
    - `primaryFontColor` string — A hex representation of a color
    - `buttonColor` string — A hex representation of a color
    - `buttonFontColor` string — A hex representation of a color
    - `linkColor` string — A hex representation of a color
    - `h1FontColor` string — A hex representation of a color
    - `helperFontColor` string — A hex representation of a color
    - `customCss` string — Custom raw CSS stylesheet to apply.
    - `landingPage` LandingPageTheme — Theme choices for the landing page.
      - `logoUrl` string, uri — The URL for the logo to present on the landing page.
      - `backgroundImageUrl` string, uri — The URL for the background to present on the landing page.
      - `backgroundColor` string — A hex representation of a color
      - `primaryFontColor` string — A hex representation of a color
      - `layout` 'center' | 'splitRight' | 'fullRight'
  - `logoUrl` string, nullable, required — Deprecated, use the logoUrl in the [ThemeChoices](#!/components/schemas/ThemeChoices) URL of the logo associated with this program.
  - `privacyPolicyUrl` string, nullable, required — The URL to use for the privacy policy.
  - `isTestMode` boolean, required — Whether or not the program is in test mode
  - `openOrgSearchEnabled` boolean — Flag indicating whether the end-user can supply an unknown org when attempting to verify.
  - `isSmsNotifierConfigured` boolean — Flag indicating whether this program has an SMS Notifier configured.
  - `smsLoopEnabled` boolean, required — Flag indicating whether this program requires SMS loop where phoneNumber is required.
  - `docUploadEnabled` boolean, required — Flag indicating whether this program may perform the doc upload step.
  - `emailLoopEnabled` boolean, required — Flag indicating whether this program may perform the email loop step.
  - `ssoEnabled` boolean, required — Flag indicating whether this program may perform the SSO step.
  - `overrideEnabled` boolean, required — Flag indicating whether this program may perform the override step.
  - `threatMetrixEnabled` boolean — Flag indicating whether this program is configured to use ThreatMetrix for additional fraud detection.
  - `threatMetrixOrgId` string, nullable — The ThreatMetrix organization ID to use for device fingerprinting. May be account-specific or the global default.
  - `ipqsDeviceFingerprintEnabled` boolean — Flag indicating whether this program is configured to use IPQS Device Fingerprint for additional fraud detection.
  - `idCheckAddOnEnabled` boolean — If true, this program has the ID Check add-on. The program can then ask the person for a government ID.
  - `strictMilitaryValidationEnabled` boolean — Flag indicating whether this program uses strict military validation criteria.
  - `transitionalMilitaryValidityDays` integer, nullable — The number of days before and after the active duty end date in which SheerID still accepts the military status. The value is `null` if the program does not enable transitional military status.
  - `affinityProgramEnabled` boolean — If true, successful verifications from this program may be shown offers from Affinity program partners
  - `remainingRewardCodes` integer, nullable, required — The number of remaining reward codes for the program. Will be null if this should not be shown to the user.
  - `externalUserIdRequired` boolean — If true, externalUserId is required for all verifications on this program.
  - `captchaEnabled` boolean — Flag indicating whether this program is configured to use Captcha.
  - `fingerprintEnabled` boolean — Flag indicating whether this program is configured to use Fingerprints device signal collection.
  - `config` ProgramVerificationConfig, required — The verification configuration for the program. This schema permits keys that it does not list, and SheerID can add a key in a later release. Ignore the keys that you do not know.
    - `countries` string[], required — The list of countries that have been enabled for this program
    - `locales` string[], required — The list of available locales that have been configured for this program
    - `maxReviewTime` '2_MIN' | '20_MIN' | '2_HRS' | '24_HRS' | '2_DAY' | '3_DAY', required — The maximum amount of time a review can take
    - `estimatedReviewTime` 'A_FEW_MINUTES' | 'A_HALF_HOUR' | 'A_FEW_HOURS' | 'A_FEW_DAYS', required — An estimation for how long an end user can expect a review to take
    - `marketConsent` MarketConsent, required — The current market consent configuration data for the program being used for a verification
      - `enabled` boolean, required — The value whether or not market consent is enabled
      - `required` boolean, required — The value that makes market consent to be mandatory or not
      - `message` string, nullable, required — The message to display in the verification
    - `customMetadata` CustomMetadata, required — The custom metadata configuration being used for a verification
      - `enabled` boolean, required — Whether or not collecting metadata keys is enabled
      - `keys` string[], required
    - `customFaqLink` string, nullable, required — Location for faq link
    - `orgRemoteSource` 'EMPLOYER' | 'PLACE' — An identifier used for disambiguating the service which is providing the organization information.
    - `orgSearchUrl` string, required — The URL to use for finding organizations for verification
    - `orgTypes` OrganizationType[], required — A list of eligible organization types for the program
    - `orgSearchCountryTags` object — A map of country codes to the org search tags that should be applied when searching for organizations.
    - `orgSearchAffiliationOverrides` object — A map of Affiliations to key value pairs of query parameters to replace in the orgSearchUrl.
    - `rewardDisplay` string[] — An list of of ways that reward should be displayed.
    - `excludedOrganizationIds` integer[], required — A list of organization IDs that have been exluded from the program
    - `brandInfo` BrandInfo, required — Information about the brand providing the offer
      - `faqUrl` string, required — The URL where a FAQ for the brand resides
      - `emailAddress` string, required — The email address of the person being verified
      - `phoneNumber` string, required — The phone number used for SMS messages
    - `segment` 'student' | 'teacher' | 'military' | 'senior' | 'age' | 'firstResponder' | 'medical' | 'employment' | 'marketplace' | 'member' | 'licensedProfessional' | 'recentMover' | 'other' | 'lowIncome' | 'identity', nullable — The market segment for the verification. The value can be `null` if the server did not determine the segment. For example, the server sends an error before a verification exists.
    - `offerType` 'staticCode' | 'autogenCode' | 'noCode' | 'rewardPool', required — The type of reward/offer
    - `maxAge` integer — The maximum age allowed for a user to submit a verification. Will be null if no maximum is set.
    - `minAge` integer — The minimum age allowed for a user to submit a verification. Will be null if no minimum is set.
    - `onfidoReportNames` string[] — The report names to support within onfido.
    - `onfidoIncludedCountries` string[] — The countries to support within onfido.
    - `customProgramData` object — Custom program data needed for the implementation.

## Other responses

- `404` — Program not found
- `429` — Too many requests. A `429` can mean one of two things — inspect the response body's `errorIds` before retrying: - A transient rate limit applied at the platform edge. If a `Retry-After` header is present, wait that many seconds (using exponential backoff) and retry. - A program/consumer limit such as `verificationLimitExceeded`, `reverificationDailyLimitExceeded`, or `docReviewLimitExceeded` — the consumer has exhausted an allowance defined by the program's limiting policy. This is a permanent rejection (`currentStep: error`, no `Retry-After`); do not retry.
- `500` — Internal server error.
- `503` — Service temporarily unavailable. The request can be safely retried after the interval given in the `Retry-After` header.

---

[API](https://skmtc.dev/sheerid/apis/sheerid-api.md) · [All operations](https://skmtc.dev/sheerid/apis/sheerid-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/sheerid/sheerid-api/revisions/dc7f4e84f543/schema)
