API for Developers

Graphological talent analysis for your own HR systems.

Use GraphoHR through a secure B2B API to analyze handwriting samples, return structured profile signals, and integrate results into ATS, HRIS, assessment portals, or recruiting workflows.

Getting Started

Request an API key from GraphoHR. Each key starts with ghr_, has an assigned monthly token limit, and can be revoked at any time.

Email info@graphohr.com with your company name, use case, expected volume, and contact email.

Descargar Developer Guide (PDF · 6 idiomas)

Authentication

Send your key in the x-api-key header on every API request.

x-api-key: ghr_your_api_key

Key Validation

Validate a key and inspect usage before sending an analysis.

GET/POST /.netlify/functions/api-auth
curl https://graphohr.com/.netlify/functions/api-auth \
  -H "x-api-key: ghr_your_api_key"

Analyze Endpoint

Submit a handwriting or signature image as base64. The endpoint returns a structured profile payload generated by GraphoHR.

POST /.netlify/functions/analyze

Request example

curl -X POST https://graphohr.com/.netlify/functions/analyze \
  -H "Content-Type: application/json" \
  -H "x-api-key: ghr_your_api_key" \
  -d '{
    "image": "base64_encoded_image",
    "analysis_type": "signature",
    "language": "es",
    "laterality": "right"
  }'

The simplified image payload above is supported for partner integrations. Advanced clients can also send the same Anthropic/Gemini style messages payload used by the GraphoHR app.

Response example

{
  "ok": true,
  "analysis_id": "gha_lf3k9x2m",
  "provider": "graphohr",
  "summary": "Medium legibility, ascending baseline, right inclination...",
  "confidence": 78,
  "validity": "Image quality is sufficient for graphological support analysis.",
  "profile": {
    "disc": { "D": 35, "I": 28, "S": 22, "C": 15 },
    "cognitive": { "analytical": "high", "creativity": "medium" },
    "emotional": { "resilience": "high", "empathy": "medium" },
    "signature": { "legibility": "medium", "baseline": "ascending" }
  },
  "competencies": ["leadership", "adaptability", "initiative"],
  "development_areas": ["detail follow-through"],
  "risks": ["review_baseline", "verify_pressure"],
  "interview_questions": [
    "Tell me about a time you led a team under pressure.",
    "How do you adapt when priorities change suddenly?"
  ],
  "traits": {
    "legibility": "medium",
    "baseline": "ascending",
    "pressure": "medium-light"
  },
  "recommendation": "Use this profile as interview support, not as a standalone hiring decision.",
  "b2b": {
    "tokens_used": 2,
    "tokens_limit": 10,
    "tokens_remaining": 8,
    "client": "Test B2B",
    "plan": "starter"
  },
  "image_debug": [{ "index": 1, "media_type": "image/jpeg", "approx_kb": 42 }]
}

Psychometric Report Ingestion

GraphoHR can receive a candidate psychometric report and cross-reference it with the graphological analysis.

Accepted format: exported PDF (non-scanned), up to 15 MB, in ES/EN/PT/FR/DE/IT. Multiple reports per candidate are cross-referenced separately.

Supported report types

kudert · mbti · bigfive · disc · hogan · pda · wonderlic · 16pf · eneagrama
bis11 (impulsivity) · eq (Bar-On EQ-i) · lid (leadership) · int (integrity) · generic
POST /.netlify/functions/extract-psychometric

Request example

curl -X POST https://graphohr.com/.netlify/functions/extract-psychometric \
  -H "Content-Type: application/json" \
  -H "x-api-key: ghr_your_api_key" \
  -d '{
    "testType": "disc",
    "pdfBase64": "base64_encoded_pdf",
    "language": "es"
  }'

Response example

{
  "ok": true,
  "data": {
    "test_type": "disc",
    "candidate_name": "Jane Doe",
    "raw_dimensions": { "D": 35, "I": 28, "S": 22, "C": 15 },
    "normalized_traits": { "dominance": "high", "stability": "medium" },
    "graphology_comparison_targets": { "pressure": "firm", "slant": "right" },
    "risk_flags": [],
    "strengths": ["decision-making"],
    "development_areas": ["detail follow-through"],
    "confidence": "medio",
    "summary": "Natural dominance with adaptive social drive...",
    "disclaimer": "Support tool. Not a sole hiring criterion."
  },
  "b2b": {
    "client_name": "Test B2B",
    "plan": "starter",
    "tokens_used": 3,
    "tokens_limit": 100,
    "tokens_remaining": 97
  }
}

Returned per report

A structured object: test_type, candidate_name, raw_dimensions, normalized_traits, graphology_comparison_targets, risk_flags, strengths, development_areas, confidence, summary, disclaimer.

The "int" type (integrity/honesty) is an orientative indicator of consistency and behavioral reliability only — never an honesty verdict or automatic rejection criterion. Validate with interview, references and external evidence.

Available to B2B partners under the same API-key model described above, granted on request. Email info@graphohr.com to enable ingestion, quotas and webhooks.

Plans and Limits

PlanTypical monthly limit
Starter100 analyses
Growth500 analyses
EnterpriseCustom

Error Codes

StatusMeaning
401Missing, invalid, or inactive API key
429Token limit exceeded
500Server configuration or provider error

Need production access?

Contact GraphoHR to create a key, define volume limits, and align integration requirements.

Contact GraphoHR