API Reference

All endpoints require a valid Bearer access token obtained via the OAuth 2.0 flow.

Base URL: https://api.infraidentity.com/api/v1

GET /users/:userId/profile#

Returns the verified profile for a user. Requires profile:read scope.

const response = await fetch(
  `https://api.infraidentity.com/api/v1/users/${userId}/profile`,
  { headers: { 'Authorization': `Bearer ${accessToken}` } }
);

// Response
{
  "success": true,
  "data": {
    "id": "uuid",
    "email": "user@example.com",
    "first_name": "John",
    "last_name": "Doe",
    "country": "NG",
    "kyc_level": "level_1",
    "risk_score": 75
  }
}

GET /users/:userId/kyc#

Returns KYC verification status. Requires kyc:read scope.

// Response
{
  "success": true,
  "data": {
    "kyc_level": "level_1",
    "status": "verified",
    "verified_at": "2026-01-15T10:30:00Z",
    "provider": "persona"
  }
}

GET /users/:userId/claims#

Returns signed verification claims for a user. Requires claims:read scope.

// Response
{
  "success": true,
  "data": {
    "claims": [
      {
        "claim_type": "kyc_verified",
        "provider": "persona",
        "revoked": false
      },
      {
        "claim_type": "age_over_18",
        "provider": "infra",
        "revoked": false
      },
      {
        "claim_type": "country_resident",
        "provider": "infra",
        "revoked": false
      },
      {
        "claim_type": "unique_human",
        "provider": "persona",
        "revoked": false
      }
    ]
  }
}

This page as Markdown: /api-reference.md · All docs in one file: /llms-full.txt