---
title: "Signup Start"
method: GET
path: "/api/signup/start"
tags: ["Signup Flow", "signup"]
---

# Signup Start

`GET /api/signup/start`

Sign-up entry point.

Two response modes, picked by query string:

1. NO ?confirmed (or ?confirmed != "1") -> return _signup_explainer_page,
   a self-contained HTML page that previews Google's account chooser +
   consent screen and lets the user click "Sign in with Google" to start
   the actual OAuth dance. The CTA on that page links to this same
   endpoint with ?confirmed=1.

2. ?confirmed=1 -> the original behavior: build the Google OAuth URL,
   set the state cookie, log signup_started/oauth_clicked funnel events,
   and 307 redirect to accounts.google.com.

The ?missing param is only honored on the explainer-page branch and is
a comma-separated list of scope URLs the user failed to grant on a
previous attempt; the page renders a warning banner with their plain-
English labels.

## Query parameters

- `ref` string, nullable
- `confirmed` string, nullable
- `missing` string, nullable

## Response `200`

Successful Response

- unknown

## Other responses

- `422` — Validation Error

---

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