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

# Identify

> This endpoint creates a new user profile if the user doesn't exist yet. Otherwise, the user profile is updated based on the properties provided.



## OpenAPI

````yaml /api-reference/track/track.yml post /users/track
openapi: 3.0.3
info:
  title: Vero Track REST API
  description: >
    ## Introduction


    This documentation is for v2.0 of Vero's Track REST API. The URLs listed in
    this documentation are relative to `https://api.getvero.com/api/v2`.


    This API is very stable. v2.0 was released prior to 2016 and there have been
    no breaking changes since that time.


    ---


    ### Sending data with requests


    Unless otherwise specified, request data should be passed to the API as JSON
    objects via `POST`. The documentation for each API endpoint contains details
    of the parameters accepted by that endpoint.


    ---


    ### Supported ingest integrations


    The majority of our customers use tools like
    [Segment](https://www.getvero.com/integrations/segment-source/) or
    [Rudderstack](https://www.getvero.com/integrations/rudderstack/) to track
    and send data to Vero Cloud.


    See the full list of [Integrations](https://www.getvero.com/integrations/)
    for integrations that support this API. Use the "Data In: API" filter.


    ---


    ### Our SDKs


    Refer to our [Developer Guide](https://developers.getvero.com/) for more
    information on available SDKs.


    ---


    ### Questions or problems


    Have questions or can't get something to work? Get in touch via
    [support@getvero.com](mailto:support@getvero.com).


    ---


    ## Authentication


    Authentication against the Vero API is done using a valid Authentication
    Token. Authentication Tokens should be kept secret. They have the power to
    write data to your account and, in the future, will have the ability to read
    data too.


    To generate and access API credentials visit
    [Settings](https://app.getvero.com/settings/project) in your Vero account.


    Requests are authenticated by providing a parameter called `auth_token` with
    each request. This parameter must contain a valid and active Authentication
    Token.


    All API requests must be made over HTTPS. Calls made over plain HTTP will
    fail.


    ---


    ## Errors


    Vero uses conventional HTTP response codes to indicate the success or
    failure of an API request.


    Codes in the  `2xx`  range mean success, codes in the  `4xx`  mean there was
    an error in the data passed to Vero's API (such as missing parameters) and
    codes in the  `5xx`  range indicate an error with Vero's endpoint.


    |  Code|Description  |

    |--|--|

    |  **200 - OK**|  The request was successful|

    |  **400 - Bad request**|  Bad request|

    |  **401 - Unauthorized**|  Your credentials are invalid|

    |  **404 - Not Found**|  The resource doesn't exist|

    |  **50X - Internal Server Error**|  An error occurred with our API|
  version: 2.0.0
servers:
  - url: https://api.getvero.com/api/v2
security: []
tags:
  - name: Users
    description: >
      The `users` endpoint lets you create, update and manage the subscription
      status of your User records.
  - name: Tags
    description: >
      The `tags`` endpoint lets you add or remove tags to or from any of your
      Users.
  - name: Events
    description: |
      The `events` endpoint lets you track events based on actions a User takes.
paths:
  /users/track:
    post:
      tags:
        - Users
      summary: Identify
      description: >-
        This endpoint creates a new user profile if the user doesn't exist yet.
        Otherwise, the user profile is updated based on the properties provided.
      operationId: identify
      requestBody:
        $ref: '#/components/requestBodies/Identify'
      responses:
        '200':
          $ref: '#/components/responses/Success'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalError'
      security:
        - api_key: []
components:
  requestBodies:
    Identify:
      content:
        application/json:
          schema:
            properties:
              id:
                type: string
                description: The unique identifier of the customer.
                example: 1000
              email:
                type: string
                description: The email of the customer.
                example: test@example.com
              channels:
                type: array
                description: >-
                  A valid JSON array containing hashes of key/value pairs that
                  represent the user's device token. Each hash should represent
                  a single device token and include the fields type, address,
                  and platform.
                items:
                  type: object
                  properties:
                    type:
                      type: string
                      example: push
                    address:
                      type: string
                      example: UNIQUE_DEVICE_TOKEN
                    platform:
                      type: string
                      example: android
              data:
                description: >-
                  A valid JSON hash containing key value pairs that represent
                  the custom user properties you want to update. The `language`,
                  `timezone` and `userAgent` attributes are reserved properties
                  that may be updated automatically by our SDKs. You can use
                  these properties but bear in mind they may be overwritten if
                  using our SDKs or integrations. All other keys are freeform
                  and can be defined by you.
                type: object
                example:
                  first_name: Damien
                  last_name: Brzoska
                  timezone: -10
                properties:
                  timezone:
                    type: integer
                    description: The timezone of the user as a GMT offset (-7, 10, etc.)
                    example: -7
                  language:
                    type: string
                    description: >-
                      The IETF, ISO 3166-1 formatted language last observed when
                      the user was browsing your site.
                  userAgent:
                    type: string
                    description: >-
                      The user agent last observed when the user was browsing
                      your site.
                additionalProperties:
                  type: string
  responses:
    Success:
      description: OK
      content:
        application/json:
          schema:
            type: object
            properties:
              status:
                type: integer
                format: int32
                example: 200
              message:
                type: string
                example: Success.
    BadRequest:
      description: Bad request
      content:
        application/json:
          schema:
            type: object
            properties:
              status:
                type: integer
                format: int32
                example: 400
              message:
                type: string
                example: Bad Request
    Unauthorized:
      description: Unauthorized
      content:
        application/json:
          schema:
            type: object
            properties:
              status:
                type: integer
                format: int32
                example: 401
              message:
                type: string
                example: >-
                  Invalid authentication: You must provide a valid auth_token to
                  access this resource.
    NotFound:
      description: Not Found
      content:
        application/json:
          schema:
            type: object
            properties:
              status:
                type: integer
                format: int32
                example: 404
              message:
                type: string
                example: The resource doesn't exist
    InternalError:
      description: Internal server error
      content:
        application/json:
          schema:
            type: object
            properties:
              status:
                type: integer
                format: int32
                example: 500
              message:
                type: string
                example: An error occurred with our API
  securitySchemes:
    api_key:
      type: apiKey
      name: auth_token
      in: query

````