---
title: "Instagram Oauth Complete"
method: POST
path: "/oauth/instagram/complete"
tags: ["oauth"]
---

# Instagram Oauth Complete

`POST /oauth/instagram/complete`

## Request

- Base URL: `https://api.reeldrop.io` (the document declares no server; this is the origin it was published from)
- URL: `https://api.reeldrop.io/oauth/instagram/complete`
- Auth: HTTP bearer

Finish an Instagram connect: consume the state, exchange the code,
save the account.

Authenticated, and bound to the initiator: the state row names the Clerk
user who called /start, and only that user may complete it. A victim who
was sent somebody else's connect link is either signed out (the frontend
sends them to sign in and they arrive here as themselves) or signed in as
someone else — either way the identity check fails before the code is
exchanged, so their Instagram account is never linked anywhere.

Answers 200 with `status` for every flow outcome, including the refusals,
because the completion page turns the answer straight into the success or
error page and needs the blocked-by details a 4xx would lose.

## Request body

- OAuthCompleteBody
  - `code` string, required
  - `state` string, required

## Response `200`

Successful Response

- OAuthCompleteResponse
  - `status` string, required
  - `username` string, nullable
  - `reason` string, nullable
  - `ig_account` string, nullable
  - `ig_workspace` string, nullable
  - `ig_login` string, nullable

## Other responses

- `422`: Validation Error

---

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