---
title: "Exchange a native Sign in with Apple credential for Spoonjoy app tokens"
method: POST
path: "/api/v1/auth/apple/native"
tags: ["Auth"]
---

# Exchange a native Sign in with Apple credential for Spoonjoy app tokens

`POST /api/v1/auth/apple/native`

## Request

- Base URL: `https://spoonjoy.app`
- URL: `https://spoonjoy.app/api/v1/auth/apple/native`
- Auth: none required

## Headers

- `X-Request-Id` string

## Request body

- NativeAppleSignInRequest
  - `identityToken` string, required: JWT identity token returned by native Sign in with Apple.
  - `rawNonce` string, required: The un-hashed nonce generated by the native app for this Apple authorization request.
  - `email` string, nullable: Apple email fallback from the native credential, used only when the verified token omits email.
  - `fullName` string, nullable: Display name from the native Apple credential when Apple returns it on first sign-in.

## Response `201`

Success

- NativeAppleSignInEnvelope
  - `ok` unknown, required
  - `requestId` string, required
  - `data` NativeAppleSignInTokenData, required
    - `action` 'user_created' | 'user_logged_in', required
    - `userId` string, required
    - `client_id` string, required
    - `access_token` string, required
    - `refresh_token` string, required
    - `token_type` 'Bearer', required
    - `expires_in` 900, required
    - `scope` string, required

## Other responses

- `400`: Errors: invalid_json, validation_error
- `401`: Errors: invalid_token
- `405`: Errors: method_not_allowed
- `429`: Errors: rate_limited
- `500`: Errors: internal_error
- `503`: Errors: temporarily_unavailable

---

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