---
title: "🔓 #26810 Вход через VK ID или Яндекс ID по одноразовому билету адреса возврата: запись по привязке к провайдеру, затем по email и телефону от провайдера (найденная получает привязку; email - только подтверждённый, иначе 403 email_not_confirmed); нет - пользователь-черновик с контактами и именем провайдера. Ответ - как у `signin/auth`."
method: POST
path: "/signin/provider/complete"
tags: ["Auth"]
---

# 🔓 #26810 Вход через VK ID или Яндекс ID по одноразовому билету адреса возврата: запись по привязке к провайдеру, затем по email и телефону от провайдера (найденная получает привязку; email - только подтверждённый, иначе 403 email_not_confirmed); нет - пользователь-черновик с контактами и именем провайдера. Ответ - как у \`signin/auth\`.

`POST /signin/provider/complete`

## Request

- Base URL: `http://localhost`
- URL: `http://localhost/signin/provider/complete`
- Auth: none required

#26810 Вход через VK ID или Яндекс ID по одноразовому билету адреса возврата: запись по привязке к провайдеру, затем по email и телефону от провайдера (найденная получает привязку; email - только подтверждённый, иначе 403 email_not_confirmed); нет - пользователь-черновик с контактами и именем провайдера. Ответ - как у `signin/auth`.

**Access:** `unauthorized` (0 ) · **Scope:** `write` · **только веб-сессия**

### TypeScript (copy-paste)

**`POST /signin/provider/complete`**

<details open><summary><b>Body</b></summary>

```typescript
export interface SigninProviderCompleteBody {
  ticket: string
}
```

</details>

<details open><summary><b>Response</b></summary>

```typescript
export type SigninProviderCompleteResponse = IServerResponse<Record<string, any>>

export interface IServerResponse<T = any> {
  code: number
  data: T
  srvTS: number
  rkey: string
}
```

</details>

> Полный файл типов: [`/docs/types`](/docs/types) · raw: [`/docs/api-types.ts`](/docs/api-types.ts)

## Headers

- `devID` string, uuid, required
- `tz` string, required
- `app` string, required
- `appVer` string, required
- `rKey` string

## Request body

- SigninProviderCompleteBody: JSON body for `signin/provider/complete`
  - `ticket` string, required

## Response `200`

OK — `IServerResponse<Record<string, any>>`

- object
  - `code` integer, required
  - `data` object, required: Response payload (нет ResponseData / doc.schema)
  - `srvTS` integer, required: Server timestamp (ms)
  - `rkey` string, required: Request key

## Other responses

- `400`: BadRequest / Validation — неверные params/body/headers
- `403`: AccessNotAllowed: params.code - email_not_confirmed (the provider email matches a user whose email is not confirmed)
- `404`: NotFound: params.code - provider_ticket (ticket unknown, expired, used or issued for another device)

---

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