> ## Documentation Index
> Fetch the complete documentation index at: https://docs.klara-ai.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get Application

> Retrieve full details of a single application including all collected data and documents

Returns the application record including all form data, documents with presigned download URLs, participant information, and — for eligible applications — documents retrieved directly from the company registry.

```text theme={null}
GET /api/external/applications/{id}
```

## Authentication

Requires an API key with `applications:read` scope. The application must belong to the organization associated with the API key.

```bash theme={null}
Authorization: Bearer klara_{client_id}.{secret}
```

## Path parameters

<ParamField path="id" type="string" required>
  UUID of the application.
</ParamField>

## Response

Returns `200 OK` with the full application detail.

<ResponseField name="id" type="string">
  UUID of the application.
</ResponseField>

<ResponseField name="config_id" type="string">
  Configuration ID used for this application.
</ResponseField>

<ResponseField name="status" type="string">
  Current status: `created`, `sent`, `in_progress`, `submitted`, `review`, `approved`, `rejected`.
</ResponseField>

<ResponseField name="link" type="string">
  The primary participant's application form URL — the same link returned by [Create Application](/api-reference/create-application). Use it to recover a lost link or re-send it to the applicant through your own channels. If your organization has an active [custom domain](/custom-domains), the link uses it. Omitted in the rare case an application has no primary participant.
</ResponseField>

