tracetail-io Server API

What a customer's backend calls to verify identifications, with a secret server key.

Operations 2

GET /api/v1/identifications/{requestId} Look up an identification #
GET /api/v1/visitors/{visitorId} Look up a visitor #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/tracetail-io:tracetail-io-server-api-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

tracetail-io-server-api-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: TraceTail Server API
  version: 3.1.2
  summary: 'Browser fingerprinting: a stable visitor ID for each browser, without cookies.'
  description: 'TraceTail is a browser fingerprinting API for recognizing returning visitors without cookies. Its JavaScript SDK (a script tag or the npm package @tracetail/js) turns 40+ browser signals into a stable visitor ID with 99.6% accuracy, the same in normal and incognito windows. It works without an API key for a quick start; with a key, every identification is registered with the API, checked for automation and shown in a dashboard. 1,000 identification requests are free every month, then $0.10 per 1,000.


    The browser SDK calls the identification endpoints; customers'' servers verify what the browser sent with the Server API (secret server keys). Rate limits: 100 requests a second per API key, 600 a minute per IP address and 600 a minute per server key.'
  termsOfService: https://tracetail.io/terms-and-conditions
  contact:
    name: TraceTail support
    email: support@tracetail.io
    url: https://tracetail.io/contact
servers:
- url: https://tracetail.io
tags:
- name: Server API
  description: What a customer's backend calls to verify identifications, with a secret server key.
