---
title: "Upload the APNs auth key (.p8) for app push"
method: POST
path: "/v1/push/apns/{appId}"
tags: ["Push"]
---

# Upload the APNs auth key (.p8) for app push

`POST /v1/push/apns/{appId}`

## Request

- Base URL: `https://api.chat.ethora.com`
- URL: `https://api.chat.ethora.com/v1/push/apns/{appId}`
- Auth: HTTP bearer

Uploads an APNs auth key for direct APNs delivery (e.g. VoIP/PushKit
pushes, which FCM cannot deliver). The backend proxies it to the push
service, which stores it server-side — the key is never exposed back.
Sets `apnsKeyUploaded: true` on the app. `bundleId` defaults to the
app's `bundleId` when omitted.

## Path parameters

- `appId` string, required

## Response `200`

ok

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `403`: forbidden
- `404`: app not found
- `422`: validation failed (missing/invalid keyId, teamId, environment, bundleId, or .p8 file)
- `500`: Internal Server Error

---

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