URL de base
https://app.doxai.chDeveloper/API
Instantané de l’implémentation actuelle. Cette surface évolue rapidement.
Documentation provisoire : contrats, en-têtes et règles de scopes peuvent changer.
Mode public: Les endpoints de chat managé sont retirés de l'API publique. Utilisez les APIs CV et les outils MCP CV.
API PAT directe: Utilisez votre token API personnel directement sur le même host que cette page. Host de production : https://app.doxai.ch
https://app.doxai.chLes tokens API personnels sont créés depuis la page compte et envoyés comme Bearer tokens.
Authorization: Bearer <personal_api_token>Ouvrir la gestion des tokensPour ChatGPT MCP / clients distants, utilisez l'endpoint HTTP streamable ci-dessous.
https://app.doxai.ch/v1/mcpLes specs machine-readable sont servies sur /openapi.json et /v1/openapi.json.
https://app.doxai.ch/openapi.json
https://app.doxai.ch/v1/openapi.jsonUtilisez GET /v1/resume/templates?locale=fr pour découvrir les valeurs valides de template, theme_color, font_family et font_size avant de créer un job.
curl -sS "https://app.doxai.ch/v1/resume/templates?locale=fr" \
-H "Authorization: Bearer $TOKEN"POST /v1/resume/jobs attend une enveloppe avec request_id et cv_data. cv_data.language accepte en, fr et de pour localiser les titres de sections par défaut et le libellé Présent. N'envoyez pas sections.*.type — il est déduit automatiquement par le serveur (accepté mais ignoré s'il est fourni) ; voir l'exemple cv_data ci-dessous.
{
"request_id": "demo-job-001",
"language": "fr",
"cv_data": {
"template": "original",
"language": "fr",
"theme_color": "NavyBlue",
"font_family": "arial",
"font_size": "11pt",
"identity": {
"first_name": "Ada",
"last_name": "Lovelace"
},
"sections": {
"summary": {
"content": "Profil synthétique."
}
}
}
}Authorization: Bearer ...chat:runresume:generatetools:invokemcp:connectLes réponses exposent à la fois des clés internes pour la logique et des labels publics pour l'affichage.
tier = free|credits|subscriptiontier_label = free|flex|promodel.access = all|paid|subscription`paid` est une classe d'accès interne pour les modèles non gratuits. Elle correspond à l'éligibilité Flex et Pro, pas à un nom de plan public.
/healthzpublicLiveness check.
/readyzpublicReadiness check (Supabase dependency).
/versionpublicGateway runtime/version info.
/openapi.jsonpublicOpenAPI document as JSON.
/v1/openapi.jsonpublicOpenAPI document as JSON under /v1.
/v1/auth/mepublicResolve token principal and scopes.
/v1/auth/check/chatchat:runScope probe.
/v1/auth/check/resumeresume:generateScope probe.
/v1/auth/check/toolstools:invokeScope probe.
/v1/auth/check/mcpmcp:connectScope probe.
/v1/modelschat:runList models with per-user allow/deny decisions, protocol/origin metadata, surfaces, tier, and tier_label.
Use header x-ai-mode: managed|api|mcp (default: api) to inspect surface-specific availability.
/v1/chat/completionschat:runRetired public managed chat route.
Returns 410 managed_chat_removed.
/v1/responseschat:runRetired public managed responses route.
Returns 410 managed_chat_removed.
/v1/studio/chatchat:runInternal studio bridge.
Internal service-only route; not part of the public integration surface.
/v1/billing/statuschat:runCurrent tier, tier_label, wallet balance, real-usage flag, and Pro allowance state.
subscription_chat_allowance is null unless tier=subscription.
/v1/billing/usagechat:runUsage report summary plus per-event token, USD, and billed-credit views.
Query params: from, to (ISO), limit.
/v1/resume/templatesresume:generateList supported templates, colors, fonts, sizes, and preview URLs.
Optional query param: locale=en|fr|de.
/v1/resume/jobsresume:generateCreate async resume job.
Requires body.request_id. Canonical item bullets field: description_bullets. Alias bullets is accepted and normalized with warnings. Compute billed (compile_tool): picture=2, original/harvard/business/sidebar first free then 1.
/v1/resume/jobs/:jobIdresume:generateGet job status.
Poll job.status (not top-level status). Values: queued | running | succeeded | failed | canceled.
/v1/resume/jobs/:jobId/pdfresume:generateDownload PDF artifact.
/v1/mcpmcp:connectPrimary MCP JSON-RPC endpoint (streamable HTTP).
Send initialize first, then use tools/list, resources/list, tools/call, and resources/read with MCP-Session-Id.
/v1/mcpmcp:connectAttach SSE stream to an existing MCP session.
Requires MCP-Session-Id header.
/v1/mcpmcp:connectClose MCP session.
/v1/mcp/ssemcp:connectLegacy SSE MCP transport (compatibility).
/v1/mcp/messagesmcp:connectLegacy SSE MCP message ingress.
Use query session_id from endpoint event.
/v1/mcp/toolsmcp:connectConvenience REST wrapper to list tools.
/v1/mcp/tools/callmcp:connectConvenience REST wrapper to invoke tool.
RESPONSE=$(curl -sS "https://app.doxai.ch/v1/resume/jobs" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"request_id":"demo-job-001",
"cv_data": {
"template": "original",
"language": "en",
"theme_color": "NavyBlue",
"font_size": "11pt",
"font_family": "arial",
"identity": {
"first_name": "Leif",
"last_name": "Doxarve",
"jobtitle": "AI Product Engineer",
"email": "leif@example.com",
"mobile": "+41 79 123 45 67",
"address": "Lausanne, Switzerland",
"linkedin": "https://linkedin.com/in/leif-doxarve",
"github": "https://github.com/mieleif",
"website": "https://doxai.ch"
},
"sections_order": ["summary", "experience", "education", "projects", "skills", "languages"],
"sections": {
"summary": {
"content": "AI product engineer focused on practical automation, LLM integrations, and scalable orchestration."
},
"experience": {
"items": [
{
"title": "DoxAI",
"subtitle": "Founder & Product Engineer",
"location": "Lausanne, CH",
"start": "2024-06",
"end": "Present",
"description_bullets": [
"Built AI-assisted CV platform with public API and MCP-compatible tools.",
"Implemented billing-aware gateway architecture with provider abstraction and failover.",
"Operated Docker-based deployments with Traefik, GitHub Actions, and Supabase."
]
},
{
"title": "Consulting Projects",
"subtitle": "Software Engineer",
"location": "Remote",
"start": "2022-01",
"end": "2024-05",
"description_bullets": [
"Delivered full-stack web apps with TypeScript, React, and Node.js.",
"Integrated third-party APIs and automated reporting pipelines."
]
}
]
},
"education": {
"items": [
{
"title": "University Example",
"subtitle": "BSc in Computer Science",
"location": "Switzerland",
"start": "2018-09",
"end": "2021-07",
"description_bullets": [
"Focus: software engineering, data systems, and applied machine learning."
]
}
]
},
"projects": {
"items": [
{
"title": "CV API Gateway",
"subtitle": "Public Tools-Only Runtime",
"start": "2026-02",
"end": "Present",
"description_bullets": [
"Exposed authenticated resume tooling for agent/CLI consumption.",
"Added compile-action credit billing and idempotent request handling."
]
}
]
},
"skills": {
"items": [
{
"title": "Tech Stack",
"description_bullets": [
"TypeScript",
"Node.js",
"Next.js",
"Fastify",
"Supabase",
"Docker",
"Traefik",
"GitHub Actions",
"PostgreSQL"
]
}
]
},
"languages": {
"items": [
{
"title": "Languages",
"description_bullets": [
"French (native)",
"English (professional)"
]
}
]
}
}
}
}')
JOB_ID=$(echo "$RESPONSE" | jq -r '.job_id')
curl -sS "https://app.doxai.ch/v1/resume/jobs/$JOB_ID" \
-H "Authorization: Bearer $TOKEN" | jq '{job_id: .job.id, status: .job.status, warnings: .warnings}'Interrogez GET /v1/resume/jobs/:jobId et lisez job.status. Valeurs possibles : queued, running, succeeded, failed, canceled.
{
"ok": true,
"request_id": "req_123",
"warnings": [],
"job": {
"id": "f5821b92-9100-44ce-a610-c85c2499fe5b",
"request_id": "demo-job-001",
"mode": "managed",
"status": "running",
"created_at": "2026-03-17T15:00:00.000Z",
"updated_at": "2026-03-17T15:00:01.000Z"
}
}Les outils sont regroupés par namespace. Appelez tools/list pour obtenir les schémas d’entrée et de sortie, titres et annotations faisant foi.
app.*Public server metadata and discovery.
app.get_infoaccount.*Authenticated account and billing state.
account.get_billing_statusresume.*Validation, templates, compilation, and job retrieval.
resume.create_jobresume.validate_cv_dataresume.get_create_job_exampleresume.get_jobresume.get_pdfresume.list_templatesresume.list_jobscv.*User-owned saved resumes and normalized CV entries.
cv.list_resumescv.get_resumecv.create_resumecv.update_resumecv.list_entriescv.upsert_entryLes lectures de ressources sont limitées à l’utilisateur authentifié. Utilisez resources/list pour découvrir les URI des CV enregistrés.
cv://templatesStatic resume-template catalog.
cv://resumesIndex of the authenticated user's saved resumes.
cv://resumes/{id}Stored JSON snapshot for one authenticated-user-owned resume.
cv://profileAuthenticated user's profile and normalized CV entries.
Le serveur négocie la version mutuellement prise en charge la plus récente lors de initialize. La sortie structurée des outils est disponible avec 2025-11-25 et 2025-06-18.
2025-11-252025-06-182025-03-262024-11-05curl -sS -D /tmp/mcp_headers.txt "https://app.doxai.ch/v1/mcp" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-H "MCP-Protocol-Version: 2025-11-25" \
-d '{"jsonrpc":"2.0","id":"init-1","method":"initialize","params":{"protocolVersion":"2025-11-25","capabilities":{},"clientInfo":{"name":"cli","version":"0.1.0"}}}'
SESSION_ID=$(grep -i '^MCP-Session-Id:' /tmp/mcp_headers.txt | awk '{print $2}' | tr -d '\r')
curl -X POST "https://app.doxai.ch/v1/mcp" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-H "MCP-Session-Id: $SESSION_ID" \
-H "MCP-Protocol-Version: 2025-11-25" \
-d '{"jsonrpc":"2.0","id":"tools-1","method":"tools/list","params":{}}'Créez un token API personnel avec mcp:connect, puis adaptez cette entrée de serveur distant à votre client MCP. Les clients compatibles OAuth peuvent s’authentifier via la découverte de ressource protégée du serveur.
{
"mcpServers": {
"cv-doxai": {
"url": "https://app.doxai.ch/v1/mcp",
"headers": {
"Authorization": "Bearer <token_with_mcp:connect>"
}
}
}
}initialize → notifications/initialized → tools/list / resources/list → tools/call / resources/read
Payload de départ copiable pour /v1/resume/jobs ou MCP resume.create_job. Utilise les tableaux description_bullets canoniques pour le rendu PDF. title s'affiche en premier, subtitle en second. N'envoyez pas sections.*.type : le serveur le déduit automatiquement — les éléments avec des dates ou un lieu deviennent "main"/chronologie, sinon "secondary"/liste. En disposition liste, les subtitles peuvent ne pas s'afficher : placez cette information dans les description_bullets.
{
"template": "original",
"language": "en",
"theme_color": "NavyBlue",
"font_size": "11pt",
"font_family": "arial",
"identity": {
"first_name": "Leif",
"last_name": "Doxarve",
"jobtitle": "AI Product Engineer",
"email": "leif@example.com",
"mobile": "+41 79 123 45 67",
"address": "Lausanne, Switzerland",
"linkedin": "https://linkedin.com/in/leif-doxarve",
"github": "https://github.com/mieleif",
"website": "https://doxai.ch"
},
"sections_order": ["summary", "experience", "education", "projects", "skills", "languages"],
"sections": {
"summary": {
"content": "AI product engineer focused on practical automation, LLM integrations, and scalable orchestration."
},
"experience": {
"items": [
{
"title": "DoxAI",
"subtitle": "Founder & Product Engineer",
"location": "Lausanne, CH",
"start": "2024-06",
"end": "Present",
"description_bullets": [
"Built AI-assisted CV platform with public API and MCP-compatible tools.",
"Implemented billing-aware gateway architecture with provider abstraction and failover.",
"Operated Docker-based deployments with Traefik, GitHub Actions, and Supabase."
]
},
{
"title": "Consulting Projects",
"subtitle": "Software Engineer",
"location": "Remote",
"start": "2022-01",
"end": "2024-05",
"description_bullets": [
"Delivered full-stack web apps with TypeScript, React, and Node.js.",
"Integrated third-party APIs and automated reporting pipelines."
]
}
]
},
"education": {
"items": [
{
"title": "University Example",
"subtitle": "BSc in Computer Science",
"location": "Switzerland",
"start": "2018-09",
"end": "2021-07",
"description_bullets": [
"Focus: software engineering, data systems, and applied machine learning."
]
}
]
},
"projects": {
"items": [
{
"title": "CV API Gateway",
"subtitle": "Public Tools-Only Runtime",
"start": "2026-02",
"end": "Present",
"description_bullets": [
"Exposed authenticated resume tooling for agent/CLI consumption.",
"Added compile-action credit billing and idempotent request handling."
]
}
]
},
"skills": {
"items": [
{
"title": "Tech Stack",
"description_bullets": [
"TypeScript",
"Node.js",
"Next.js",
"Fastify",
"Supabase",
"Docker",
"Traefik",
"GitHub Actions",
"PostgreSQL"
]
}
]
},
"languages": {
"items": [
{
"title": "Languages",
"description_bullets": [
"French (native)",
"English (professional)"
]
}
]
}
}
}