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

# Resolve Artist Identity

> Match approved identity evidence or queue operator review before portfolio staging.

Use identity evidence such as an existing TattooAPI mapping, a normalized phone hash, Instagram handle, or tattoo.co profile URL. This is identity evidence, not legal KYC, and an unmatched request never creates a public artist profile.


## OpenAPI

````yaml openapi-portfolio-intake.json POST /artist-resolution-requests
openapi: 3.1.0
info:
  title: TattooAPI Portfolio Intake
  version: 1.0.0
  description: >-
    Private, review-gated portfolio intake for approved partners and TattooAPI
    operators. These operations never publish directly to public surfaces.
servers:
  - url: https://api.tattooapi.com/api/private/portfolio-intake/v1
    description: Production private portfolio intake
security: []
paths:
  /artist-resolution-requests:
    post:
      summary: Resolve or queue an artist identity
      description: >-
        Requires portfolio_intake:stage. Matches approved identity evidence or
        creates a review request. It does not create or publish an artist
        profile.
      operationId: resolvePortfolioIntakeArtist
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ArtistResolutionRequest'
      responses:
        '200':
          description: Existing identity evidence resolved
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ArtistResolutionResponse'
        '202':
          description: Identity review request created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ArtistResolutionResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
      security:
        - ApiKeyAuth: []
        - BearerAuth: []
components:
  schemas:
    ArtistResolutionRequest:
      type: object
      required:
        - idempotencyKey
        - tenantId
        - studioCanonicalId
        - source
      properties:
        idempotencyKey:
          type: string
          minLength: 8
        tenantId:
          type: string
        studioCanonicalId:
          type: string
        source:
          type: string
          enum:
            - permanent_imessage
            - partner_api
        sourceMessageId:
          type: string
        displayName:
          type: string
        phoneHash:
          type: string
          pattern: ^sha256:[a-f0-9]{64}$
        instagramHandle:
          type: string
        tattooCoProfileUrl:
          type: string
          format: uri
    ArtistResolutionResponse:
      type: object
      properties:
        success:
          type: boolean
          const: true
        data:
          type: object
          properties:
            status:
              type: string
              enum:
                - unmatched
                - phone_matched
                - review_required
            artistCanonicalId:
              type:
                - string
                - 'null'
            reviewRequired:
              type: boolean
              const: true
            legalKycVerified:
              type: boolean
              const: false
  responses:
    Unauthorized:
      description: Missing or invalid WorkOS credential
    Forbidden:
      description: Credential is unmapped, out of scope, or lacks the required permission
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key
      description: WorkOS organization API key mapped to a TattooAPI service actor.
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: WorkOS AuthKit bearer token mapped to a TattooAPI human actor.

````