---
title: "Create sandbox bank application dry-run"
method: POST
path: "/banks/current/applications"
tags: ["Banks"]
---

# Create sandbox bank application dry-run

`POST /banks/current/applications`

## Request

- Base URL: `https://platform-api.homejourney.sg/v1`
- URL: `https://platform-api.homejourney.sg/v1/banks/current/applications`
- Auth: HTTP bearer

Creates deterministic sandbox bank application-intake dry-run metadata when the authenticated automation client has `banks.applications.write`. External URL: `/v1/banks/current/applications`. Current Next.js implementation path: `/api/platform/v1/banks/current/applications`. An exact eligible host grant may add a prepared action and first-party continuation for internal review; the API cannot confirm or reject it. This sandbox-only route requires `Idempotency-Key`, `enable_platform_bank_frontends`, and `enable_platform_bank_workflow_write`; it records replay-safe dry-run and prepared-action metadata only and never persists a bank application row, submits to a bank, calls providers, exposes bank secrets, exposes raw MyInfo, exposes credit bureau data, exposes bank statements, exposes raw document contents, exposes NRIC/FIN, exposes income-proof contents, sends callbacks, sends borrower notifications, returns signed storage URLs, or claims API Gateway/enterprise ingress readiness. Live bank application creation remains unavailable until promotion gates have REST, consent, audit, sandbox, document handoff, callback, operations, and enterprise-ingress evidence. Bank pilot posture remains information/referral and pre-approval only, recommendation and live bank-decision claims remain deferred, and partner-status publication remains private-first.

## Headers

- `X-Correlation-Id` string
- `Idempotency-Key` string, required

## Request body

- PlatformBankApplicationCreateRequest
  - `borrower_fixture_id` 'eligible_borrower' | 'ineligible_borrower'
  - `product_code` 'SANDBOX_FIXED_HOME' | 'SANDBOX_SORA_HOME'
  - `consent_text_version` 'bank-sandbox-v1'

## Response `202`

Sandbox bank application create dry-run metadata with an optional first-party prepared-action continuation.

- PlatformBankApplicationCreateResponse
  - `application` PlatformBankApplicationSummary, required
    - `id` string, required
    - `sandbox_fixture_id` string, required
    - `application_state` 'missing_document' | 'approved' | 'rejected', required
    - `bank_display_name` string, required
    - `borrower_reference` string, required
    - `consent_text_version` string, required
    - `document_manifest_required` true, required
    - `raw_application_data_exposed` false, required
    - `livemode` false, required
    - `updated_at` string, date-time, required
  - `prepared_action` PlatformMortgageBankPreparedAction
    - `action_id` string, required
    - `status` 'prepared', required
    - `required_scope` 'banks.applications.write', required
    - `required_confirmation` 'first_party_app', required
    - `idempotency_required` true, required
    - `expires_at` string, date-time, required
    - `side_effects` object, required
      - `prepared_action_created` true, required
      - `action_prepared_event_created` true, required
      - `application_persisted` false, required
      - `bank_system_write_performed` false, required
      - `callback_delivered` false, required
      - `raw_application_data_exposed` false, required
      - `raw_myinfo_exposed` false, required
      - `raw_document_contents_exposed` false, required
    - `consent_boundary` object, required
      - `consent_text_version` 'bank-sandbox-v1', required
      - `consent_categories` string[], required
      - `document_manifest_metadata_only` true, required
      - `signed_document_handoff_available` false, required
    - `safety` object, required
      - `delegated` false, required
      - `api_confirmation_allowed` false, required
      - `api_rejection_allowed` false, required
    - `continuation` object, required
      - `url` string, uri, required
      - `handoff_required` true, required
      - `reason` 'first_party_confirmation_required', required
    - `principal` Principal, required (unresolved $ref)
  - `status` PlatformBankApplicationStatus, required
    - `application_state` 'missing_document' | 'approved' | 'rejected', required
    - `safe_display_label` string, required
    - `borrower_action_required` boolean, required
    - `next_action` 'upload_required_documents' | 'await_bank_review' | 'application_closed', required
    - `document_manifest_available` true, required
    - `callback_requested` false, required
    - `live_bank_system_synced` false, required
  - `application_intake` PlatformBankApplicationIntake, required
    - `borrower_fixture_id` 'eligible_borrower' | 'ineligible_borrower', required
    - `product_code` 'SANDBOX_FIXED_HOME' | 'SANDBOX_SORA_HOME', required
    - `consent_text_version` 'bank-sandbox-v1', required
    - `consent_categories` string[], required
    - `document_manifest_next_action` 'review_document_requirements', required
    - `application_create_dry_run` true, required
    - `application_persisted` false, required
    - `submitted_to_bank` false, required
    - `provider_call_performed` false, required
    - `raw_borrower_data_exposed` false, required
    - `livemode` false, required
  - `application_boundary` PlatformBankApplicationBoundary, required
    - `sandbox_only` true, required
    - `status_metadata_only` true, required
    - `bank_secrets_redacted` true, required
    - `raw_application_data_redacted` true, required
    - `raw_myinfo_redacted` true, required
    - `credit_bureau_data_redacted` true, required
    - `raw_document_contents_redacted` true, required
    - `nric_fin_redacted` true, required
    - `income_proof_contents_redacted` true, required
    - `bank_statement_contents_redacted` true, required
    - `application_create_dry_run` true, required
    - `provider_submission_deferred` true, required
    - `application_write_deferred` true, required
    - `status_write_deferred` true, required
    - `callback_delivery_deferred` true, required
    - `application_persisted` false, required
  - `side_effects` PlatformBankSandboxSideEffects, required
    - `live_callback_sent` false, required
    - `email_sent` false, required
    - `sms_sent` false, required
    - `whatsapp_sent` false, required
    - `document_link_sent` false, required
    - `bank_system_write_performed` false, required
    - `payment_event_created` false, required
    - `production_webhook_sent` false, required
  - `idempotency_key_hash` string, required
  - `livemode` false, required
  - `request_id` string, required

## Other responses

- `400`: Request validation failed.
- `401`: Missing or invalid platform API key.
- `403`: Credential, environment, or scope is not allowed.
- `404`: Platform API feature or resource is not available.
- `409`: Idempotency key is in progress or conflicts with an earlier request body.
- `429`: Rate limit exceeded.
- `500`: Unexpected platform API failure.

---

[API](https://skmtc.dev/homejourney/apis/homejourney-platform-api.md) · [All operations](https://skmtc.dev/homejourney/apis/homejourney-platform-api/llms.txt) · [OpenAPI document](https://skmtc.dev/homejourney/apis/homejourney-platform-api/revisions/a2c6fe063db1?raw)