paths:
  /api/v1/identifications/{requestId}:
    get:
      operationId: getIdentification
      tags:
      - Server API
      summary: Look up an identification
      description: 'Before trusting a visitor ID that the browser sent with a sign-up, login or payment, look up the requestId it came with: check that visitorId matches, createdAt is recent and domain is yours. Only successful identifications of the key''s account are returned, for 90 days.'
      security:
      - serverKey: []
      parameters:
      - name: requestId
        in: path
        required: true
        schema:
          type: string
          format: uuid
          description: The ID of one registered identification.
          examples:
          - 3f8c2a1e-6b4d-4c7a-9e21-5d0f7b8a9c13
      responses:
        '200':
          description: The identification
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerIdentification'
        '400':
          description: Malformed ID
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                VALIDATION_ERROR:
                  value:
                    error: Malformed ID
                    code: VALIDATION_ERROR
        '401':
          description: Missing, unknown or revoked server key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                INVALID_SERVER_KEY:
                  value:
                    error: Missing, unknown or revoked server key
                    code: INVALID_SERVER_KEY
        '403':
          description: Called from a browser
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                BROWSER_REQUEST:
                  value:
                    error: Called from a browser
                    code: BROWSER_REQUEST
        '404':
          description: Not in this account
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                NOT_FOUND:
                  value:
                    error: Not in this account
                    code: NOT_FOUND
        '429':
          description: Rate limited
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                RATE_LIMITED:
                  value:
                    error: Rate limited
                    code: RATE_LIMITED
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
  /api/v1/visitors/{visitorId}:
    get:
      operationId: getVisitor
      tags:
      - Server API
      summary: Look up a visitor
      description: When the account first and last saw a visitor, how often, and its latest 20 identifications.
      security:
      - serverKey: []
      parameters:
      - name: visitorId
        in: path
        required: true
        schema:
          type: string
          pattern: ^(?:fp3_|(?:free_)?fp2_)[0-9a-f]{16}$
          description: '`fp3_` followed by 16 hex characters, computed by the TraceTail SDK (IDs from 2.x SDKs start with `fp2_`).'
          examples:
          - fp3_8f14e45fceea167a
      responses:
        '200':
          description: The visitor
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Visitor'
        '400':
          description: Malformed ID
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                VALIDATION_ERROR:
                  value:
                    error: Malformed ID
                    code: VALIDATION_ERROR
        '401':
          description: Missing, unknown or revoked server key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                INVALID_SERVER_KEY:
                  value:
                    error: Missing, unknown or revoked server key
                    code: INVALID_SERVER_KEY
        '403':
          description: Called from a browser
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                BROWSER_REQUEST:
                  value:
                    error: Called from a browser
                    code: BROWSER_REQUEST
        '404':
          description: Not in this account
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                NOT_FOUND:
                  value:
                    error: Not in this account
                    code: NOT_FOUND
        '429':
          description: Rate limited
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                RATE_LIMITED:
                  value:
                    error: Rate limited
                    code: RATE_LIMITED
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
components:
  schemas:
    ServerIdentification:
      type: object
      required:
      - visitorId
      - requestId
      - domain
      - endpoint
      - createdAt
      - ipAddress
      - userAgent
      - browser
      - os
      - confidence
      - riskScore
      - quality
      - verification
      - isBot
      properties:
        visitorId:
          type: string
          pattern: ^(?:fp3_|(?:free_)?fp2_)[0-9a-f]{16}$
          description: '`fp3_` followed by 16 hex characters, computed by the TraceTail SDK (IDs from 2.x SDKs start with `fp2_`).'
          examples:
          - fp3_8f14e45fceea167a
        requestId:
          type: string
          format: uuid
          description: The ID of one registered identification.
          examples:
          - 3f8c2a1e-6b4d-4c7a-9e21-5d0f7b8a9c13
        domain:
          type: string
          description: The page host the identification came from.
        endpoint:
          type: string
          enum:
          - /api/id
          - /api/id/detail
        createdAt:
          type: string
          format: date-time
        ipAddress:
          type:
          - string
          - 'null'
        userAgent:
          type:
          - string
          - 'null'
        browser:
          type:
          - string
          - 'null'
          description: From the visitor's latest record.
        os:
          type:
          - string
          - 'null'
          description: From the visitor's latest record.
        confidence:
          type:
          - number
          - 'null'
          description: This request’s signal completeness. Null for historical events without an assessment.
        riskScore:
          type:
          - number
          - 'null'
          description: This request’s risk assessment. Null for historical events without an assessment.
        quality:
          anyOf:
          - type: object
            required:
            - score
            - reasons
            description: Signal completeness, not match probability or physical-device uniqueness.
            properties:
              score:
                type: number
                minimum: 0
                maximum: 1
              reasons:
                type: array
                items:
                  type: string
          - type: 'null'
        verification:
          type: string
          enum:
          - consistent
          - unverified
          description: consistent means the server recomputed the ID from the signals. It does not authenticate a device. Legacy requests are unverified.
        isBot:
          type:
          - boolean
          - 'null'
    Error:
      type: object
      required:
      - error
      - code
      properties:
        error:
          type: string
          description: What went wrong, for people.
        code:
          type: string
          description: What went wrong, for code.
    Visitor:
      type: object
      required:
      - visitorId
      - firstSeenAt
      - lastSeenAt
      - visits
      - browser
      - os
      - confidence
      - riskScore
      - recentIdentifications
      properties:
        visitorId:
          type: string
          pattern: ^(?:fp3_|(?:free_)?fp2_)[0-9a-f]{16}$
          description: '`fp3_` followed by 16 hex characters, computed by the TraceTail SDK (IDs from 2.x SDKs start with `fp2_`).'
          examples:
          - fp3_8f14e45fceea167a
        firstSeenAt:
          type: string
          format: date-time
        lastSeenAt:
          type: string
          format: date-time
        visits:
          type: integer
          minimum: 0
          description: Successful identifications in the last 90 days.
        browser:
          type:
          - string
          - 'null'
          description: From the visitor's latest record.
        os:
          type:
          - string
          - 'null'
          description: From the visitor's latest record.
        confidence:
          type:
          - number
          - 'null'
        riskScore:
          type:
          - number
          - 'null'
        recentIdentifications:
          type: array
          maxItems: 20
          description: Newest first.
          items:
            type: object
            required:
            - requestId
            - domain
            - endpoint
            - createdAt
            - ipAddress
            - userAgent
            properties:
              requestId:
                type: string
                format: uuid
                description: The ID of one registered identification.
                examples:
                - 3f8c2a1e-6b4d-4c7a-9e21-5d0f7b8a9c13
              domain:
                type: string
                description: The page host the identification came from.
              endpoint:
                type: string
                enum:
                - /api/id
                - /api/id/detail
              createdAt:
                type: string
                format: date-time
              ipAddress:
                type:
                - string
                - 'null'
              userAgent:
                type:
                - string
                - 'null'
  securitySchemes:
    publicKey:
      type: apiKey
      in: header
      name: X-API-Key
      description: 'Public API key (`tt_` followed by 64 hex characters). It ships in page HTML and only works from pages on its domain. Also accepted as `Authorization: Bearer`.'
    serverKey:
      type: http
      scheme: bearer
      description: 'Secret server key (`tts_` followed by 64 hex characters) from Settings → API keys. Server-side only: requests with an Origin header are refused.'
    setupToken:
      type: http
      scheme: bearer
      description: 'The token creating the setup link returned (`tt_setup_` followed by 64 hex characters). Keep it to the agent: it collects the keys.'
externalDocs:
  description: 'Documentation (also as Markdown: /docs.md)'
  url: https://tracetail.io/docs