Skip to main content

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.

Base URL

Use your deployed API base URL, or the current local runtime during development:
export TATTOO_API_BASE_URL=http://localhost:3001/api/v1
The current API is in transition. The ontology is the source of truth, while the runtime still carries a few legacy response wrappers. These docs describe the current behavior as it exists today.

1. Check Health

curl "$TATTOO_API_BASE_URL/health"
Expected shape:
{
  "status": "healthy",
  "timestamp": "2026-04-20T12:00:00.000Z",
  "version": "v1",
  "uptime": 1234.56,
  "environment": "development"
}

2. Register and Login

Register a user:
curl -X POST "$TATTOO_API_BASE_URL/auth/register" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "developer@example.com",
    "password": "SecurePassword123!",
    "name": "Developer Example",
    "role": "Client"
  }'
Then login to get tokens:
curl -X POST "$TATTOO_API_BASE_URL/auth/login" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "developer@example.com",
    "password": "SecurePassword123!"
  }'
The login response contains user and tokens at the top level:
{
  "success": true,
  "message": "Login successful",
  "user": {
    "id": "uuid",
    "email": "developer@example.com",
    "name": "Developer Example",
    "role": "Client",
    "roles": []
  },
  "tokens": {
    "access_token": "jwt",
    "refresh_token": "jwt",
    "expires_in": 86400
  }
}

3. Search the Dataset

GET /search currently requires authentication.
curl "$TATTOO_API_BASE_URL/search?q=traditional&type=studio&limit=5" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"
The response uses a success wrapper:
{
  "success": true,
  "data": {
    "results": [],
    "total": 0,
    "pagination": {
      "page": 1,
      "limit": 5,
      "total_pages": 0,
      "has_next": false,
      "has_prev": false
    }
  }
}

4. List Studios

GET /studios is the current public discovery endpoint.
curl "$TATTOO_API_BASE_URL/studios?city=Los%20Angeles&limit=5"
Unlike search, the current studios endpoint still uses the legacy paginated wrapper:
{
  "data": [],
  "pagination": {
    "page": 1,
    "limit": 5,
    "total": 0,
    "totalPages": 0,
    "hasNext": false,
    "hasPrev": false
  },
  "error": null
}

5. Understand Trust

Before you build on top of the current data, load the trust model:
  • recordState tells you if a record is raw, normalized, curated, verified, or deprecated
  • verificationStatus tells you how much trust has been established
  • licenseStatus and consentLevel tell you what kinds of downstream use are allowed
Next: