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

# Register a wallet as a contact

> Register a wallet address as a workspace contact. Wallet addresses only: personal identifiers (email, phone, name) are rejected. Idempotent on the wallet, and the address is lower-cased. To attach an email, use a capture form instead.



## OpenAPI

````yaml /api-reference/openapi.json post /identify
openapi: 3.0.3
info:
  title: Onchain Suite API
  version: 1.0.0
  description: >-
    The server-to-server API. Authenticate with a secret (`sk_`) key and call
    these endpoints from your backend to register contacts, send events, message
    users, ingest consented captures, and feed automations. Secret keys are
    server-only: never ship one to a browser, a mobile app, or a public repo.
servers:
  - url: https://api.onchainsuite.com/api/v1
    description: Production
security:
  - secretKey: []
tags:
  - name: Contacts
    description: Register and list contacts.
  - name: Events
    description: Send product events that drive automations and segments.
  - name: Messaging
    description: Send in-app pushes and launch campaigns.
  - name: Forms
    description: Ingest consented captures from your backend.
  - name: Automation
    description: Feed trigger events into the automation runtime.
paths:
  /identify:
    post:
      tags:
        - Contacts
      summary: Register a wallet as a contact
      description: >-
        Register a wallet address as a workspace contact. Wallet addresses only:
        personal identifiers (email, phone, name) are rejected. Idempotent on
        the wallet, and the address is lower-cased. To attach an email, use a
        capture form instead.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - walletAddress
              properties:
                walletAddress:
                  type: string
                  example: 0xabc123...
      responses:
        '200':
          description: Registered.
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
        '400':
          description: A personal identifier was supplied (`PERSONAL_IDENTIFIER_REJECTED`).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Missing, invalid, or revoked secret key.
components:
  schemas:
    Error:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
            message:
              type: string
  securitySchemes:
    secretKey:
      type: http
      scheme: bearer
      description: >-
        Your secret key, for example `sk_live_...`. Send it as `Authorization:
        Bearer sk_live_...`. A `sk_test_...` key runs in test mode.

````

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