Skip to main content
GET
/
portfolios
List Portfolios
curl --request GET \
  --url https://api.example.com/portfolios

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.

Posture: WorkOS-authenticated internal beta. The caller must resolve to a mapped TattooAPI actor before access is granted.
Write boundary: Public writes are blocked. Do not build production flows assuming mutation is live on this route family.

List Portfolios

GET /portfolios is an authenticated read-beta endpoint. It returns the public projection of portfolio assets only. Records must be publish_state = published_public and must not contradict the rights posture.

Auth

curl "$TATTOO_API_BASE_URL/portfolios?limit=20" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"

Query Parameters

ParameterTypeNotes
pageintegerDefault 1
limitintegerDefault 20, max 100
artist_idstringFilter by runtime artist id
style_idstringFilter by style id
featuredbooleantrue or false
tagsstringComma-separated tag filter

Response Shape

{
  "success": true,
  "data": [
    {
      "id": "portfolio-asset:ashlewis-instagram-overlay-2026-04-20",
      "artist_id": "artist:example",
      "title": "Black and grey healed sleeve",
      "image_url": "https://example.com/image.jpg",
      "tags": ["black_and_grey"],
      "is_public": true,
      "publish_state": "published_public",
      "provenance": {},
      "trust": {}
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 20,
    "total": 1,
    "totalPages": 1
  }
}

Write Boundary

POST, PUT, PATCH, and DELETE are explicitly blocked on this public route family. Use owner-scoped routes only for current owner reads. Owner writes remain gated until a governed owner mutation contract lands.