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

# Send Invite by Email

> Emails the individual associated with the profile a magic link that signs them in and starts their assessment.
The link is valid for 7 days. Call this endpoint again whenever a fresh link is needed, for example after the
previous one expired or after issuing a retake.

The profile must have an email address; otherwise the request is rejected with `400`.


<Note>Create the profile first with [Create Profile](/api-reference/endpoints/post-profile). Creating a profile does not send anything; this endpoint delivers the assessment.</Note>


## OpenAPI

````yaml POST /profile/{profileId}/invite/email
openapi: 3.1.0
info:
  title: Profile Behavior API
  description: >
    Unlock actionable behavioral insights for leadership, teamwork, recruiting,
    and team culture.

    Profile delivers powerful assessments, analytics, and reporting for
    businesses, athletic teams, and higher education.


    For full product information, code samples, and API reference, see our
    [support documentation](https://support.profilebehavior.com).


    > **LLMs and AI agents**: See
    [llms.txt](https://support.profilebehavior.com/llms.txt) for a
    machine-readable index of all documentation pages.


    > **MCP connector:** LLM clients (ChatGPT apps, Claude connectors) speak to
    `/mcp` over streamable HTTP. They discover OAuth automatically via
    [/.well-known/oauth-protected-resource](https://vanguard.profilebehavior.com/.well-known/oauth-protected-resource),
    returned in the `WWW-Authenticate` header on any 401.


    > **Legacy manifests:**
      - [/.well-known/ai-plugin.json](https://vanguard.profilebehavior.com/.well-known/ai-plugin.json)
      - [/.well-known/mcp.json](https://vanguard.profilebehavior.com/.well-known/mcp.json)
  version: 3.1.0
  termsOfService: https://profilebehavior.com/legal/terms
  contact:
    name: Support
    url: https://profilebehavior.com/contact
    email: support@profilebehavior.com
  x-llm-sitemap: https://support.profilebehavior.com/llms.txt
  x-documentation-site: https://support.profilebehavior.com
  x-ai-plugin-manifest: https://vanguard.profilebehavior.com/.well-known/ai-plugin.json
  x-mcp-manifest: https://vanguard.profilebehavior.com/.well-known/mcp.json
  x-mcp-endpoint: https://vanguard.profilebehavior.com/mcp
  x-oauth-protected-resource: https://vanguard.profilebehavior.com/.well-known/oauth-protected-resource
servers:
  - url: https://vanguard.profilebehavior.com/api/v4
    description: >-
      Default. Routes each request to the nearest region and responds 421 if the
      account lives elsewhere.
  - url: https://vanguard-us.profilebehavior.com/api/v4
    description: United States
  - url: https://vanguard-eu.profilebehavior.com/api/v4
    description: European Union
  - url: https://vanguard-sea.profilebehavior.com/api/v4
    description: Singapore
security:
  - M2M: []
  - OAuth2: []
tags:
  - name: test
    description: Endpoints for testing the API.
  - name: assessment_invites
    description: Information on sending invitations to take the assessment.
  - name: assessments
    description: Behavioral, leadership, and communication assessment endpoints.
  - name: accounts
    description: >-
      Endpoints for retrieving and managing account and organization
      information.
  - name: fixtures
    description: Endpoints for retrieving fixture data content such as report language.
  - name: playbook_ai
    description: Endpoints for generating and retrieving Playbook AI related content.
  - name: profiles
    description: Endpoints for individual behavioral profile management.
  - name: resource_aliases
    description: >-
      Endpoints for managing resource alias records that link Profile data to
      custom defined keys.
  - name: tags
    description: >-
      Endpoints for individual profile tags, categorization, and group
      management.
paths:
  /profile/{profileId}/invite/email:
    post:
      tags:
        - assessment_invites
      summary: Send an assessment invite by email
      description: >
        Emails the individual associated with the profile a magic link that
        signs them in and starts their assessment.

        The link is valid for 7 days. Call this endpoint again whenever a fresh
        link is needed, for example after the

        previous one expired or after issuing a retake.


        The profile must have an email address; otherwise the request is
        rejected with `400`.
      operationId: EmailProfileMagicLink
      parameters:
        - name: profileId
          in: path
          description: |
            ID of the profile to invite.
          required: true
          schema:
            type: string
      responses:
        '204':
          description: Success - the invite email was sent.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
              example:
                code: 204
                status: success
        '400':
          description: >-
            Bad Request - the profile ID is not a valid ID, or the profile has
            no email address.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                code: 400
                error:
                  message: Profile has no email address
                  timestamp: '2025-01-01T09:42:52.329056-05:00'
                status: error
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/PaymentRequired'
        '403':
          description: >
            Forbidden - the profile does not exist or is not associated with
            your account (as an active or pending profile), or your account is
            paused.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                code: 403
                error:
                  message: Access denied
                  timestamp: '2025-01-01T09:42:52.329056-05:00'
                status: error
        '421':
          $ref: '#/components/responses/MisdirectedRequest'
        '500':
          $ref: '#/components/responses/InternalError'
components:
  schemas:
    Success:
      type: object
      description: >
        Standard response object for successful single-resource requests in the
        Profile Behavior API. Contains an HTTP status code, the returned
        resource data, and a status indicator.
      required:
        - code
      properties:
        code:
          type: integer
          format: int32
          description: HTTP status code of the successful response.
        status:
          type: string
          description: Always "success" for successful responses.
          enum:
            - success
    Error:
      type: object
      description: >
        Standard error response object returned by the Profile Behavior API.
        Contains the HTTP status code, a human-readable message, and the time
        the error occurred.
      required:
        - code
        - error
        - status
      properties:
        code:
          type: integer
          format: int32
          description: HTTP status code associated with the error.
        error:
          type: object
          required:
            - message
            - timestamp
          properties:
            message:
              type: string
              description: A human-readable summary describing the error.
            timestamp:
              type: string
              format: date-time
              description: ISO 8601 timestamp when the error occurred.
        status:
          type: string
          description: Always "error" for error responses.
          enum:
            - error
    RegionError:
      allOf:
        - $ref: '#/components/schemas/Error'
        - type: object
          required:
            - region
          properties:
            region:
              type: object
              description: >-
                The region that serves this account. Send the request again to
                the API in this region.
              required:
                - zone
                - apiUrl
              properties:
                zone:
                  type: string
                  description: Region identifier.
                  example: EU
                apiUrl:
                  type: string
                  format: uri
                  description: >-
                    Root URL of the API in that region. The v4 base URL is this
                    value followed by /v4.
                  example: https://vanguard-eu.profilebehavior.com/api
  responses:
    Unauthorized:
      description: Unauthorized - authentication required.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            code: 401
            error:
              message: Invalid token
              timestamp: '2025-01-01T09:42:52.329056-05:00'
            status: error
    PaymentRequired:
      description: >-
        Payment Required - the account's billing status does not permit this
        request, for example an expired trial or a trial account that has
        reached its report limit.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            code: 402
            error:
              message: Maximum reports reached for trial account
              timestamp: '2025-01-01T09:42:52.329056-05:00'
            status: error
    MisdirectedRequest:
      description: >-
        Misdirected Request. The account belongs to a different region. Send the
        request again to the API in the region named in the response.
      headers:
        X-Profile-Region:
          description: Region identifier of the account's home region.
          schema:
            type: string
            example: EU
        X-Profile-Region-Url:
          description: Root URL of the API in the account's home region.
          schema:
            type: string
            format: uri
            example: https://vanguard-eu.profilebehavior.com/api
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/RegionError'
          example:
            code: 421
            error:
              message: This account is served from another region
              timestamp: '2025-01-01T09:42:52.329056-05:00'
            region:
              zone: EU
              apiUrl: https://vanguard-eu.profilebehavior.com/api
            status: error
    InternalError:
      description: >-
        Internal Server Error - an unexpected error occurred while processing
        the request. Retry the request; if the problem persists, contact
        support.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            code: 500
            error:
              message: Internal error
              timestamp: '2025-01-01T09:42:52.329056-05:00'
            status: error
  securitySchemes:
    M2M:
      type: http
      scheme: bearer
    OAuth2:
      type: oauth2
      flows:
        authorizationCode:
          authorizationUrl: https://login.profilebehavior.com/oauth/authorize
          tokenUrl: https://login.profilebehavior.com/oauth/token
          scopes:
            profiles:read: Read profiles and behavioral summaries (scores, AI debriefs)
            profiles:write: Create, update, delete profiles and send assessment invites
            tags:manage: Create, update, delete, and assign tags
            account:read: Read account details, assessments, and resource aliases
            account:write: Update account settings and resource aliases
      description: >
        OAuth 2.1 authorization code flow with PKCE. Use this whenever your

        integration acts on behalf of a specific Profile user: third-party

        apps, AI agents and MCP servers, and any browser-based or CLI tool

        a user signs in to.


        Tokens issued under this scheme are scoped to one Profile account

        (the one the user consented from) and carry OAuth scopes that

        narrow what the integration can do.


        Discovery is served at

        [/.well-known/oauth-protected-resource](/.well-known/oauth-protected-resource).

        The authorization server is Stytch Connected Apps, which supports

        Dynamic Client Registration for on-the-fly clients (e.g. MCP

        agents) in addition to pre-registered integrations.

````

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