<ResponseField name="data" type="object">
  Application data. Contains the following top-level keys:

  <Expandable title="data properties">
    <ResponseField name="fields" type="object">
      Key-value map of all collected form field values (e.g., `company_name`, `registered_address`). Includes questionnaire, company, and other field categories.
    </ResponseField>

    <ResponseField name="people" type="array">
      Directors, UBOs, and shareholders as entered by the applicant.

      <Expandable title="person properties">
        <ResponseField name="id" type="string">
          UUID of the person record.
        </ResponseField>

        <ResponseField name="source" type="string">
          registry or user\_added.
        </ResponseField>

        <ResponseField name="roles" type="string[]">
          One or more of director, ubo, shareholder.
        </ResponseField>

        <ResponseField name="full_name" type="string">
          Full legal name.
        </ResponseField>

        <ResponseField name="first_name" type="string">
          First name, split from the full name.
        </ResponseField>

        <ResponseField name="last_name" type="string">
          Last name, split from the full name.
        </ResponseField>

        <ResponseField name="email" type="string | undefined">
          Email address.
        </ResponseField>

        <ResponseField name="phone_number" type="string | undefined">
          Phone number.
        </ResponseField>

        <ResponseField name="date_of_birth" type="string | undefined">
          ISO 8601 date (e.g., 1985-03-22).
        </ResponseField>

        <ResponseField name="nationality" type="string | undefined">
          ISO 3166-1 alpha-2 country code.
        </ResponseField>

        <ResponseField name="home_address" type="object | undefined">
          Structured address object.
        </ResponseField>

        <ResponseField name="documents" type="object">
          Map of documents keyed by field ID. Only documents with status `accepted`, `forced`, or `skipped` are included — see [Document status](/api-reference/types#document-status).

          <Expandable title="document properties">
            <ResponseField name="file_id" type="string">
              UUID of the document record.
            </ResponseField>

            <ResponseField name="file_name" type="string">
              Original file name.
            </ResponseField>

            <ResponseField name="file_type" type="string">
              MIME type (e.g., application/pdf).
            </ResponseField>

            <ResponseField name="uploaded_at" type="string">
              ISO 8601 timestamp of upload.
            </ResponseField>

            <ResponseField name="status" type="string">
              `accepted`, `forced` (manually accepted by an admin), or `skipped` (requirement waived by an admin).
            </ResponseField>

            <ResponseField name="acceptance_reason" type="string | undefined">
              Why the document was accepted: `validation_passed`, `no_validator_configured`, or `baseline_passed`.
            </ResponseField>

            <ResponseField name="user_override_reason" type="string | undefined">
              Reason provided when a document was forced or skipped.
            </ResponseField>

            <ResponseField name="overridden_at" type="string | undefined">
              ISO 8601 timestamp of the force/skip override.
            </ResponseField>

            <ResponseField name="download_url" type="string | undefined">
              Presigned S3 URL valid for 60 seconds.
            </ResponseField>
          </Expandable>
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="entities" type="array">
      Related legal entities in the ownership structure.

      <Expandable title="entity properties">
        <ResponseField name="id" type="string">
          UUID of the entity record.
        </ResponseField>

        <ResponseField name="source" type="string">
          registry or user\_added.
        </ResponseField>

        <ResponseField name="name" type="string">
          Legal entity name.
        </ResponseField>

        <ResponseField name="type" type="string">
          holding\_company, subsidiary, parent, or other.
        </ResponseField>

        <ResponseField name="country" type="string | undefined">
          ISO 3166-1 alpha-2 country code.
        </ResponseField>

        <ResponseField name="documents" type="object">
          Map of accepted documents, same structure as people\[].documents.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="ownership" type="array">
      Ownership structure relationships. See [Ownership relationship](/api-reference/types#ownership-relationship) for field definitions.
    </ResponseField>

    <ResponseField name="documents" type="object">
      Company-scoped documents, keyed by field ID. Only documents with status `accepted`, `forced`, or `skipped` are included. Each value has the same shape as `people[].documents`.
    </ResponseField>

    <ResponseField name="meta" type="object">
      Application metadata.

      <Expandable title="meta properties">
        <ResponseField name="primary_contact" type="object | undefined">
          `{ name, email, role? }` — the primary contact on record.
        </ResponseField>

        <ResponseField name="registry_sources" type="string[] | undefined">
          Registry sources used for enrichment (e.g., `["companies_house"]`).
        </ResponseField>

        <ResponseField name="website_favicon" type="string | undefined">
          URL of the company's website favicon, if extracted.
        </ResponseField>

        <ResponseField name="web_extracted_industry" type="string | undefined">
          Industry inferred from the company website, if extracted.
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="participants" type="array">
  Participants associated with this application.

  <Expandable title="participant properties">
    <ResponseField name="email" type="string">
      Email address.
    </ResponseField>

    <ResponseField name="name" type="string | null">
      Display name.
    </ResponseField>

    <ResponseField name="role" type="string">
      Participant role (`primary` or `collaborator`).
    </ResponseField>

    <ResponseField name="link" type="string">
      This participant's application form URL.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="registry_documents" type="array">
  Documents Klara retrieved directly from the company registry (currently Companies House for UK companies) — no applicant upload involved. **Only present for registry-eligible applications**: a UK company with a company number, on a configuration with registry documents enabled. An empty array means retrieval hasn't completed yet — check `registry_documents_status`.

  <Expandable title="registry document properties">
    <ResponseField name="id" type="string">
      UUID of the registry document.
    </ResponseField>

    <ResponseField name="source" type="string">
      Registry the document came from (currently `companies_house`).
    </ResponseField>

    <ResponseField name="document_type" type="string">
      Filing type — see [Registry document types](/api-reference/types#registry-document-type).
    </ResponseField>

    <ResponseField name="filing_date" type="string | null">
      Date the document was filed with the registry (`YYYY-MM-DD`).
    </ResponseField>

    <ResponseField name="fetched_at" type="string | null">
      ISO 8601 timestamp when Klara retrieved the document.
    </ResponseField>

    <ResponseField name="download_url" type="string | undefined">
      Presigned S3 URL valid for 60 seconds.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="registry_documents_status" type="string">
  Overall retrieval status: `pending` (still fetching), `complete` (all available filings retrieved), `partial` (some filings could not be retrieved), or `failed`. Only present for registry-eligible applications.
</ResponseField>

<ResponseField name="created_at" type="string">
  ISO 8601 timestamp.
</ResponseField>

<ResponseField name="submitted_at" type="string | null">
  ISO 8601 timestamp, or `null` if not yet submitted.
</ResponseField>

<ResponseField name="completed_at" type="string | null">
  ISO 8601 timestamp when approved/rejected, or `null`.
</ResponseField>

## Examples

<CodeGroup>
  ```bash cURL theme={null}
  curl "https://app.klara-ai.com/api/external/applications/550e8400-e29b-41d4-a716-446655440000" \
    -H "Authorization: Bearer klara_abc123def456.your-secret-here"
  ```

  ```javascript Node.js theme={null}
  const response = await fetch(
    'https://app.klara-ai.com/api/external/applications/550e8400-e29b-41d4-a716-446655440000',
    {
      headers: {
        'Authorization': 'Bearer klara_abc123def456.your-secret-here'
      }
    }
  );

  const application = await response.json();
  ```

  ```python Python theme={null}
  import requests

  response = requests.get(
      'https://app.klara-ai.com/api/external/applications/550e8400-e29b-41d4-a716-446655440000',
      headers={'Authorization': 'Bearer klara_abc123def456.your-secret-here'}
  )

  application = response.json()
  ```
</CodeGroup>

**Response:**

```json theme={null}
{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "config_id": "kyc-standard",
  "status": "submitted",
  "link": "https://app.klara-ai.com/external/acme/apply/a1b2c3d4e5f6g7h8",
  "data": {
    "fields": {
      "company_name": "Acme Financial Ltd",
      "company_number": "12345678",
      "company_country": "GB",
      "registered_address": "123 High Street, London, EC1A 1BB",
      "trading_name": "Acme Finance",
      "web_presence": "https://acmefinancial.co.uk",
      "industry": "Financial Services",
      "years_trading": 8,
      "annual_revenue": 2500000
    },
    "people": [
      {
        "id": "person-001",
        "source": "registry",
        "full_name": "John Smith",
        "email": "john.smith@acmefinancial.co.uk",
        "phone_number": "+447700900123",
        "date_of_birth": "1978-06-14",
        "nationality": "GB",
        "home_address": {
          "line1": "45 Elm Avenue",
          "city": "London",
          "postcode": "SW1A 2AA",
          "country": "GB"
        },
        "roles": ["director", "ubo"],
        "documents": {
          "passport": {
            "file_id": "doc-001",
            "file_name": "john-smith-passport.pdf",
            "file_type": "application/pdf",
            "uploaded_at": "2026-01-15T11:00:00.000Z",
            "status": "accepted",
            "acceptance_reason": "validation_passed",
            "download_url": "https://s3.amazonaws.com/..."
          },
          "proof_of_address": {
            "file_id": "doc-003",
            "file_name": "utility-bill-jan.pdf",
            "file_type": "application/pdf",
            "uploaded_at": "2026-01-15T11:10:00.000Z",
            "status": "accepted",
            "acceptance_reason": "validation_passed",
            "download_url": "https://s3.amazonaws.com/..."
          }
        }
      },
      {
        "id": "person-002",
        "source": "user_added",
        "full_name": "Sarah Chen",
        "email": "sarah.chen@acmefinancial.co.uk",
        "date_of_birth": "1985-03-22",
        "nationality": "GB",
        "roles": ["director"],
        "documents": {
          "passport": {
            "file_id": "doc-004",
            "file_name": "sarah-chen-passport.pdf",
            "file_type": "application/pdf",
            "uploaded_at": "2026-01-15T12:00:00.000Z",
            "status": "accepted",
            "acceptance_reason": "validation_passed",
            "download_url": "https://s3.amazonaws.com/..."
          }
        }
      }
    ],
    "entities": [
      {
        "id": "entity-001",
        "source": "user_added",
        "name": "Acme Holdings Ltd",
        "type": "holding_company",
        "country": "GB",
        "documents": {}
      }
    ],
    "ownership": [
      {
        "id": "own-001",
        "owner_type": "person",
        "owner_id": "person-001",
        "owned_type": "target",
        "percentage": 40,
        "is_direct": true,
        "is_nominee": false
      },
      {
        "id": "own-002",
        "owner_type": "entity",
        "owner_id": "entity-001",
        "owned_type": "target",
        "percentage": 60,
        "is_direct": true,
        "is_nominee": false
      },
      {
        "id": "own-003",
        "owner_type": "person",
        "owner_id": "person-001",
        "owned_type": "entity",
        "owned_id": "entity-001",
        "percentage": 100,
        "is_direct": true,
        "is_nominee": false
      }
    ],
    "documents": {
      "bank_statement": {
        "file_id": "doc-002",
        "file_name": "acme-bank-statement-dec-2025.pdf",
        "file_type": "application/pdf",
        "uploaded_at": "2026-01-15T11:05:00.000Z",
        "status": "accepted",
        "acceptance_reason": "validation_passed",
        "download_url": "https://s3.amazonaws.com/..."
      }
    },
    "meta": {
      "primary_contact": {
        "name": "Sophie Mitchell",
        "email": "sophie@acme.com",
        "role": "CFO"
      },
      "registry_sources": ["companies_house"],
      "website_favicon": "https://acmefinancial.co.uk/favicon.ico",
      "web_extracted_industry": "Financial Services"
    }
  },
  "participants": [
    {
      "email": "sophie@acme.com",
      "name": "Sophie Mitchell",
      "role": "primary",
      "link": "https://app.klara-ai.com/external/acme/apply/a1b2c3d4e5f6g7h8"
    }
  ],
  "registry_documents": [
    {
      "id": "990e8400-e29b-41d4-a716-446655440004",
      "source": "companies_house",
      "document_type": "NEWINC",
      "filing_date": "2018-02-01",
      "fetched_at": "2026-01-15T10:31:12.000Z",
      "download_url": "https://s3.amazonaws.com/..."
    },
    {
      "id": "aa0e8400-e29b-41d4-a716-446655440005",
      "source": "companies_house",
      "document_type": "AA",
      "filing_date": "2025-09-30",
      "fetched_at": "2026-01-15T10:31:15.000Z",
      "download_url": "https://s3.amazonaws.com/..."
    }
  ],
  "registry_documents_status": "complete",
  "created_at": "2026-01-15T10:30:00.000Z",
  "submitted_at": "2026-01-16T14:20:00.000Z",
  "completed_at": null
}
```

<Note>
  Presigned download URLs embedded in documents (including registry documents) expire after **60 seconds**. Generate fresh URLs by re-fetching the application if needed.
</Note>

## Errors

| Status | Error                                                | Cause                                                             |
| ------ | ---------------------------------------------------- | ----------------------------------------------------------------- |
| `401`  | `Invalid API key`                                    | API key is invalid, expired, or inactive                          |
| `401`  | `API key missing required scopes: applications:read` | Key lacks the required scope                                      |
| `404`  | `Application not found`                              | Application does not exist or belongs to a different organization |
| `500`  | `Internal server error`                              | An unexpected error occurred                                      |
