Protocol Documentation

Integrate FaceMint into your agent, app, or workflow

API Base

All API requests go to the FaceMint production endpoint. HTTPS is required.

https://facemint-production.up.railway.app

Authentication

The FaceMint API is currently open during the Genesis phase. No API key is required. Rate limits apply per IP. Future versions will support API key authentication for premium integrations.

// No auth header needed during Genesis phase
fetch("https://facemint-production.up.railway.app/api/mint", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({ entity: "shadow fox", mood: "stoic" })
})

API Reference

Core endpoints for minting, retrieving, and verifying FaceMint identities.

POST /api/mint

Mint a new permanent identity. Generates a unique pixel face, assigns a mint ID, and writes the identity to the protocol. The face is retired forever — no other entity will ever share it.

Request Body
FieldTypeDescription
entitystringName or description of the entity (e.g. "shadow fox")
moodstringEmotional tone for the face (e.g. "stoic", "joyful")
palettestringOptional — color palette hint (e.g. "neon pink")
chainstringOptional — target chain for on-chain record (default: "base")
Response (200)
{
  "mintId": "GEN-0007",
  "tier": "Genesis",
  "entity": "shadow fox",
  "palette": "deep violet with electric cyan accents",
  "mood": "stoic and watchful",
  "chain": "base",
  "mintedAt": "2026-03-04T18:22:00.000Z",
  "imageUrl": "https://...supabase.co/.../GEN-0007.png",
  "url": "https://facemintai.com/face.html?id=GEN-0007"
}
GET /api/recent

Returns the most recently minted identities, ordered by mint time. Useful for live tickers, dashboards, and protocol status pages.

Response (200)
{
  "count": 7,
  "mints": [
    {
      "mintId": "GEN-0007",
      "tier": "Genesis",
      "entity": "shadow fox",
      "palette": "deep violet with electric cyan accents",
      "mood": "stoic and watchful",
      "chain": "base",
      "mintedAt": "2026-03-04T18:22:00.000Z",
      "imageUrl": "https://...supabase.co/.../GEN-0007.png",
      "url": "https://facemintai.com/face.html?id=GEN-0007"
    }
    // ... more mints
  ]
}
GET /face/:id

Retrieve the public face page for any minted identity. Returns an HTML page with the pixel portrait, entity dossier, and verification status. Use for embeds, previews, and verification links.

Example
https://facemintai.com/face.html?id=GEN-0005

Identity Object

Every minted face produces an identity object with the following fields. This is the canonical schema for FaceMint identities across all integrations.

FaceMint Identity

FieldTypeDescription
mintIdstringUnique identifier (e.g. GEN-0007, PRI-0311)
tierstringMint tier — "Genesis", "Prime", "Signal", etc.
entitystringName or description of the entity
palettestringColor palette used for the portrait
moodstringEmotional tone of the face
chainstringTarget blockchain (e.g. "base")
mintedAtISO 8601Timestamp of when the identity was minted
imageUrlURLDirect link to the pixel portrait image
urlURLPublic face page URL for verification

3-Step Integration

Give your AI agent, bot, or app a permanent verifiable identity in three steps.

01 — Mint a Face

POST /api/mint
{
  "entity": "your agent name",
  "mood": "determined",
  "palette": "midnight blue"
}

02 — Embed the ID

Store the returned mintId in your agent's profile, bio, or metadata. This is your agent's permanent, verifiable identity anchor.

My identity is GEN-0007
Verify me → https://facemintai.com/face.html?id=GEN-0007

03 — Verify Anywhere

Anyone can verify an identity by fetching the face page or calling the API. The pixel portrait, entity dossier, and mint timestamp provide cryptographic-grade proof of identity.

GET /face/GEN-0007
// Returns full identity page with portrait & dossier

Error Responses

The API returns standard HTTP status codes. Errors include a JSON body with a message field.

Error Codes

CodeMeaningDescription
200OKRequest succeeded
400Bad RequestMissing or invalid parameters
404Not FoundMint ID does not exist
429Rate LimitedToo many requests — slow down
500Server ErrorInternal error — retry or contact support
// Example error response
{
  "error": true,
  "message": "Entity description is required",
  "code": 400
}