---
title: "Upsert Application"
method: PUT
path: "/api/v1/app/{app_id}"
tags: ["Application"]
---

# Upsert Application

`PUT /api/v1/app/{app_id}`

Create or update an application.

## Path parameters

- `app_id` string, required — The Application's ID or UID.

## Request body

- ApplicationIn
  - `metadata` object
  - `name` string, required — Application name for human consumption.
  - `throttleRate` integer, nullable — Maximum messages per second to send to this application. Outgoing messages will be throttled to this rate.
  - `uid` string, nullable — Optional unique identifier for the application.

## Response `200`

- ApplicationOut
  - `createdAt` string, date-time, required
  - `id` string, required — The Application's ID.
  - `metadata` object, required
  - `name` string, required — Application name for human consumption.
  - `throttleRate` integer, nullable — Maximum messages per second to send to this application. Outgoing messages will be throttled to this rate.
  - `uid` string, nullable — Optional unique identifier for the application.
  - `updatedAt` string, date-time, required

## Other responses

- `201`
- `400` — Bad request
- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not Found
- `409` — Conflict
- `422` — Validation Error
- `429` — Too Many Requests

## Changes

- **2026-08-19** `dc130bd1b074` — 3 warning, 1 info
  - removed the request property `rateLimit`
  - removed the optional property `rateLimit` from the response with the `200` status
  - removed the optional property `rateLimit` from the response with the `201` status
  - api operation id `v1.application.update` removed and replaced with `v1.application.upsert`

[Change history](https://skmtc.dev/svix/apis/svix-api/changes/api/v1/app/:app_id/put.md)

---

[API](https://skmtc.dev/svix/apis/svix-api.md) · [All operations](https://skmtc.dev/svix/apis/svix-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/svix/svix-api/revisions/50dde67d2d2d/schema)
