← Back to Triangula

Triangula API

Score 16 archetypes from 12 questionnaire answers and optional derived face metrics. Returns the compatibility matrix — synergy, resonance and tension.

Access

Send your key in either header:

Authorization: Bearer tk_...
X-API-Key: tk_...

Keys are issued by request. Each key carries a daily quota (100 requests per UTC day by default). Calls without a key reach the public website flow and are limited per IP.

Endpoints

MethodPathReturns
POST/api/readingarchetype, scores, confidence, narrative, compatibility
GET/api/archetypesall 16 archetypes with names and metadata
GET/api/healthservice status

Score a reading

curl -s -X POST https://triangula.app/api/reading \
  -H "Authorization: Bearer tk_..." \
  -H "Content-Type: application/json" \
  -d '{"face": null, "answers": [5,4,5,1,2,1,5,3,1,4,2,1]}'

answers — exactly 12 numbers in the 1..5 range. face — optional derived face metrics or null.

{
  "ok": true,
  "archetype": { "code": "AA-bc", "name": "Pure Leader" },
  "scores": { ... },
  "confidence": 0.72,
  "compatibility": {
    "synergy":  [ { "code": "CC-ab", "name": "Pure Analyst" } ],
    "resonance": [ ... ],
    "tension":  [ ... ]
  },
  "disclaimer": "For entertainment and self-reflection only.",
  "timestamp": "2026-10-20T12:00:00.000Z"
}

SDK

JavaScript / TypeScript

npm install triangula

import { Triangula } from 'triangula';
const client = new Triangula({ apiKey: process.env.TRIANGULA_API_KEY });
const reading = await client.reading({ answers: [5,4,5,1,2,1,5,3,1,4,2,1] });

Python

pip install triangula-sdk

from triangula import Triangula
client = Triangula(api_key="tk_...")
reading = client.reading(answers=[5,4,5,1,2,1,5,3,1,4,2,1])

Errors and limits

StatuscodeMeaning
400invalid_payloadanswers is not 12 numbers in 1..5
401invalid_api_keykey unknown or disabled
429quota_exceeded / rate_limiteddaily limit reached, resets at UTC midnight

Responses include X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset.

Privacy

Photos are processed in the user's browser and never sent to the server. The API accepts only derived face metrics and questionnaire answers — never images.

Take the free reading How the method works The 16 archetypes