Appearance
Account Management API
Resellers can manage their sub-accounts using the Accounts API. This lets you create accounts for your customers, assign services, and manage their API credentials.
Endpoints Overview
GET /api/accounts- List all your accountsPOST /api/accounts- Create a new accountGET /api/accounts/{id}- Get a specific accountPATCH /api/accounts/{id}- Update an accountPOST /api/accounts/{id}/reset-credentials- Reset API credentialsGET /api/services/resellable- See which services you can assign
List Your Accounts
Get all the accounts you've created.
Request:
http
GET /api/accountsResponse:
http
HTTP/1.1 200 OK
Content-Type: application/json
[
{
"id": 2,
"name": "PlaySafe Bingo",
"enabledServices": [
{
"serviceId": 12,
"checkType": "KYC",
"provider": "Experian KYC"
},
{
"serviceId": 14,
"checkType": "Bank account verification",
"provider": "Experian BAV"
}
]
},
{
"id": 3,
"name": "SwiftCard Financial",
"enabledServices": [
{
"serviceId": 12,
"checkType": "KYC",
"provider": "Experian KYC"
}
]
}
]Get Available Services
Before creating or updating accounts, check which services you're allowed to assign.
Request:
http
GET /api/services/resellableResponse:
http
HTTP/1.1 200 OK
Content-Type: application/json
[
{
"serviceId": 12,
"checkType": "KYC",
"provider": "Experian KYC"
},
{
"serviceId": 14,
"checkType": "Bank account verification",
"provider": "Experian BAV"
},
{
"serviceId": 18,
"checkType": "AML",
"provider": "LexisNexis"
}
]Use the serviceId values when creating or updating accounts.
Create an Account
Create a new account for one of your customers. Each account receives API credentials that allow programmatic access to the EyeDP API on behalf of that account.
Request:
http
POST /api/accounts
Content-Type: application/json
{
"name": "GlobalJet Bookings",
"enabledServices": [12, 14],
"externalReference": "customer-abc-123"
}Response (created):
http
HTTP/1.1 201 Created
Location: /api/accounts/42
Content-Type: application/json
{
"account": {
"id": 42,
"name": "GlobalJet Bookings",
"enabledServices": [
{
"serviceId": 12,
"checkType": "KYC",
"provider": "Experian KYC"
},
{
"serviceId": 14,
"checkType": "Bank account verification",
"provider": "Experian BAV"
}
]
},
"credentials": {
"clientId": "a3b2c1d4-5e6f-7g8h-9i0j-k1l2m3n4o5p6",
"clientSecret": "8KqpuZipZvHcSnZUpxk0eoOweBSB1HcAP..."
},
"securityWarning": "IMPORTANT: The client secret is only shown once and cannot be retrieved later. Store it securely immediately."
}⚠️ Critical: Store the Client Secret
The clientSecret is only shown once when you create the account. You cannot retrieve it again later. Make sure to:
- Store it securely in your system immediately
- Transmit it securely to your customer
- Never log or display it in plain text after initial creation
If the secret is lost, you'll need to use the reset credentials endpoint to generate a new one.
Idempotency
The externalReference field makes account creation idempotent - you can safely retry the same request without creating duplicates.
If you call the endpoint again with the same externalReference, you'll get the existing account back:
Request (retry with same externalReference):
http
POST /api/accounts
Content-Type: application/json
{
"name": "GlobalJet Bookings",
"enabledServices": [12, 14],
"externalReference": "customer-abc-123"
}Response (existing account returned):
http
HTTP/1.1 200 OK
Content-Type: application/json
{
"account": {
"id": 42,
"name": "GlobalJet Bookings",
"enabledServices": [
{
"serviceId": 12,
"checkType": "KYC",
"provider": "Experian KYC"
},
{
"serviceId": 14,
"checkType": "Bank account verification",
"provider": "Experian BAV"
}
]
},
"credentials": {
"clientId": "a3b2c1d4-5e6f-7g8h-9i0j-k1l2m3n4o5p6",
"clientSecret": "***REDACTED***"
},
"securityWarning": "This account already exists. The client secret cannot be retrieved. Use POST /api/accounts/42/reset-credentials to generate a new one."
}Note the 200 OK instead of 201 Created - this tells you the account already existed. The clientSecret is masked because it can no longer be retrieved.
Request Fields
- name (required) - A name for the account. Must be unique across all accounts in the system.
- enabledServices (optional) - Array of service IDs to enable. Use the IDs from
/api/services/resellable. If omitted or empty, the account is created with no services. - externalReference (optional) - Your own identifier for idempotency. Strongly recommended for production use.
Error Responses
Invalid service ID:
http
HTTP/1.1 400 Bad Request
"Invalid service ID"Name already in use:
http
HTTP/1.1 409 Conflict
"Name is in use by another account"Not authorized (only resellers can create accounts):
http
HTTP/1.1 403 Forbidden
{
"type": "https://tools.ietf.org/html/rfc7231#section-6.5.3",
"title": "Insufficient Permissions",
"status": 403,
"detail": "Only resellers can create accounts"
}Get a Specific Account
Retrieve details for one account, including its Client ID (but not the secret).
Request:
http
GET /api/accounts/42Response:
http
HTTP/1.1 200 OK
Content-Type: application/json
{
"account": {
"id": 42,
"name": "GlobalJet Bookings",
"enabledServices": [
{
"serviceId": 12,
"checkType": "KYC",
"provider": "Experian KYC"
}
]
},
"credentials": {
"clientId": "a3b2c1d4-5e6f-7g8h-9i0j-k1l2m3n4o5p6",
"clientSecret": "***REDACTED***"
},
"securityWarning": "The client secret is no longer viewable. Use POST /api/accounts/42/reset-credentials to generate a new one."
}Not found:
http
HTTP/1.1 404 Not FoundReset API Credentials
If your customer loses their client secret, or you need to rotate credentials for security, you can reset them. This generates a new clientSecret while keeping the same clientId.
Request:
http
POST /api/accounts/42/reset-credentialsResponse:
http
HTTP/1.1 200 OK
Content-Type: application/json
{
"clientId": "a3b2c1d4-5e6f-7g8h-9i0j-k1l2m3n4o5p6",
"clientSecret": "new-secret-KqpuZipZvHcSnZUpxk0eoOweBSB1...",
"securityWarning": "IMPORTANT: Client secret has been reset. The new secret is only shown once and cannot be retrieved later. Store it securely immediately."
}Important Notes
- The
clientIdstays the same - only the secret changes - The new secret is only shown once - store it immediately
- The old secret stops working immediately
- Your customer will need to update their integration with the new secret
Not found:
http
HTTP/1.1 404 Not FoundUpdate an Account
Change an account's name and/or services. Both fields are optional - only include what you want to change.
Update name only
Request:
http
PATCH /api/accounts/42
Content-Type: application/json
{
"name": "GlobalJet Travel Services"
}Response:
http
HTTP/1.1 204 No ContentUpdate services only
Request:
http
PATCH /api/accounts/42
Content-Type: application/json
{
"enabledServices": [12, 14, 18]
}Response:
http
HTTP/1.1 204 No ContentDisable all services
Pass an empty array to disable all services:
Request:
http
PATCH /api/accounts/42
Content-Type: application/json
{
"enabledServices": []
}Response:
http
HTTP/1.1 204 No ContentUpdate both name and services
Request:
http
PATCH /api/accounts/42
Content-Type: application/json
{
"name": "GlobalJet Travel Services",
"enabledServices": [12, 18]
}Response:
http
HTTP/1.1 204 No ContentRequest Fields
- name (optional) - New name for the account. If null, the name won't be changed.
- enabledServices (optional) - New list of service IDs. This replaces the entire list - it doesn't add/remove individual services. If null, services won't be changed. If empty array, all services are disabled.
Error Responses
Invalid service ID:
http
HTTP/1.1 400 Bad Request
"Invalid service ID"Account not found:
http
HTTP/1.1 404 Not FoundCommon Workflows
Creating an account with services
- Call
GET /api/services/resellableto see available services - Choose the service IDs you want to enable
- Call
POST /api/accountswith the name and service IDs - Store the returned
clientSecretsecurely immediately - Provide both
clientIdandclientSecretto your customer
Adding services to an existing account
- Call
GET /api/services/resellableto see available services - Call
GET /api/accounts/{id}to see current services - Call
PATCH /api/accounts/{id}with the complete list of services you want enabled
Safe account creation with retries
Include an externalReference to ensure safety for account creation in production:
http
POST /api/accounts
Content-Type: application/json
{
"name": "Customer Name",
"externalReference": "your-customer-id-123",
"enabledServices": [12]
}If your request times out or fails, you can retry with the same externalReference. If the account was created, you'll get it back (with the secret masked). If not, it will be created (with the secret visible).
Rotating credentials for security
- Call
POST /api/accounts/{id}/reset-credentials - Store the new
clientSecretimmediately - Provide the new secret to your customer
- Customer updates their integration
- Old secret stops working immediately
Security Best Practices
For Resellers
- Never log client secrets in plain text
- Store secrets encrypted in your database
- Transmit secrets to customers over secure channels only
- Use
externalReferencefor all production account creation - Implement credential rotation policies
For Your Customers
- Store the
clientIdandclientSecretsecurely (environment variables, secrets manager) - Never commit credentials to source control
- Rotate credentials periodically or if compromised
- Implement token caching to avoid unnecessary authentication calls
- Monitor for 401 errors indicating token expiration

