---
title: "Sign in or claim via Facebook"
method: POST
path: "/v1/auth/social/facebook"
tags: ["claim"]
---

# Sign in or claim via Facebook

`POST /v1/auth/social/facebook`

Authenticate with a Facebook identity. Handles both login and
auto-claim in a single call:

- If the Facebook identity is **verified** on an existing account → **login**
- If the Facebook identity is **unverified** on a pre-registered account → **auto-claim**
- If no matching account exists → **404** (call ``/register`` with email + handle)

Rate-limited per client IP.

## Request body

- FacebookSocialAuthRequest — Request model for ``POST /v1/auth/social/facebook``.
  - `access_token` string, required — Platform OAuth access token obtained client-side

## Response `200`

Successful Response

- LoginCompleteResponse — Response model for login complete.
  - `account_id` string, required — Account ID
  - `api_key` string, required — Grove API key (JWT)
  - `identity_type` string, required — Primary identity type
  - `identity_value` string, required — Primary identity value
  - `tipping_address` string, required — Server wallet address (for tipping)
  - `onchain_address` string, required

## Other responses

- `400` — Invalid or expired OAuth access token
- `404` — No account found — call /register to create one
- `422` — Validation Error
- `429` — Rate limit exceeded for this client IP

---

[API](https://skmtc.net/grove/apis/grove-api.md) · [All operations](https://skmtc.net/grove/apis/grove-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/grove/grove-api/versions/f286b48a8105/schema)
