---
title: "Provision a Google identity without sending an email or invitation"
method: POST
path: "/v1/control/applications/{application_id}/users/provision-google"
tags: ["Identity"]
---

# Provision a Google identity without sending an email or invitation

`POST /v1/control/applications/{application_id}/users/provision-google`

## Request

- Base URL: `/` (relative, and the document was published on a file host, not at the API’s origin)
- URL: `/v1/control/applications/{application_id}/users/provision-google`
- Auth: one of:
  - HTTP bearer
  - API key in cookie `p93_control_access`

Requires administrative control access. Never matches accounts by email or returns authentication credentials.

## Headers

- `Idempotency-Key` string, required

## Request body

- union
  - object
    - `google_sub` string, required: Opaque Google subject from a trusted administrative source. No whitespace or control characters; at most 255 UTF-8 bytes.
    - `reason` string, required
    - `user_id` string, uuid, required
    - `user` GoogleProvisionedUser
      - `email` string, email, required
      - `first_name` string
      - `last_name` string
      - `username` string, nullable
      - `locale` string: Canonical BCP 47 language tag such as en, de-CH, or pt-BR. Empty means no user preference.
      - `custom_attributes` object
  - object
    - `google_sub` string, required: Opaque Google subject from a trusted administrative source. No whitespace or control characters; at most 255 UTF-8 bytes.
    - `reason` string, required
    - `user_id` string, uuid
    - `user` GoogleProvisionedUser, required
      - `email` string, email, required
      - `first_name` string
      - `last_name` string
      - `username` string, nullable
      - `locale` string: Canonical BCP 47 language tag such as en, de-CH, or pt-BR. Empty means no user preference.
      - `custom_attributes` object

## Response `200`

Existing user linked, or linkage already exists.

- GoogleProvisioningResult
  - `user` User, required
    - `id` string, uuid, required
    - `application_id` string, uuid, required
    - `email` string, email, required
    - `first_name` string
    - `last_name` string
    - `username` string, nullable
    - `locale` string, required: Canonical BCP 47 language tag such as en, de-CH, or pt-BR. Empty means no user preference.
    - `email_verified` boolean, required
    - `is_org_verified` boolean, required
    - `status` 'active' | 'suspended' | 'pending_deletion' | 'anonymized' | 'deleted', required
    - `custom_attributes` object
    - `version` integer
  - `identity_id` string, uuid, required
  - `provider` 'google', required
  - `created_user` boolean, required

## Other responses

- `201`: User and identity created atomically.
- `409`: Conflicting account, identity, organization limit, or idempotency key.
- `422`: Invalid provisioning details.

## Changes

- **2026-10-17** `d0979a9e0ef4`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/supaapps/apis/platform93-api/changes/v1/control/applications/:application_id/users/provision-google/post.md)

---

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