Affirm Content Customization API
The Affirm Content Customization API (introduced in HYPR 10.3.0) provides endpoints for managing content customizations used by Affirm Studio.
This feature currently has API-only support. No Control Center user interface is available yet.
For general branding customization (logos, backgrounds, colors), see Custom Branding.
Base URL
/content-customization
Authentication
All API endpoints require proper authentication. Include your API credentials in the request headers.
Endpoints
Create Content Customization
Creates a new content customization configuration.
POST /content-customization
Content-Type: application/json
Request Body:
{
"displayName": "Content Customization 2",
"description": "Company-specific branding for verification screens",
"contentMap": {
"consentScreen": {
"cardHeader": {
"title": "Welcome to Company Verification",
"description": "Please review and accept our terms"
},
"cardContent": {
"mainContent": "By proceeding, you agree to our verification process",
"extraContent": "This process helps us verify your identity securely"
},
"cardFooter": {
"caption1": "Secure verification process",
"caption2": "Powered by HYPR"
},
"buttonLabels": {
"accept": "I Accept",
"decline": "Decline"
}
},
"instructionsScreen": {
"cardHeader": {
"title": "Verification Instructions",
"description": "Follow these steps to complete verification"
},
"cardContent": {
"mainContent": "Please follow the instructions carefully to complete your verification",
"extraContent": "Ensure you have a valid government-issued ID ready"
},
"cardFooter": {
"caption1": "Secure verification process",
"caption2": "Powered by HYPR"
},
"buttonLabels": {
"continue": "Continue",
"back": "Back"
}
}
}
}
Response:
{
"id": 123,
"displayName": "Content Customization 2",
"description": "Company-specific branding for verification screens",
"contentMap": {
"consentScreen": {
"cardHeader": {
"title": "Welcome to Company Verification",
"description": "Please review and accept our terms"
},
"cardContent": {
"mainContent": "By proceeding, you agree to our verification process",
"extraContent": "This process helps us verify your identity securely"
},
"cardFooter": {
"caption1": "Secure verification process",
"caption2": "Powered by HYPR"
},
"buttonLabels": {
"accept": "I Accept",
"decline": "Decline"
}
}
},
"createdAt": "2024-01-15T10:30:00Z",
"updatedAt": "2024-01-15T10:30:00Z"
}
Update Content Customization
Updates an existing content customization configuration.
POST /content-customization/:content-customization-id
Content-Type: application/json
Request Body:
{
"displayName": "Content Customization 2.2",
"contentMap": {
"instructionsScreen": {
"cardHeader": {
"title": "Updated Instructions"
}
}
}
}
Response:
{
"id": 123,
"displayName": "Content Customization 2.2",
"description": "Company-specific branding for verification screens",
"contentMap": {
"consentScreen": {
"cardHeader": {
"title": "Welcome to Company Verification",
"description": "Please review and accept our terms"
}
},
"instructionsScreen": {
"cardHeader": {
"title": "Updated Instructions"
}
}
},
"createdAt": "2024-01-15T10:30:00Z",
"updatedAt": "2024-01-15T11:45:00Z"
}
List All Content Customizations
Retrieves all content customizations.
GET /content-customization
Response:
{
"contentCustomizations": [
{
"id": 123,
"displayName": "Content Customization 2.2",
"description": "Company-specific branding for verification screens",
"createdAt": "2024-01-15T10:30:00Z",
"updatedAt": "2024-01-15T11:45:00Z"
},
{
"id": 124,
"displayName": "Spanish Localization",
"description": "Spanish language content for global teams",
"createdAt": "2024-01-16T09:15:00Z",
"updatedAt": "2024-01-16T09:15:00Z"
}
],
"total": 2
}
Retrieve Specific Content Customization
Retrieves a specific content customization by ID.
GET /content-customization/:content-customization-id
Response:
{
"id": 123,
"displayName": "Content Customization 2.2",
"description": "Company-specific branding for verification screens",
"contentMap": {
"consentScreen": {
"cardHeader": {
"title": "Welcome to Company Verification",
"description": "Please review and accept our terms"
},
"cardContent": {
"mainContent": "By proceeding, you agree to our verification process",
"extraContent": "This process helps us verify your identity securely"
},
"cardFooter": {
"caption1": "Secure verification process",
"caption2": "Powered by HYPR"
},
"buttonLabels": {
"accept": "I Accept",
"decline": "Decline"
}
}
},
"createdAt": "2024-01-15T10:30:00Z",
"updatedAt": "2024-01-15T11:45:00Z"
}
Data Models
ContentCustomization
| Field | Type | Description |
|---|---|---|
id | Long | Unique identifier for the content customization |
displayName | String | Display name for the customization |
description | String | Description of the customization purpose |
contentMap | AffirmContentMap | Screen-specific content configuration |
createdAt | DateTime | Creation timestamp |
updatedAt | DateTime | Last update timestamp |
AffirmContentMap
Contains configuration for all customizable screens:
| Screen | Type | Description |
|---|---|---|
consentScreen | BaseContentCustomizationMap | Initial consent screen |
instructionsScreen | BaseContentCustomizationMap | Step-by-step guidance |
loginIdentifierScreen | BaseContentCustomizationMap | Username/email input |
phoneNumberOrEmailScreen | BaseContentCustomizationMap | Contact information collection |
otpScreen | BaseContentCustomizationMap | One-time password verification |
locationScreen | BaseContentCustomizationMap | Location-based verification |
idvAwaitScreen | BaseContentCustomizationMap | Waiting for identity verification |
idvRequestorReportScreen | BaseContentCustomizationMap | Verification status reporting |
documentLivenessScreen | BaseContentCustomizationMap | Document and biometric verification |
autoApprovalAwaitScreen | BaseContentCustomizationMap | Waiting for automatic approval |
outcomeScreen | BaseContentCustomizationMap | Final verification results |
deniedScreen | BaseContentCustomizationMap | Access denial notification |
BaseContentCustomizationMap
| Field | Type | Description |
|---|---|---|
cardHeader | CardHeaderContentCustomizationMap | Header content configuration |
cardContent | CardContentContentCustomizationMap | Main content configuration |
cardFooter | CardFooterContentCustomizationMap | Footer content configuration |
buttonLabels | Map<String, String> | Customizable button text |
CardHeaderContentCustomizationMap
| Field | Type | Description |
|---|---|---|
title | String | Main screen title |
description | String | Screen description text |
CardContentContentCustomizationMap
| Field | Type | Description |
|---|---|---|
mainContent | String | Primary instructional text |
extraContent | String | Additional information or tips |
CardFooterContentCustomizationMap
| Field | Type | Description |
|---|---|---|
caption1 | String | Primary footer text |
caption2 | String | Secondary footer text |
Error Handling
The API returns standard HTTP status codes:
200 OK- Request successful201 Created- Resource created successfully400 Bad Request- Invalid request data401 Unauthorized- Authentication required403 Forbidden- Insufficient permissions404 Not Found- Resource not found500 Internal Server Error- Server error
Rate Limiting
API requests are subject to rate limiting. See the response headers for current rate limit information:
X-RateLimit-Limit- Maximum requests per time windowX-RateLimit-Remaining- Remaining requests in current windowX-RateLimit-Reset- Time when the rate limit resets