---
title: "Finalize Dynamic Auth Flow"
method: POST
path: "/v1/identities/dynamic/finalize/{session_id}"
tags: ["Identities"]
---

# Finalize Dynamic Auth Flow

`POST /v1/identities/dynamic/finalize/{session_id}`

## Request

- Base URL: `https://api.anchorbrowser.io`
- URL: `https://api.anchorbrowser.io/v1/identities/dynamic/finalize/{session_id}`
- Auth: API key in header `anchor-api-key`

Persists the identity, browser profile, and captured credentials after the
flow reaches `authenticated`. The response reports whether the saved login
can be replayed unattended (`automatable`).

## Path parameters

- `session_id` string, required

## Request body

- AuthFlowV2FinalizeRequest
  - `identity_name` string: Optional name for the created identity.
  - `profile_name` string: Optional browser profile name. Defaults to `profile-<session_id>`.

## Response `200`

Identity created from the completed flow

- AuthFlowV2FinalizeResult
  - `identityId` string, required
  - `profileName` string, required
  - `automatable` boolean, required: Identity-level replay flag. False if any passed form option was not automatable. Distinct from `options[].automatable` on `decision`/`form` views, which is per choice.
  - `nonAutomatableReasons` string[], required: Why the login cannot be replayed unattended. Empty when `automatable` is true.

## Other responses

- `401`: Missing team context
- `404`: Auth flow or current step not found
- `409`: Flow must be authenticated before finalizing
- `500`: Failed to finalize

## Changes

- **2026-10-16** `b3bfdb98c79e`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/anchorbrowser/apis/anchorbrowser-api/changes/v1/identities/dynamic/finalize/:session_id/post.md)

---

[API](https://skmtc.dev/anchorbrowser/apis/anchorbrowser-api.md) - [All operations](https://skmtc.dev/anchorbrowser/apis/anchorbrowser-api/llms.txt) - [OpenAPI document](https://skmtc.dev/anchorbrowser/apis/anchorbrowser-api/revisions/9d755f22df0e?raw)
