Current API Recipes
These examples describe the API surface that is safe to build against today.Canonical REST base URL:
https://api.tattooapi.com/api/v1Public No-Auth Reads
Liveness is the simplest availability check:Internal Beta Reads
Internal beta routes require approved authentication and a mapped TattooAPI actor.401. Valid credentials without a mapped TattooAPI actor return 403.
Governed Portfolio Intake
Approved service integrations such as Permanent use the private portfolio-intake contract to resolve an artist, stage media, verify upload completion, and poll review status. A separate mapped human operator performs approval. Start with Resolve Artist Identity and Create Portfolio Submission. Approval creates a private Sanity draft and marks the intakepromoted_to_sanity; it does not make the asset public. GET /portfolios returns only separately promoted published_public Convex projections.
Owner Beta Reads
Owner routes are scoped to the authenticated owner actor.draft, owner_private, and published_public creative records, but only for records mapped to the authenticated studio or artist.
Blocked Public Writes
Public mutation attempts must remain blocked:public_write_blocked.
Gated Owner Writes
Owner mutation attempts must remain gated until the approved write contract is live:owner_write_gated.
Internal Infrastructure Boundaries
These surfaces are not public product APIs:/api/internal/mcp/*/api/internal/source-packs/staging/api/internal/runtime/*- private operator dashboards
- local private-network URLs
