---
title: "Poll a submission's verification status"
method: GET
path: "/identity-submissions/{submission_id}"
tags: ["Identities"]
---

# Poll a submission's verification status

`GET /identity-submissions/{submission_id}`

Returns the verification state of a submission and, once complete, the org-scoped pairwise refs. Accepts any of the calling organization's onboarding session ids — direct submissions and hosted-embed sessions alike.

## Path parameters

- `submission_id` string, uuid, required

## Response `200`

Response

- V1IdentitySubmissionStatusResponse — Body for ``GET /identity-submissions/{submission_id}`` and the payload of the ``OnboardingSession.completed`` webhook. Pairwise refs appear once verification completes successfully; they are the durable handles for the identity status route and credential minting. Global ids are never exposed.
  - `submission_id` string, uuid, required — Unique id of the submission.
  - `state` 'PENDING' | 'EXECUTING' | 'WAITING' | 'COMPLETED' | 'FAILED' | 'EXPIRED' | 'CANCELLED', required — Lifecycle state of an asynchronous verification workflow, such as an identity submission: PENDING, EXECUTING, or WAITING while in flight, then a terminal COMPLETED, FAILED, EXPIRED, or CANCELLED.
  - `verdict` 'APPROVED' | 'UNDER_REVIEW' | 'REJECTED' — Normalized onboarding verdict used across provider-specific outputs.
  - `reference_id` string, nullable — Caller-supplied correlation id.
  - `completed_at` string, date-time, nullable — When the workflow reached a terminal state.
  - `principal_ref` string, nullable — Pairwise reference to the verified principal, unique to the calling organization and stable across re-verification.
  - `business_ref` string, nullable — Pairwise reference to the verified business, when the submission covered one.
  - `business_operator_link_status` 'VERIFIED' | 'UNDER_REVIEW' | 'REJECTED' — Status of the link between a person (principal) and a business they operate. VERIFIED is earned by the full evidence recipe (TIN provided + IRS-matched + KYB-verified) or granted by manual review; UNDER_REVIEW is every automatic shortfall; REJECTED is a manual refusal. A rejected link is immutable — a later submission evaluates the pair fresh.

## Other responses

- `404` — The submission id is unknown to the calling organization and application.
- `422` — Validation Error

---

[API](https://skmtc.net/baselayer/apis/baselayer-api-service.md) · [All operations](https://skmtc.net/baselayer/apis/baselayer-api-service/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/baselayer/baselayer-api-service/versions/0cc89938bc26/schema)
