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

# Reveal contacts

> Reveals full contact identity and contact channels with shared contact credits and optional idempotency protection.



## OpenAPI

````yaml /openapi.json post /contacts/reveal
openapi: 3.1.0
info:
  title: StoreInspect API
  version: 1.0.0
  description: >-
    Database-backed Shopify store and contact intelligence API. Store and
    contact data require a paid StoreInspect plan; existing keys can still
    access billing recovery endpoints after paid access lapses.
servers:
  - url: https://storeinspect.com/api/v1
security: []
tags:
  - name: usage
    x-displayName: Usage
    x-group: Usage
    description: >-
      API access state, request quotas, search-row quota, and shared
      contact-credit usage.
  - name: billing
    x-displayName: Billing
    x-group: Billing
    description: >-
      Read subscription state and create short-lived Stripe-hosted subscription
      or management links.
  - name: taxonomy
    x-displayName: Taxonomy
    x-group: Taxonomy
    description: >-
      Filter values, labels, and metadata used by store and contact search
      requests.
  - name: stores
    x-displayName: Stores
    x-group: Stores
    description: >-
      Store lookup, store search, and batch domain enrichment for Shopify
      accounts.
  - name: contacts
    x-displayName: Contacts
    x-group: Contacts
    description: Contact preview search and credit-based contact reveal workflows.
paths:
  /contacts/reveal:
    post:
      tags:
        - contacts
      summary: Reveal contacts
      description: >-
        Reveals full contact identity and contact channels with shared contact
        credits and optional idempotency protection.
      operationId: revealContacts
      parameters:
        - name: Idempotency-Key
          in: header
          required: false
          schema:
            type: string
            maxLength: 255
          description: >-
            Optional key used to safely retry a contact reveal request without
            spending credits twice.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ContactRevealRequest'
      responses:
        '200':
          description: Full contact data for contacts revealed with shared contact credits.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContactRevealResponse'
        '400':
          description: Invalid contact IDs.
        '401':
          description: Missing or invalid API key.
        '402':
          description: >-
            Not enough contact credits. Trial users receive a billing action
            when ending the trial would unlock paid Pro credits immediately.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
              examples:
                trialCreditsExhausted:
                  summary: Trial credits exhausted
                  value:
                    error:
                      type: quota_error
                      code: insufficient_contact_credits
                      message: >-
                        You have used all 250 trial contact credits. Start paid
                        Pro now to unlock 1000 monthly credits.
                      param: contact_ids
                      billing:
                        action: end_trial_to_unlock_pro_credits
                        current_limit: 250
                        paid_plan_limit: 1000
                        trial_ends_at: '2026-07-11T01:03:57.000Z'
                        url: https://storeinspect.com/dashboard/settings/billing
                      request_id: req_abc123
        '403':
          description: The account does not have API access.
        '404':
          description: No revealable contacts were found.
      security:
        - bearerAuth: []
components:
  schemas:
    ContactRevealRequest:
      type: object
      additionalProperties: false
      properties:
        contact_ids:
          type: array
          minItems: 1
          maxItems: 10
          items:
            type: string
            pattern: ^ct_[A-Za-z]+_[A-Za-z]{16}$
      required:
        - contact_ids
    ContactRevealResponse:
      type: object
      properties:
        object:
          type: string
          const: contact_reveal_result
        credits:
          type: object
          properties:
            spent:
              type: integer
              minimum: 0
            remaining:
              type: integer
              minimum: 0
          required:
            - spent
            - remaining
        data:
          type: array
          items:
            $ref: '#/components/schemas/Contact'
        request_id:
          type: string
      required:
        - object
        - credits
        - data
        - request_id
    ApiErrorResponse:
      type: object
      properties:
        error:
          type: object
          properties:
            type:
              type: string
              enum:
                - authentication_error
                - permission_error
                - invalid_request_error
                - rate_limit_error
                - quota_error
                - not_found_error
                - server_error
            code:
              type: string
            message:
              type: string
            param:
              type: string
            billing:
              $ref: '#/components/schemas/BillingAction'
            request_id:
              type: string
          required:
            - type
            - code
            - message
            - request_id
      required:
        - error
    Contact:
      type: object
      properties:
        id:
          type: string
          pattern: ^ct_[A-Za-z]+_[A-Za-z]{16}$
        object:
          type: string
          const: contact
        full_name:
          type:
            - string
            - 'null'
        first_name:
          type:
            - string
            - 'null'
        last_name:
          type:
            - string
            - 'null'
        title:
          type:
            - string
            - 'null'
        role:
          type:
            - string
            - 'null'
        seniority:
          type: string
          enum:
            - executive
            - decision_maker
            - other
        linkedin_url:
          type:
            - string
            - 'null'
        reveal_status:
          type: string
          enum:
            - newly_revealed
            - already_revealed
        charged:
          type: boolean
        emails:
          type: array
          items:
            type: object
            properties:
              email:
                type: string
              status:
                type: string
              type:
                type: string
              is_primary:
                type: boolean
        phones:
          type: array
          items:
            type: object
            properties:
              phone:
                type: string
              type:
                type: string
              is_primary:
                type: boolean
        store:
          type: object
          properties:
            id:
              type: string
              pattern: ^st_[A-Za-z]+_[A-Za-z]{16}$
            domain:
              type: string
            name:
              type: string
        revealed_at:
          type: string
          format: date-time
    BillingAction:
      oneOf:
        - $ref: '#/components/schemas/TrialCreditBillingAction'
        - $ref: '#/components/schemas/ApiAccessBillingAction'
    TrialCreditBillingAction:
      type: object
      properties:
        can_unlock_paid_credits_now:
          type: boolean
        action:
          type: string
          enum:
            - end_trial_to_unlock_pro_credits
        current_limit:
          type: integer
          minimum: 0
        paid_plan_limit:
          type: integer
          minimum: 0
        trial_ends_at:
          type:
            - string
            - 'null'
          format: date-time
        url:
          type: string
          format: uri
      required:
        - action
        - current_limit
        - paid_plan_limit
        - trial_ends_at
        - url
    ApiAccessBillingAction:
      type: object
      properties:
        action:
          type: string
          enum:
            - create_subscription_link
            - manage_billing
        url:
          type: string
          format: uri
        endpoint:
          type: string
          enum:
            - /api/v1/billing/subscription-link
            - /api/v1/billing/portal-link
      required:
        - action
        - url
        - endpoint
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: StoreInspect API key

````