API Endpoints
All endpoints are prefixed with https://api.angstroma.com/api/v1. All requests require X-Api-Key: your-key.
Profiles
Profiles store a user's accessibility preferences. The userId is your system's user identifier — any string up to 256 characters.
GET
/profiles/{userId}Get full profile with feature settingsGET
/profiles/{userId}/active-featuresGet only enabled features (lightweight)PUT
/profiles/{userId}Update feature settings (bulk, creates if not exists)POST
/profiles/{userId}/apply-presetApply a named preset to the profileDELETE
/profiles/{userId}Delete profile and all settingsGet profile
curl https://api.angstroma.com/api/v1/profiles/user_123 \ -H "X-Api-Key: ang_live_YOUR_KEY"
Response:
{
"exists": true,
"userId": "user_123",
"activePresetCode": "dyslexia-friendly",
"selfServiceEnabled": true,
"gradeLevel": 8,
"configuredBy": "System",
"features": [
{ "featureCode": "reading_mask", "isEnabled": true, "value": null, "setBy": "System" },
{ "featureCode": "text_zoom", "isEnabled": true, "value": "150", "setBy": "System" }
]
}Update profile
curl -X PUT https://api.angstroma.com/api/v1/profiles/user_123 \
-H "X-Api-Key: ang_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"features": [
{ "featureCode": "reading_mask", "isEnabled": true },
{ "featureCode": "large_cursor", "isEnabled": true },
{ "featureCode": "text_zoom", "isEnabled": true, "value": "150" }
],
"setBy": "System"
}'Apply preset
curl -X POST https://api.angstroma.com/api/v1/profiles/user_123/apply-preset \
-H "X-Api-Key: ang_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"presetCode": "dyslexia-friendly",
"clearExisting": false,
"gradeLevel": 8
}'Features & Presets
GET
/featuresList all 83 accessibility toolsGET
/features/{code}Get a single feature by codeGET
/presetsList all available presetsGET
/presets/{code}Get a preset with feature listAnalytics
GET
/analyticsTenant-level usage statisticsPOST
/analytics/logLog a feature activation eventLog feature usage
The SDK calls this automatically when trackUsage is enabled. You can also call it directly for custom feature implementations.
curl -X POST https://api.angstroma.com/api/v1/analytics/log \
-H "X-Api-Key: ang_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"featureCode": "reading_mask",
"externalUserId": "user_123",
"action": "activated"
}'AI Content Transforms
AI endpoints require a plan with AI credits.
POST
/content/simplifySimplify text to a target reading levelPOST
/content/alt-textGenerate alt text for an image URLPOST
/content/hintsGet scaffolded hints for a questionPOST
/content/rephraseRephrase a question/answer pairPOST
/content/vocabularyExtract vocabulary words from textPOST
/content/summarizeSummarize a passagePOST
/content/translateTranslate text to a target languagePOST
/content/grammarCheck and correct grammarPOST
/content/ocrExtract text from an image URLSimplify text
curl -X POST https://api.angstroma.com/api/v1/content/simplify \
-H "X-Api-Key: ang_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"text": "The mitochondria is the powerhouse of the cell.",
"targetGradeLevel": 5
}'Response:
{
"result": "The mitochondria makes energy for the cell, like a battery.",
"wasCached": false,
"tokensUsed": 48
}WCAG Scanner
POST
/scanner/jobsSubmit a URL for WCAG scanningGET
/scanner/jobsList scan jobsGET
/scanner/jobs/{jobId}Get scan job status and resultsGET
/scanner/jobs/{jobId}/issuesList all issues found in a scanCompliance
GET
/compliance/targetsList compliance targetsPOST
/compliance/targetsCreate a compliance targetGET
/compliance/snapshotsList compliance snapshotsPOST
/compliance/snapshotsCreate a snapshotGET
/compliance/reportsList generated reportsPOST
/compliance/reportsGenerate a VPAT or compliance reportGET
/compliance/reports/{id}/downloadDownload a report PDFTenants & Team
GET
/tenantsList tenants the current user belongs toGET
/tenants/{id}Get a tenant by IDPUT
/tenants/{id}Update tenant settingsGET
/membersList team membersPOST
/members/inviteInvite a team memberDELETE
/members/{id}Remove a team memberAPI Keys
GET
/tenants/{id}/api-keysList API keys (hashed, never raw)POST
/tenants/{id}/api-keysCreate API key (raw key returned once)DELETE
/tenants/{id}/api-keys/{keyId}Revoke an API keyHealth
GET
/healthAPI health check (no auth required)