Skip to main content

cURL Quickstart

Authenticate, access tenant data, and create decision proofs — all from the command line.

1. Login

curl -X POST https://cronozen.com/api/auth/login \
  -H "Content-Type: application/json" \
  -d '{
    "email": "admin@center.com",
    "password": "your-password"
  }'
{
  "success": true,
  "data": {
    "accessToken": "eyJhbGciOiJIUzI1NiIs...",
    "refreshToken": "eyJhbGciOiJIUzI1NiIs...",
    "expiresIn": 3600,
    "actor": {
      "id": "actor_abc123",
      "email": "admin@center.com",
      "name": "Kim Admin",
      "role": "ADMIN"
    },
    "center": {
      "id": 1,
      "name": "Seoul Rehab Center",
      "domain": "seoul-rehab"
    }
  }
}
Save the token for subsequent requests:
export TOKEN="eyJhbGciOiJIUzI1NiIs..."

2. Get Current User

curl https://cronozen.com/api/auth/me \
  -H "Authorization: Bearer $TOKEN"
{
  "success": true,
  "data": {
    "actorId": "actor_abc123",
    "email": "admin@center.com",
    "role": "ADMIN",
    "centerId": 1,
    "centerDomain": "seoul-rehab",
    "authorizedDomains": ["seoul-rehab", "busan-rehab"],
    "memberships": [
      {
        "centerId": 1,
        "centerName": "Seoul Rehab Center",
        "role": "ADMIN",
        "status": "ACTIVE"
      },
      {
        "centerId": 2,
        "centerName": "Busan Rehab Center",
        "role": "ADMIN",
        "status": "ACTIVE"
      }
    ]
  }
}

3. Switch Center

If you have memberships in multiple centers:
curl -X POST https://cronozen.com/api/auth/switch-center \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "centerId": 2 }'
A new JWT is issued with the target center context.

4. Get Center Info

curl https://cronozen.com/api/centers/seoul-rehab/info
{
  "success": true,
  "data": {
    "name": "Seoul Rehab Center",
    "description": "Child development rehabilitation center",
    "vertical": "rehabilitation",
    "logo": "https://cdn.cronozen.com/logos/seoul-rehab.svg"
  }
}

5. List Instructors

curl https://cronozen.com/api/centers/seoul-rehab/instructors \
  -H "Authorization: Bearer $TOKEN"

6. Create a Decision Proof (DPU)

Record a decision with tamper-evident hash chain:
curl -X POST https://cronozen.com/api/dpu/demo \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "content": "Approved therapy plan for patient #1234. Plan includes 3 sessions per week.",
    "referenceType": "therapy-plan",
    "referenceId": "plan_1234",
    "tags": ["therapy", "approval", "rehab"]
  }'
{
  "success": true,
  "data": {
    "id": "dpu_xyz789",
    "chainHash": "a1b2c3d4e5f6...",
    "chainIndex": 42,
    "evidenceLevel": "DRAFT",
    "createdAt": "2026-03-08T10:30:00Z"
  }
}

7. Verify Chain Integrity

curl https://cronozen.com/api/dpu/dpu_xyz789/verify \
  -H "Authorization: Bearer $TOKEN"
{
  "success": true,
  "data": {
    "valid": true,
    "chainLength": 42,
    "genesisHash": "0000abcd...",
    "brokenAt": null
  }
}

8. Export as JSON-LD

curl https://cronozen.com/api/dpu/dpu_xyz789/export \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: application/ld+json"

9. Cross-App SSO (OPS → LMS)

Generate a single-use token for seamless login to LMS:
# Generate SSO token
curl -X POST https://cronozen.com/api/auth/sso/token \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "targetApp": "lms" }'

# Use on LMS
curl -X POST https://learn.cronozen.com/api/auth/sso/verify \
  -H "Content-Type: application/json" \
  -d '{ "token": "sso-token-..." }'

10. Partner: List Managed Centers

curl https://cronozen.com/api/partner/centers \
  -H "Authorization: Bearer $TOKEN"
{
  "success": true,
  "data": [
    {
      "id": 1,
      "name": "Seoul Rehab Center",
      "centerDomain": "seoul-rehab",
      "status": "ACTIVE",
      "memberCount": 45
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 50,
    "total": 3
  }
}

Rate Limits

TierLimit
Standard100 requests/minute
Partner500 requests/minute
Rate limit headers are included in every response:
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 95
X-RateLimit-Reset: 1709900400