Skip to main content
POST
Submit an application for verification

Authorizations

X-Application-Token
string
header
required

Application-specific token for public URL access. Generated when a customer is created. Provides access to a single application without requiring an API key. Token is valid for 30 days and rate-limited to 250 requests per hour.

Headers

x-idempotency-key
string<uuid>
required

Unique key to ensure request idempotency. If the same key is used within a certain time window, the original response will be returned instead of executing the request again.

Path Parameters

application_id
string
required

The unique identifier for the application KSUID is a 27-character globally unique ID that combines a timestamp with a random component. Used for all entity identifiers in the Dakota platform.

Required string length: 27
Pattern: ^[0-9A-Za-z]{27}$
Example:

"1NFHrqBHb3cTfLVkFSGmHZqdDPi"

Response

Application submitted successfully

Application response with separated entity data and validation state

application_id
string<ksuid>
required

Unique application identifier

Example:

"2hCjxJzUAW6JVRkZqaF9E0KpM3a"

application_type
enum<string>
required

Type of application

Available options:
business,
individual
Example:

"business"

application_status
enum<string>
required

Current status of the application

Available options:
pending,
submitted,
under_review,
request_for_information,
admin_revision,
approved,
declined,
completed,
compliance_review
Example:

"submitted"

application_created_at
string<date-time>
required

When the application was created

Example:

"2024-01-15T10:30:00Z"

application_updated_at
string<date-time>
required

When the application was last updated

Example:

"2024-01-16T14:45:00Z"

application_submitted_at
string<date-time> | null

When the application was submitted (null if not yet submitted)

Example:

"2024-01-17T16:00:00Z"

application_decision
enum<string> | null

Decision outcome for the application (only present after decision is made). Note: auto_declined is mapped to declined in the API response.

Available options:
approved,
declined,
withdrawn
Example:

"approved"

decision_method
enum<string> | null

How the decision was reached: 'manual' for operator-driven decisions, 'auto' for automated approvals, 'override' reserved for future escalation. Null if no decision has been made.

Available options:
manual,
auto,
override
Example:

"manual"

decision_rule_version
string | null

Version identifier of the rule set that produced an automated decision. Null for manual decisions or when no decision has been made.

Example:

"v1.2"

entities
object

The people/businesses being onboarded

edd
object

Enhanced Due Diligence data (if provided)

attestations
object

Attestations submitted for this application

validation
object

Validation state computed at retrieval time

risk_rating
object

Risk rating. Present for users with compliance review-data access (compliance, compliance_admin, superadmin).

poa_status
enum<string> | null

Tracks the review state of the Proof of Address for individual applications. Null for business applications and for non-primary-individual rows.

  • missing — No Proof of Address has been submitted. The individual is subject to the $3,000 USD-equivalent rolling 7-day transaction limit.
  • submitted_pending_review — A PoA-equivalent document (proof_of_address, bank_statement, or utility_bill) has been uploaded and is awaiting compliance review. The individual remains subject to the transaction limit until the review concludes.
  • approved — The Proof of Address has been reviewed and approved. The individual is exempt from the $3,000 / 7-day rolling transaction threshold.
  • rejected — The submitted Proof of Address was rejected. The individual remains subject to the transaction limit and may re-upload a new document.
Available options:
missing,
submitted_pending_review,
approved,
rejected
Example:

"missing"

is_frozen
boolean

Whether the customer's KYB is currently frozen (transactions held pending proof-of-address review). The authoritative source for the reviewer freeze badge. Present (true/false) only for individual applications; absent for business applications.

Example:

true

frozen_at
string<date-time> | null

When the customer entered the current frozen state, from the KYB status-change log. Drives the days-frozen counter accurately (unlike application_updated_at, which unrelated edits bump). Null when the customer is not currently frozen, or when the freeze predates the status-change log.

Example:

"2024-01-16T14:45:00Z"

poa_on_file
boolean

Whether the customer has an approved Proof of Address on file (and is therefore exempt from the transaction-volume limit). Present only for individual applications; absent for business applications.

Example:

false

assignee
object

The compliance reviewer this application is assigned to (its owner). Absent when unassigned.

assigned_at
integer<int64> | null

Epoch seconds when the application was assigned to its current owner. Absent/null when unassigned.

Example:

1717423200

outstanding_partner_attestations
object[]

Outstanding partner disclosure attestations the customer must accept to unlock a partner-gated capability (e.g. international wires), surfaced so the hosted onboarding flow can present them in the same attestations UI used for first-party attestations. Partner-agnostic: each item is keyed by an opaque terms key + version, never a partner identifier. Only present (and only computed) for an already-decided (approved) application that has outstanding partner onboarding — this is the re-engagement surface for an existing customer who lands on the hosted flow via their application_url. Empty/absent when nothing is outstanding or the partner declaration is unavailable. Accept each by POSTing to /applications/{id}/attestations with disclosure_id = key and disclosure_version = version.