---
title: "Upsert app install convergence state"
method: POST
path: "/apply/v1/app-installs"
tags: ["Apply"]
---

# Upsert app install convergence state

`POST /apply/v1/app-installs`

## Request

- Base URL: `https://api.run402.com`
- URL: `https://api.run402.com/apply/v1/app-installs`
- Auth: API key in header `SIGN-IN-WITH-X`

Records per-project/per-app convergence state for run402 up. The state is unique by project_id and app_key and must not contain secret values.

## Request body

- object
  - `project_id` string, required
  - `app_key` string, required
  - `status` 'requested' | 'planning' | 'applying' | 'active' | 'failed'
  - `manifest_digest` unknown
  - `graph_digest` unknown
  - `source` object
  - `manifest` object
  - `resources` object
  - `bindings` object
  - `last_operation_id` unknown
  - `error` unknown

## Response `200`

App install state

- AppInstallState
  - `id` string, required
  - `project_id` string, required
  - `app_key` string, required
  - `status` 'requested' | 'planning' | 'applying' | 'active' | 'failed', required
  - `manifest_digest` unknown
  - `graph_digest` unknown
  - `source` object, required
  - `manifest` object, required
  - `resources` object, required
  - `bindings` object, required
  - `last_operation_id` unknown
  - `error` unknown
  - `created_at` string, date-time, required
  - `updated_at` string, date-time, required

---

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