> ## Documentation Index
> Fetch the complete documentation index at: https://docs.member.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Verify

> Redeem an emailed Google verification link and sign in.

`token` is the value after `#` in the link mailed when Google sign-in
matched an account whose email was not verified. On success the email is
verified, that exact Google account is linked, and a normal platform
session is returned. Everything issued before the inbox was proven stops
working: every earlier session is signed out, the password no longer
signs in (set a new one with password reset), and the account's API keys
and platform OAuth grants are revoked. Team memberships are kept.

The link works once and expires after 15 minutes. It returns 410
`google_verification_expired` when expired, already used, or the account
changed since it was sent (for example the email was verified by password
reset; sign in with Google again instead). It returns 409
`google_identity_in_use` when that Google account was linked to another
account in the meantime.



## OpenAPI

````yaml /openapi/mio-openapi.json post /api/v1/auth/google/verify
openapi: 3.1.0
info:
  description: >-
    Production API reference for Membership.io. Use the authored guides for
    workflows and the generated endpoint pages for exact parameters and schemas.
  title: Membership.io API
  version: 0.1.0
servers:
  - description: Production
    url: https://api.member.dev
security:
  - bearerAuth: []
paths:
  /api/v1/auth/google/verify:
    post:
      tags:
        - auth
      summary: Verify
      description: >-
        Redeem an emailed Google verification link and sign in.


        `token` is the value after `#` in the link mailed when Google sign-in

        matched an account whose email was not verified. On success the email is

        verified, that exact Google account is linked, and a normal platform

        session is returned. Everything issued before the inbox was proven stops

        working: every earlier session is signed out, the password no longer

        signs in (set a new one with password reset), and the account's API keys

        and platform OAuth grants are revoked. Team memberships are kept.


        The link works once and expires after 15 minutes. It returns 410

        `google_verification_expired` when expired, already used, or the account

        changed since it was sent (for example the email was verified by
        password

        reset; sign in with Google again instead). It returns 409

        `google_identity_in_use` when that Google account was linked to another

        account in the meantime.
      operationId: auth.post_auth_post_auth_google_verify
      requestBody:
        content:
          application/vnd.api+json:
            schema:
              $ref: '#/components/schemas/GoogleVerifyRequest'
        required: true
      responses:
        '200':
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/TokenResponse'
          description: Successful Response
        '403':
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/JsonApiErrorResponse'
          description: Untrusted origin
        '409':
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/JsonApiErrorResponse'
          description: This Google account is already linked to another account
        '410':
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/JsonApiErrorResponse'
          description: Verification link expired, already used, or the account changed
        '422':
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/JsonApiErrorResponse'
          description: Unprocessable Content
        '429':
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/JsonApiErrorResponse'
          description: Rate limited
components:
  schemas:
    GoogleVerifyRequest:
      additionalProperties: false
      properties:
        token:
          maxLength: 512
          minLength: 1
          title: Token
          type: string
      required:
        - token
      title: GoogleVerifyRequest
      type: object
    TokenResponse:
      properties:
        access_token:
          title: Access Token
          type: string
        expires_in:
          title: Expires In
          type: integer
        refresh_token:
          title: Refresh Token
          type: string
        token_type:
          default: Bearer
          title: Token Type
          type: string
      required:
        - access_token
        - refresh_token
        - expires_in
      title: TokenResponse
      type: object
    JsonApiErrorResponse:
      description: Error JSON:API response.
      properties:
        errors:
          items:
            $ref: '#/components/schemas/JsonApiError'
          title: Errors
          type: array
        meta:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Meta
      required:
        - errors
      title: JsonApiErrorResponse
      type: object
    JsonApiError:
      properties:
        code:
          anyOf:
            - type: string
            - type: 'null'
          title: Code
        detail:
          anyOf:
            - type: string
            - type: 'null'
          title: Detail
        id:
          anyOf:
            - type: string
            - type: 'null'
          title: Id
        meta:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Meta
        source:
          anyOf:
            - additionalProperties:
                type: string
              type: object
            - type: 'null'
          title: Source
        status:
          title: Status
          type: string
        title:
          title: Title
          type: string
      required:
        - status
        - title
      title: JsonApiError
      type: object
  securitySchemes:
    bearerAuth:
      bearerFormat: JWT or mio_sk API key
      description: >-
        Send platform JWTs, contact JWTs, or team API keys as `Authorization:
        Bearer <token>`.
      scheme: bearer
      type: http

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.