---
title: "Callback"
method: GET
path: "/oauth/google-ads/callback"
tags: ["oauth"]
---

# Callback

`GET /oauth/google-ads/callback`

## Request

- Base URL: `https://api.adplug.app` (the document declares no server; this is the origin it was published from)
- URL: `https://api.adplug.app/oauth/google-ads/callback`
- Auth: none declared

Handle the OAuth callback from Google.

Google returns `?error=access_denied&state=...` (no `code`) when the user
clicks Deny at the consent screen. We mirror the LinkedIn callback shape
— accept `error` and a no-`code` request, redirect back to the caller's
return_to (onboarding) with the error banner — so the user lands on
Step 4 with a clear message instead of a 422 on the API host.

## Query parameters

- `code` string, nullable
- `state` string, nullable
- `error` string, nullable
- `error_description` string, nullable

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

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