---
title: "Complete app installation"
method: POST
path: "/user/{appId}/complete-installation"
tags: ["User"]
---

# Complete app installation

`POST /user/{appId}/complete-installation`

Submits the signed EIP2771 data to Gelato relay to complete the installation

## Path parameters

- `appId` number, required

## Request body

- CompleteInstallationRequest
  - `userControllerAddress` string, required — EOA address that controls the user smart wallet
  - `agentSignerAddress` string, required — The PKP address that will be used as the agent signer
  - `appInstallation` object, required — Signed EIP2771 typed data for permitAppVersion transaction
    - `typedDataSignature` string, required — The signature of the EIP2771 typed data
    - `dataToSign` object, required — The original EIP2771 typed data that was signed
  - `agentSmartAccountDeployment` object, required — Signed UserOperation for smart account deployment
    - `typedDataSignature` string, required — The signature of the UserOperation message hash
    - `userOperation` object, required — The UserOperation that was signed for smart account deployment
  - `sessionKeyApproval` object, required — Signed permission account data for session key approval
    - `typedDataSignature` string, required — The signature of the session key approval EIP-712 typed data

## Response `200`

Installation completed successfully

- CompleteInstallationResponse
  - `deployAgentSmartAccountTransactionHash` string, required — Transaction hash for smart account deployment
  - `serializedPermissionAccount` string, required — Serialized permission account that can be used by the PKP to sign transactions. The permission plugin will be automatically enabled on-chain when the PKP submits its first UserOperation.
  - `completeAppInstallationTransactionHash` string, required — Transaction hash for permitAppVersion (app installation completion)

## Other responses

- `400` — Bad request
- `404` — App not found
- `default` — Error

## Changes

- **2026-01-28** `c1c343b80d5e` — 1 warning
  - removed the request property `appId`
- **2026-01-27** `4b5bc3fbfad0` — 4 breaking, 2 warning
  - added the new required request property `agentSignerAddress`
  - added the new required request property `agentSmartAccountDeployment/userOperation`
  - added the new required request property `appId`
  - added the new required request property `userControllerAddress`
  - …2 more
- **2026-01-27** `7bb8a42077f8` — 4 breaking, 2 warning, 3 info
  - added the new required request property `agentSmartAccountDeployment`
  - added the new required request property `appInstallation`
  - added the new required request property `sessionKeyApproval`
  - removed the required property `transactionHash` from the response with the `200` status
  - …5 more
- **2026-01-07** `f7f4aae6fbd3` — 1 info
  - endpoint added
- **2025-06-19** `e514cea423bb` — 1 breaking
  - api path removed without deprecation

[Change history](https://skmtc.dev/lit-protocol/apis/vincent-registry-api/changes/user/:appId/complete-installation/post.md)

---

[API](https://skmtc.dev/lit-protocol/apis/vincent-registry-api.md) · [All operations](https://skmtc.dev/lit-protocol/apis/vincent-registry-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/lit-protocol/vincent-registry-api/revisions/825608de85fb/schema)
