API Reference
Public-safe REST endpoints for integrating Remllo Identity into your application. Use the API to run direct KYC and KYB checks, create verification sessions, submit evidence and documents, read subject and business context, report identity activity, configure webhooks, and check your wallet balance.
Every request is authenticated with a tenant API key, sent as x-api-key or as an Authorization bearer token. The key determines the tenant and environment.
Most integrations start with POST /v1/verifications/kyc or POST /v1/verifications/kyb.
Verification sessions, evidence upload, document analysis, webhook delivery, and wallet balance routes are documented here.
Examples use placeholder credentials and sample data only. Keep live API keys server-side, never paste secrets into client code, and every mutating request should carry an idempotency key so a retried request cannot create duplicate verification work.
Remllo Identity API
Customer-facing reference for the Remllo Identity API. Use this API to run direct KYC and KYB checks, create verification sessions, submit evidence and documents, read subject and business risk context, report identity and access activity from your own platform, configure webhooks, and check your wallet balance. The environment (sandbox or production) is always derived from the API key; requests that try to override it are rejected. Public examples use placeholders only; do not send secrets in URLs, tickets, or client-side code.
Verifications
Create direct KYC and KYB verification requests and retrieve verification results.
/v1/verifications/kycCreate a direct KYC verification
Runs one or more individual identity checks synchronously against the subject you provide and returns the risk decision immediately. The environment is derived from the API key; do not send an `environment` field or the request is rejected.
Parameters
Request Body
application/jsonProvide the fields required by the checks you request. See the individual check requirements in the product guide.
Base64 image or artifact reference, depending on flow mode.
Evidence that the subject consented to this verification.
Optional request metadata such as ip_address and device_fingerprint.
1curl -X POST "https://api.remllo.com/v1/verifications/kyc" \2 -H "x-api-key: remllo_sk_test_EXAMPLESELECTOR12_examplesecretvaluegoeshere" \3 -H "idempotency-key: 8d80a7b3-2e52-4d74-9f7f-f59f14b97f86" \4 -H "Content-Type: application/json" \5 \6 -d '{7 "subject": {8 "external_ref": "cust_38221",9 "country_code": "NG",10 "individual": {11 "bvn": "22123456789",12 "nin": "12345678901",13 "phone_number": "+2348012345678",14 "first_name": "Ada",15 "last_name": "Okoye",16 "date_of_birth": "1990-04-12",17 "gender": "Female",18 "doc_image": "...",19 "selfie_image": "..."20 }21 },22 "checks": [23 "bvn",24 "liveness"25 ],26 "consent": {27 "captured_at": "2026-03-20T10:00:00.000Z",28 "source": "checkbox_web_form",29 "legal_basis": "contract",30 "reference": "consent_9f1b2c"31 },32 "client_reference": "onboarding_9911",33 "context": {}34}'{
"environment": {
"type": "string",
"enum": [
"sandbox",
"production"
]
},
"billable": {
"type": "boolean"
},
"data_source": {
"type": "string",
"enum": [
"mock",
"provider"
]
},
"verification_id": "ver_9c1f2a3b4d5e6f708192a3b4c5d6e7f8",
"status": {
"type": "string",
"enum": [
"pending",
"in_progress",
"completed",
"failed",
"manual_review"
]
},
"subject_id": "sub_1a2b3c4d5e6f708192a3b4c5d6e7f8a9",
"case_type": {
"type": "string",
"enum": [
"kyc",
"kyb"
]
},
"client_reference": {
"type": "string"
},
"created_at": {
"type": "string",
"format": "date-time"
},
"completed_at": {
"type": "string",
"format": "date-time"
},
"result": {
"type": "object",
"properties": {
"decision": {
"type": "string",
"enum": [
"approve",
"review",
"reject"
]
},
"risk_score": {
"type": "number",
"minimum": 0,
"maximum": 100
},
"risk_level": {
"type": "string",
"enum": [
"low",
"medium",
"high",
"critical"
]
},
"checks": {
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"bvn",
"nin",
"government_id",
"selfie",
"liveness",
"age_gender",
"document_verification",
"document_verification_with_face",
"face_match",
"phone",
"bank_account",
"drivers_license",
"international_passport",
"voters_card",
"tin",
"vnin",
"address",
"sanctions_screening",
"pep_screening",
"company_registry",
"director_verification",
"ubo_lookup"
]
},
"status": {
"type": "string",
"enum": [
"passed",
"failed",
"pending",
"manual_review",
"awaiting_evidence"
]
},
"confidence_score": {
"type": "number",
"minimum": 0,
"maximum": 100
},
"completed_at": {
"type": "string",
"format": "date-time"
},
"result": {
"type": "object",
"description": "Displayable normalized fields for this check. Shape varies by check type."
},
"match": {
"type": "object",
"properties": {
"overall": {
"type": "string",
"enum": [
"match",
"partial_match",
"mismatch",
"unavailable"
]
},
"fields": {
"type": "array",
"items": {
"type": "object",
"properties": {
"field": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"matched",
"mismatch",
"unavailable"
]
},
"submitted": {
"type": "string"
},
"returned": {
"type": "string"
}
}
}
}
}
},
"billing": {
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"reserved",
"captured",
"released"
]
},
"currency": "NGN",
"amount_minor": 15000
}
},
"coverage_gap": {
"type": "object",
"properties": {
"type": {
"type": "string"
},
"country_code": {
"type": "string"
},
"check_type": {
"type": "string"
},
"subject_type": {
"type": "string"
},
"reason": {
"type": "string"
}
}
}
}
}
}
}
},
"audit_ref": {
"type": "string"
}
}/v1/verifications/kybCreate a direct KYB verification
Runs one or more business checks synchronously against the business you provide and returns the risk decision immediately. The environment is derived from the API key; do not send an `environment` field or the request is rejected.
Parameters
Request Body
application/jsonRepresentative first name, required for screening checks.
Representative last name, required for screening checks.
Evidence that the subject consented to this verification.
1curl -X POST "https://api.remllo.com/v1/verifications/kyb" \2 -H "x-api-key: remllo_sk_test_EXAMPLESELECTOR12_examplesecretvaluegoeshere" \3 -H "idempotency-key: 8d80a7b3-2e52-4d74-9f7f-f59f14b97f86" \4 -H "Content-Type: application/json" \5 \6 -d '{7 "subject": {8 "external_ref": "biz_5521",9 "country_code": "NG",10 "business": {11 "legal_name": "Lagos Trade Exchange Ltd",12 "registration_number": "RC1234567",13 "first_name": "...",14 "last_name": "...",15 "tin": "..."16 }17 },18 "checks": [19 "company_registry",20 "sanctions_screening"21 ],22 "consent": {23 "captured_at": "2026-03-20T10:00:00.000Z",24 "source": "checkbox_web_form",25 "legal_basis": "contract",26 "reference": "consent_9f1b2c"27 },28 "client_reference": "...",29 "context": {}30}'{
"environment": {
"type": "string",
"enum": [
"sandbox",
"production"
]
},
"billable": {
"type": "boolean"
},
"data_source": {
"type": "string",
"enum": [
"mock",
"provider"
]
},
"verification_id": "ver_9c1f2a3b4d5e6f708192a3b4c5d6e7f8",
"status": {
"type": "string",
"enum": [
"pending",
"in_progress",
"completed",
"failed",
"manual_review"
]
},
"subject_id": "sub_1a2b3c4d5e6f708192a3b4c5d6e7f8a9",
"case_type": {
"type": "string",
"enum": [
"kyc",
"kyb"
]
},
"client_reference": {
"type": "string"
},
"created_at": {
"type": "string",
"format": "date-time"
},
"completed_at": {
"type": "string",
"format": "date-time"
},
"result": {
"type": "object",
"properties": {
"decision": {
"type": "string",
"enum": [
"approve",
"review",
"reject"
]
},
"risk_score": {
"type": "number",
"minimum": 0,
"maximum": 100
},
"risk_level": {
"type": "string",
"enum": [
"low",
"medium",
"high",
"critical"
]
},
"checks": {
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"bvn",
"nin",
"government_id",
"selfie",
"liveness",
"age_gender",
"document_verification",
"document_verification_with_face",
"face_match",
"phone",
"bank_account",
"drivers_license",
"international_passport",
"voters_card",
"tin",
"vnin",
"address",
"sanctions_screening",
"pep_screening",
"company_registry",
"director_verification",
"ubo_lookup"
]
},
"status": {
"type": "string",
"enum": [
"passed",
"failed",
"pending",
"manual_review",
"awaiting_evidence"
]
},
"confidence_score": {
"type": "number",
"minimum": 0,
"maximum": 100
},
"completed_at": {
"type": "string",
"format": "date-time"
},
"result": {
"type": "object",
"description": "Displayable normalized fields for this check. Shape varies by check type."
},
"match": {
"type": "object",
"properties": {
"overall": {
"type": "string",
"enum": [
"match",
"partial_match",
"mismatch",
"unavailable"
]
},
"fields": {
"type": "array",
"items": {
"type": "object",
"properties": {
"field": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"matched",
"mismatch",
"unavailable"
]
},
"submitted": {
"type": "string"
},
"returned": {
"type": "string"
}
}
}
}
}
},
"billing": {
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"reserved",
"captured",
"released"
]
},
"currency": "NGN",
"amount_minor": 15000
}
},
"coverage_gap": {
"type": "object",
"properties": {
"type": {
"type": "string"
},
"country_code": {
"type": "string"
},
"check_type": {
"type": "string"
},
"subject_type": {
"type": "string"
},
"reason": {
"type": "string"
}
}
}
}
}
}
}
},
"audit_ref": {
"type": "string"
}
}/v1/verifications/{verification_id}Retrieve a verification
Returns the current status, decision, and check results for a verification created with either the direct verification or session endpoints.
Parameters
1curl -X GET "https://api.remllo.com/v1/verifications/{verification_id}" \2 -H "x-api-key: remllo_sk_test_EXAMPLESELECTOR12_examplesecretvaluegoeshere" \3 -H "Content-Type: application/json"{
"environment": {
"type": "string",
"enum": [
"sandbox",
"production"
]
},
"billable": {
"type": "boolean"
},
"data_source": {
"type": "string",
"enum": [
"mock",
"provider"
]
},
"verification_id": "ver_9c1f2a3b4d5e6f708192a3b4c5d6e7f8",
"status": {
"type": "string",
"enum": [
"pending",
"in_progress",
"completed",
"failed",
"manual_review"
]
},
"subject_id": "sub_1a2b3c4d5e6f708192a3b4c5d6e7f8a9",
"case_type": {
"type": "string",
"enum": [
"kyc",
"kyb"
]
},
"client_reference": {
"type": "string"
},
"created_at": {
"type": "string",
"format": "date-time"
},
"completed_at": {
"type": "string",
"format": "date-time"
},
"result": {
"type": "object",
"properties": {
"decision": {
"type": "string",
"enum": [
"approve",
"review",
"reject"
]
},
"risk_score": {
"type": "number",
"minimum": 0,
"maximum": 100
},
"risk_level": {
"type": "string",
"enum": [
"low",
"medium",
"high",
"critical"
]
},
"checks": {
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"bvn",
"nin",
"government_id",
"selfie",
"liveness",
"age_gender",
"document_verification",
"document_verification_with_face",
"face_match",
"phone",
"bank_account",
"drivers_license",
"international_passport",
"voters_card",
"tin",
"vnin",
"address",
"sanctions_screening",
"pep_screening",
"company_registry",
"director_verification",
"ubo_lookup"
]
},
"status": {
"type": "string",
"enum": [
"passed",
"failed",
"pending",
"manual_review",
"awaiting_evidence"
]
},
"confidence_score": {
"type": "number",
"minimum": 0,
"maximum": 100
},
"completed_at": {
"type": "string",
"format": "date-time"
},
"result": {
"type": "object",
"description": "Displayable normalized fields for this check. Shape varies by check type."
},
"match": {
"type": "object",
"properties": {
"overall": {
"type": "string",
"enum": [
"match",
"partial_match",
"mismatch",
"unavailable"
]
},
"fields": {
"type": "array",
"items": {
"type": "object",
"properties": {
"field": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"matched",
"mismatch",
"unavailable"
]
},
"submitted": {
"type": "string"
},
"returned": {
"type": "string"
}
}
}
}
}
},
"billing": {
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"reserved",
"captured",
"released"
]
},
"currency": "NGN",
"amount_minor": 15000
}
},
"coverage_gap": {
"type": "object",
"properties": {
"type": {
"type": "string"
},
"country_code": {
"type": "string"
},
"check_type": {
"type": "string"
},
"subject_type": {
"type": "string"
},
"reason": {
"type": "string"
}
}
}
}
}
}
}
},
"audit_ref": {
"type": "string"
}
}Verification Sessions
Create and track verification sessions for API-driven, hosted, or embedded onboarding flows.
/v1/sessions/kycCreate a KYC verification session
Creates a session-tracked KYC verification. Use flow_mode `hosted` or `embedded` to defer document and biometric evidence until the subject completes a follow-up step, or `api` when you already have all evidence.
Parameters
Request Body
application/jsonProvide the fields required by the checks you request. See the individual check requirements in the product guide.
Base64 image or artifact reference, depending on flow mode.
Evidence that the subject consented to this verification.
api expects all evidence up front. hosted and embedded defer document and biometric evidence to a follow-up step.
1curl -X POST "https://api.remllo.com/v1/sessions/kyc" \2 -H "x-api-key: remllo_sk_test_EXAMPLESELECTOR12_examplesecretvaluegoeshere" \3 -H "idempotency-key: 8d80a7b3-2e52-4d74-9f7f-f59f14b97f86" \4 -H "Content-Type: application/json" \5 \6 -d '{7 "subject": {8 "country_code": "NG",9 "individual": {10 "bvn": "22123456789",11 "nin": "12345678901",12 "phone_number": "+2348012345678",13 "first_name": "Ada",14 "last_name": "Okoye",15 "date_of_birth": "1990-04-12",16 "gender": "Female",17 "doc_image": "...",18 "selfie_image": "..."19 }20 },21 "checks": [22 "bvn"23 ],24 "consent": {25 "captured_at": "2026-03-20T10:00:00.000Z",26 "source": "checkbox_web_form",27 "legal_basis": "contract",28 "reference": "consent_9f1b2c"29 },30 "flow_mode": "api",31 "session_expires_at": "2026-03-20T10:15:00.000Z",32 "idempotencyKey": "...",33 "metadata": {}34}'{
"session_id": "vsn_2b3c4d5e6f708192a3b4c5d6e7f8a9b0",
"verification_id": {
"type": "string"
},
"subject_id": {
"type": "string"
},
"case_type": {
"type": "string",
"enum": [
"kyc",
"kyb"
]
},
"flow_mode": {
"type": "string",
"enum": [
"api",
"hosted",
"embedded"
]
},
"status": {
"type": "string",
"enum": [
"created",
"awaiting_document",
"document_processing",
"review_required",
"completed",
"failed"
]
},
"current_step": {
"type": "string",
"enum": [
"verification_created",
"awaiting_document_upload",
"artifact_scanning",
"document_analysis",
"manual_review",
"completed",
"failed"
]
},
"created_at": {
"type": "string",
"format": "date-time"
},
"updated_at": {
"type": "string",
"format": "date-time"
},
"expires_at": {
"type": "string",
"format": "date-time"
},
"verification_status": {
"type": "string",
"enum": [
"pending",
"in_progress",
"completed",
"failed",
"manual_review"
]
},
"environment": {
"type": "string",
"enum": [
"sandbox",
"production"
]
},
"billable": {
"type": "boolean"
},
"data_source": {
"type": "string",
"enum": [
"mock",
"provider"
]
},
"next_actions": {
"type": "array",
"items": {
"type": "string"
}
},
"summary": {
"type": "object",
"properties": {
"requested_checks": {
"type": "array",
"items": {
"type": "string"
}
},
"open_review_count": {
"type": "integer"
},
"document_count": {
"type": "integer"
},
"artifact_count": {
"type": "integer"
},
"pending_artifact_scans": {
"type": "integer"
},
"pending_document_processing": {
"type": "integer"
}
}
},
"metadata": {
"type": "object"
}
}/v1/sessions/kybCreate a KYB verification session
Creates a session-tracked KYB verification. Use flow_mode `hosted` or `embedded` to defer evidence collection to a follow-up step.
Parameters
Request Body
application/jsonRepresentative first name, required for screening checks.
Representative last name, required for screening checks.
Evidence that the subject consented to this verification.
api expects all evidence up front. hosted and embedded defer document and biometric evidence to a follow-up step.
1curl -X POST "https://api.remllo.com/v1/sessions/kyb" \2 -H "x-api-key: remllo_sk_test_EXAMPLESELECTOR12_examplesecretvaluegoeshere" \3 -H "idempotency-key: 8d80a7b3-2e52-4d74-9f7f-f59f14b97f86" \4 -H "Content-Type: application/json" \5 \6 -d '{7 "subject": {8 "country_code": "NG",9 "business": {10 "legal_name": "Lagos Trade Exchange Ltd",11 "registration_number": "RC1234567",12 "first_name": "...",13 "last_name": "...",14 "tin": "..."15 }16 },17 "checks": [18 "tin"19 ],20 "consent": {21 "captured_at": "2026-03-20T10:00:00.000Z",22 "source": "checkbox_web_form",23 "legal_basis": "contract",24 "reference": "consent_9f1b2c"25 },26 "flow_mode": "api",27 "session_expires_at": "2026-03-20T10:15:00.000Z",28 "idempotencyKey": "...",29 "metadata": {}30}'{
"session_id": "vsn_2b3c4d5e6f708192a3b4c5d6e7f8a9b0",
"verification_id": {
"type": "string"
},
"subject_id": {
"type": "string"
},
"case_type": {
"type": "string",
"enum": [
"kyc",
"kyb"
]
},
"flow_mode": {
"type": "string",
"enum": [
"api",
"hosted",
"embedded"
]
},
"status": {
"type": "string",
"enum": [
"created",
"awaiting_document",
"document_processing",
"review_required",
"completed",
"failed"
]
},
"current_step": {
"type": "string",
"enum": [
"verification_created",
"awaiting_document_upload",
"artifact_scanning",
"document_analysis",
"manual_review",
"completed",
"failed"
]
},
"created_at": {
"type": "string",
"format": "date-time"
},
"updated_at": {
"type": "string",
"format": "date-time"
},
"expires_at": {
"type": "string",
"format": "date-time"
},
"verification_status": {
"type": "string",
"enum": [
"pending",
"in_progress",
"completed",
"failed",
"manual_review"
]
},
"environment": {
"type": "string",
"enum": [
"sandbox",
"production"
]
},
"billable": {
"type": "boolean"
},
"data_source": {
"type": "string",
"enum": [
"mock",
"provider"
]
},
"next_actions": {
"type": "array",
"items": {
"type": "string"
}
},
"summary": {
"type": "object",
"properties": {
"requested_checks": {
"type": "array",
"items": {
"type": "string"
}
},
"open_review_count": {
"type": "integer"
},
"document_count": {
"type": "integer"
},
"artifact_count": {
"type": "integer"
},
"pending_artifact_scans": {
"type": "integer"
},
"pending_document_processing": {
"type": "integer"
}
}
},
"metadata": {
"type": "object"
}
}/v1/sessions/{session_id}Retrieve a verification session
Returns the current step, status, and evidence summary for a verification session.
Parameters
1curl -X GET "https://api.remllo.com/v1/sessions/{session_id}" \2 -H "x-api-key: remllo_sk_test_EXAMPLESELECTOR12_examplesecretvaluegoeshere" \3 -H "Content-Type: application/json"{
"session_id": "vsn_2b3c4d5e6f708192a3b4c5d6e7f8a9b0",
"verification_id": {
"type": "string"
},
"subject_id": {
"type": "string"
},
"case_type": {
"type": "string",
"enum": [
"kyc",
"kyb"
]
},
"flow_mode": {
"type": "string",
"enum": [
"api",
"hosted",
"embedded"
]
},
"status": {
"type": "string",
"enum": [
"created",
"awaiting_document",
"document_processing",
"review_required",
"completed",
"failed"
]
},
"current_step": {
"type": "string",
"enum": [
"verification_created",
"awaiting_document_upload",
"artifact_scanning",
"document_analysis",
"manual_review",
"completed",
"failed"
]
},
"created_at": {
"type": "string",
"format": "date-time"
},
"updated_at": {
"type": "string",
"format": "date-time"
},
"expires_at": {
"type": "string",
"format": "date-time"
},
"verification_status": {
"type": "string",
"enum": [
"pending",
"in_progress",
"completed",
"failed",
"manual_review"
]
},
"environment": {
"type": "string",
"enum": [
"sandbox",
"production"
]
},
"billable": {
"type": "boolean"
},
"data_source": {
"type": "string",
"enum": [
"mock",
"provider"
]
},
"next_actions": {
"type": "array",
"items": {
"type": "string"
}
},
"summary": {
"type": "object",
"properties": {
"requested_checks": {
"type": "array",
"items": {
"type": "string"
}
},
"open_review_count": {
"type": "integer"
},
"document_count": {
"type": "integer"
},
"artifact_count": {
"type": "integer"
},
"pending_artifact_scans": {
"type": "integer"
},
"pending_document_processing": {
"type": "integer"
}
}
},
"metadata": {
"type": "object"
}
}Evidence and Documents
Register evidence artifacts, complete their upload lifecycle, and submit identity documents for a verification.
/v1/verifications/{verification_id}/artifactsRegister an evidence artifact
Registers an evidence artifact (a document image, PDF, selfie, or supporting document) against a verification and returns an upload target to send the file to.
Parameters
Request Body
application/json1curl -X POST "https://api.remllo.com/v1/verifications/{verification_id}/artifacts" \2 -H "x-api-key: remllo_sk_test_EXAMPLESELECTOR12_examplesecretvaluegoeshere" \3 -H "idempotency-key: 8d80a7b3-2e52-4d74-9f7f-f59f14b97f86" \4 -H "Content-Type: application/json" \5 \6 -d '{7 "artifact_type": "document_image",8 "sha256_digest": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08",9 "file_name": "passport-front.jpg",10 "mime_type": "image/jpeg",11 "size_bytes": 482913,12 "retention_until": "2026-03-20T10:15:00.000Z"13}'{
"artifact": {
"type": "object",
"properties": {
"id": "art_3c4d5e6f708192a3b4c5d6e7f8a9b0c1",
"verificationCaseId": {
"type": "string"
},
"artifactType": {
"type": "string",
"enum": [
"document_image",
"document_pdf",
"selfie_image",
"supporting_document"
]
},
"status": {
"type": "string",
"enum": [
"registered",
"uploaded",
"quarantined"
]
},
"uploadSessionStatus": {
"type": "string",
"enum": [
"pending_upload",
"uploaded",
"expired"
]
},
"scanStatus": {
"type": "string",
"enum": [
"pending",
"clean",
"suspicious"
]
},
"fileName": {
"type": "string"
},
"mimeType": {
"type": "string"
},
"sizeBytes": {
"type": "integer"
},
"retentionUntil": {
"type": "string",
"format": "date-time"
}
}
},
"upload": {
"type": "object",
"properties": {
"provider": {
"type": "string",
"enum": [
"s3_compatible_mock",
"s3_presigned"
]
},
"method": {
"type": "string",
"enum": [
"PUT"
]
},
"uploadUrl": {
"type": "string",
"format": "uri"
},
"objectKey": {
"type": "string"
},
"headers": {
"type": "object"
},
"expiresAt": {
"type": "string",
"format": "date-time"
}
}
}
}/v1/verifications/{verification_id}/artifactsList evidence artifacts for a verification
Returns every evidence artifact registered against the verification.
Parameters
1curl -X GET "https://api.remllo.com/v1/verifications/{verification_id}/artifacts" \2 -H "x-api-key: remllo_sk_test_EXAMPLESELECTOR12_examplesecretvaluegoeshere" \3 -H "Content-Type: application/json"{
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": "art_3c4d5e6f708192a3b4c5d6e7f8a9b0c1",
"verificationCaseId": {
"type": "string"
},
"artifactType": {
"type": "string",
"enum": [
"document_image",
"document_pdf",
"selfie_image",
"supporting_document"
]
},
"status": {
"type": "string",
"enum": [
"registered",
"uploaded",
"quarantined"
]
},
"uploadSessionStatus": {
"type": "string",
"enum": [
"pending_upload",
"uploaded",
"expired"
]
},
"scanStatus": {
"type": "string",
"enum": [
"pending",
"clean",
"suspicious"
]
},
"fileName": {
"type": "string"
},
"mimeType": {
"type": "string"
},
"sizeBytes": {
"type": "integer"
},
"retentionUntil": {
"type": "string",
"format": "date-time"
}
}
}
}
}/v1/artifacts/{artifact_id}Retrieve an evidence artifact
Returns the current status of a single evidence artifact, including scan and upload session status.
Parameters
1curl -X GET "https://api.remllo.com/v1/artifacts/{artifact_id}" \2 -H "x-api-key: remllo_sk_test_EXAMPLESELECTOR12_examplesecretvaluegoeshere" \3 -H "Content-Type: application/json"{
"data": {
"type": "object",
"properties": {
"id": "art_3c4d5e6f708192a3b4c5d6e7f8a9b0c1",
"verificationCaseId": {
"type": "string"
},
"artifactType": {
"type": "string",
"enum": [
"document_image",
"document_pdf",
"selfie_image",
"supporting_document"
]
},
"status": {
"type": "string",
"enum": [
"registered",
"uploaded",
"quarantined"
]
},
"uploadSessionStatus": {
"type": "string",
"enum": [
"pending_upload",
"uploaded",
"expired"
]
},
"scanStatus": {
"type": "string",
"enum": [
"pending",
"clean",
"suspicious"
]
},
"fileName": {
"type": "string"
},
"mimeType": {
"type": "string"
},
"sizeBytes": {
"type": "integer"
},
"retentionUntil": {
"type": "string",
"format": "date-time"
}
}
}
}/v1/artifacts/{artifact_id}/jobsList processing jobs for an artifact
Returns the malware scan and processing jobs that have run against this artifact.
Parameters
1curl -X GET "https://api.remllo.com/v1/artifacts/{artifact_id}/jobs" \2 -H "x-api-key: remllo_sk_test_EXAMPLESELECTOR12_examplesecretvaluegoeshere" \3 -H "Content-Type: application/json"{
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"jobType": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"pending",
"processing",
"completed",
"failed"
]
},
"createdAt": {
"type": "string",
"format": "date-time"
},
"completedAt": {
"type": "string",
"format": "date-time"
}
}
}
}
}/v1/artifacts/{artifact_id}/complete-uploadConfirm an artifact upload finished
Call after you finish uploading to the target returned by artifact registration. Triggers the malware scan and downstream processing.
Parameters
Request Body
application/json1curl -X POST "https://api.remllo.com/v1/artifacts/{artifact_id}/complete-upload" \2 -H "x-api-key: remllo_sk_test_EXAMPLESELECTOR12_examplesecretvaluegoeshere" \3 -H "Content-Type: application/json" \4 \5 -d '{6 "sha256_digest": "...",7 "size_bytes": 08}'{
"data": {
"type": "object",
"properties": {
"id": "art_3c4d5e6f708192a3b4c5d6e7f8a9b0c1",
"verificationCaseId": {
"type": "string"
},
"artifactType": {
"type": "string",
"enum": [
"document_image",
"document_pdf",
"selfie_image",
"supporting_document"
]
},
"status": {
"type": "string",
"enum": [
"registered",
"uploaded",
"quarantined"
]
},
"uploadSessionStatus": {
"type": "string",
"enum": [
"pending_upload",
"uploaded",
"expired"
]
},
"scanStatus": {
"type": "string",
"enum": [
"pending",
"clean",
"suspicious"
]
},
"fileName": {
"type": "string"
},
"mimeType": {
"type": "string"
},
"sizeBytes": {
"type": "integer"
},
"retentionUntil": {
"type": "string",
"format": "date-time"
}
}
}
}/v1/artifacts/{artifact_id}/refresh-upload-targetRefresh an expired upload target
Issues a new upload target for an artifact whose original target expired before the upload completed.
Parameters
1curl -X POST "https://api.remllo.com/v1/artifacts/{artifact_id}/refresh-upload-target" \2 -H "x-api-key: remllo_sk_test_EXAMPLESELECTOR12_examplesecretvaluegoeshere" \3 -H "Content-Type: application/json"{
"artifact": {
"type": "object",
"properties": {
"id": "art_3c4d5e6f708192a3b4c5d6e7f8a9b0c1",
"verificationCaseId": {
"type": "string"
},
"artifactType": {
"type": "string",
"enum": [
"document_image",
"document_pdf",
"selfie_image",
"supporting_document"
]
},
"status": {
"type": "string",
"enum": [
"registered",
"uploaded",
"quarantined"
]
},
"uploadSessionStatus": {
"type": "string",
"enum": [
"pending_upload",
"uploaded",
"expired"
]
},
"scanStatus": {
"type": "string",
"enum": [
"pending",
"clean",
"suspicious"
]
},
"fileName": {
"type": "string"
},
"mimeType": {
"type": "string"
},
"sizeBytes": {
"type": "integer"
},
"retentionUntil": {
"type": "string",
"format": "date-time"
}
}
},
"upload": {
"type": "object",
"properties": {
"provider": {
"type": "string",
"enum": [
"s3_compatible_mock",
"s3_presigned"
]
},
"method": {
"type": "string",
"enum": [
"PUT"
]
},
"uploadUrl": {
"type": "string",
"format": "uri"
},
"objectKey": {
"type": "string"
},
"headers": {
"type": "object"
},
"expiresAt": {
"type": "string",
"format": "date-time"
}
}
}
}/v1/verifications/{verification_id}/documentsSubmit an identity document
Submits a document (referencing an already-uploaded artifact, or inline file metadata) for OCR and authenticity analysis against a verification.
Parameters
Request Body
application/jsonReference to an artifact already registered and uploaded for this verification.
1curl -X POST "https://api.remllo.com/v1/verifications/{verification_id}/documents" \2 -H "x-api-key: remllo_sk_test_EXAMPLESELECTOR12_examplesecretvaluegoeshere" \3 -H "idempotency-key: 8d80a7b3-2e52-4d74-9f7f-f59f14b97f86" \4 -H "Content-Type: application/json" \5 \6 -d '{7 "document_type": "passport",8 "document_number": "...",9 "country_code": "NG",10 "side": "front",11 "artifact_id": "...",12 "file_name": "...",13 "mime_type": "..."14}'{
"document": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"verificationCaseId": {
"type": "string"
},
"documentType": {
"type": "string",
"enum": [
"passport",
"drivers_license",
"national_id",
"voters_card",
"residence_permit"
]
},
"countryCode": {
"type": "string"
},
"side": {
"type": "string",
"enum": [
"front",
"back"
]
},
"status": {
"type": "string",
"enum": [
"received",
"analyzed",
"review_required"
]
},
"processingStage": {
"type": "string",
"enum": [
"received",
"ocr_complete",
"authenticity_complete",
"provider_validation_complete"
]
},
"processingStatus": {
"type": "string",
"enum": [
"pending",
"processing",
"completed",
"failed"
]
}
}
},
"job": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"status": {
"type": "string"
}
}
}
}/v1/verifications/{verification_id}/documentsList submitted documents
Returns every document submitted against a verification, with OCR and authenticity processing status.
Parameters
1curl -X GET "https://api.remllo.com/v1/verifications/{verification_id}/documents" \2 -H "x-api-key: remllo_sk_test_EXAMPLESELECTOR12_examplesecretvaluegoeshere" \3 -H "Content-Type: application/json"{
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"verificationCaseId": {
"type": "string"
},
"documentType": {
"type": "string",
"enum": [
"passport",
"drivers_license",
"national_id",
"voters_card",
"residence_permit"
]
},
"countryCode": {
"type": "string"
},
"side": {
"type": "string",
"enum": [
"front",
"back"
]
},
"status": {
"type": "string",
"enum": [
"received",
"analyzed",
"review_required"
]
},
"processingStage": {
"type": "string",
"enum": [
"received",
"ocr_complete",
"authenticity_complete",
"provider_validation_complete"
]
},
"processingStatus": {
"type": "string",
"enum": [
"pending",
"processing",
"completed",
"failed"
]
}
}
}
}
}Subjects and Businesses
Retrieve the identity-safe context, risk assessment, and business profile associated with a verified subject.
/v1/subjects/{subject_id}/contextRetrieve identity-safe context for a subject
Returns a summary of a subject's verification status, risk posture, and screening history without exposing raw evidence. This is the same context Identity shares with WatchTower when both products are linked for a tenant.
Parameters
1curl -X GET "https://api.remllo.com/v1/subjects/{subject_id}/context" \2 -H "x-api-key: remllo_sk_test_EXAMPLESELECTOR12_examplesecretvaluegoeshere" \3 -H "Content-Type: application/json"{
"data": {
"type": "object",
"properties": {
"subjectId": {
"type": "string"
},
"businessId": {
"type": "string"
},
"subjectType": {
"type": "string",
"enum": [
"individual",
"business"
]
},
"countryCode": {
"type": "string"
},
"verificationStatus": {
"type": "string",
"enum": [
"pending",
"in_progress",
"completed",
"failed",
"manual_review"
]
},
"kycStatus": {
"type": "string"
},
"kybStatus": {
"type": "string"
},
"riskLevel": {
"type": "string",
"enum": [
"low",
"medium",
"high",
"critical"
]
},
"riskScore": {
"type": "number"
},
"sanctionsHit": {
"type": "boolean"
},
"pepHit": {
"type": "boolean"
},
"latestVerificationAt": {
"type": "string",
"format": "date-time"
},
"requestedChecks": {
"type": "array",
"items": {
"type": "string"
}
},
"documentTypes": {
"type": "array",
"items": {
"type": "string"
}
}
}
}
}/v1/subjects/{subject_id}/riskRetrieve the latest risk assessment for a subject
Returns the most recent risk score, risk level, and decision recommendation computed for the subject.
Parameters
1curl -X GET "https://api.remllo.com/v1/subjects/{subject_id}/risk" \2 -H "x-api-key: remllo_sk_test_EXAMPLESELECTOR12_examplesecretvaluegoeshere" \3 -H "Content-Type: application/json"{
"score": {
"type": "number"
},
"riskLevel": {
"type": "string",
"enum": [
"low",
"medium",
"high",
"critical"
]
},
"decisionRecommendation": {
"type": "string",
"enum": [
"approve",
"review",
"reject"
]
},
"explanations": {
"type": "array",
"items": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"weight": {
"type": "number"
}
}
}
},
"createdAt": {
"type": "string",
"format": "date-time"
}
}/v1/businesses/{subject_id}Retrieve a business profile
Returns registry, risk, and screening details for a business subject verified through KYB.
Parameters
1curl -X GET "https://api.remllo.com/v1/businesses/{subject_id}" \2 -H "x-api-key: remllo_sk_test_EXAMPLESELECTOR12_examplesecretvaluegoeshere" \3 -H "Content-Type: application/json"{
"data": {
"type": "object",
"properties": {
"subjectId": {
"type": "string"
},
"legalName": {
"type": "string"
},
"registrationNumber": {
"type": "string"
},
"entityType": {
"type": "string"
},
"incorporationDate": {
"type": "string"
},
"status": {
"type": "string"
},
"registryCountry": {
"type": "string"
},
"riskLevel": {
"type": "string"
},
"riskScore": {
"type": "number"
},
"kybStatus": {
"type": "string"
},
"sanctionsHit": {
"type": "boolean"
},
"pepHit": {
"type": "boolean"
}
}
}
}Identity Activity
Report identity and access activity you observe in your own platform so Remllo can factor it into risk context.
/v1/subjects/{subject_id}/access-eventsReport a login or access event
Reports a login success or failure you observed for this subject in your own platform. Remllo folds this into the subject's identity-safe context, and relays it to WatchTower when both products are linked.
Parameters
Request Body
application/json1curl -X POST "https://api.remllo.com/v1/subjects/{subject_id}/access-events" \2 -H "x-api-key: remllo_sk_test_EXAMPLESELECTOR12_examplesecretvaluegoeshere" \3 -H "Content-Type: application/json" \4 \5 -d '{6 "outcome": "success",7 "occurred_at": "2026-03-20T10:15:00.000Z",8 "device_id": "...",9 "session_id": "...",10 "ip_address": "...",11 "country_code": "...",12 "access_source": "mobile_app",13 "failure_reason": "..."14}'{
"data": {
"type": "object",
"properties": {
"subjectId": {
"type": "string"
},
"emittedEvents": {
"type": "array",
"items": {
"type": "object"
}
}
}
}
}/v1/subjects/{subject_id}/security-eventsReport a credential change event
Reports a password reset or PIN change you observed for this subject in your own platform.
Parameters
Request Body
application/jsonOnly supported for password.reset events.
1curl -X POST "https://api.remllo.com/v1/subjects/{subject_id}/security-events" \2 -H "x-api-key: remllo_sk_test_EXAMPLESELECTOR12_examplesecretvaluegoeshere" \3 -H "Content-Type: application/json" \4 \5 -d '{6 "event_type": "password.reset",7 "occurred_at": "2026-03-20T10:15:00.000Z",8 "device_id": "...",9 "session_id": "...",10 "ip_address": "...",11 "access_source": "...",12 "reason": "...",13 "recipient_email": "ops@example.com",14 "reset_url": "..."15}'{
"data": {
"type": "object",
"properties": {
"subjectId": {
"type": "string"
},
"emittedEvents": {
"type": "array",
"items": {
"type": "object"
}
}
}
}
}/v1/subjects/{subject_id}/screening-eventsReport a sanctions or PEP screening hit
Reports a sanctions or politically exposed person screening result you observed for this subject outside of a Remllo-run screening check.
Parameters
Request Body
application/jsonFree-text label for your own screening source, if applicable.
1curl -X POST "https://api.remllo.com/v1/subjects/{subject_id}/screening-events" \2 -H "x-api-key: remllo_sk_test_EXAMPLESELECTOR12_examplesecretvaluegoeshere" \3 -H "Content-Type: application/json" \4 \5 -d '{6 "occurred_at": "2026-03-20T10:15:00.000Z",7 "sanctions_hit": true,8 "pep_hit": true,9 "list_name": "...",10 "match_reference": "...",11 "risk_level": "...",12 "risk_score": 0,13 "screening_provider": "..."14}'{
"data": {
"type": "object",
"properties": {
"subjectId": {
"type": "string"
},
"emittedEvents": {
"type": "array",
"items": {
"type": "object"
}
}
}
}
}/v1/subjects/{subject_id}/business-director-changesReport a business director change
Reports a director or officer being added, updated, or removed for a business subject you have already verified through KYB.
Parameters
Request Body
application/json1curl -X POST "https://api.remllo.com/v1/subjects/{subject_id}/business-director-changes" \2 -H "x-api-key: remllo_sk_test_EXAMPLESELECTOR12_examplesecretvaluegoeshere" \3 -H "Content-Type: application/json" \4 \5 -d '{6 "action": "added",7 "occurred_at": "2026-03-20T10:15:00.000Z",8 "director_id": "...",9 "director_name": "Chidi Nwosu",10 "role": "director"11}'{
"data": {
"type": "object",
"properties": {
"subjectId": {
"type": "string"
},
"emittedEvents": {
"type": "array",
"items": {
"type": "object"
}
}
}
}
}Webhooks
Configure webhook endpoints and inspect delivery history.
/v1/webhooks/endpointsCreate a webhook endpoint
Registers a URL to receive Identity webhook events for your tenant and environment. The signing secret is returned once; store it securely to verify future deliveries.
Parameters
Request Body
application/json1curl -X POST "https://api.remllo.com/v1/webhooks/endpoints" \2 -H "x-api-key: remllo_sk_test_EXAMPLESELECTOR12_examplesecretvaluegoeshere" \3 -H "Content-Type: application/json" \4 \5 -d '{6 "url": "...",7 "subscribed_events": [8 "identity.verification.completed",9 "identity.evidence.created"10 ],11 "description": "..."12}'{
"endpoint": {
"type": "object",
"properties": {
"id": "wh_4d5e6f708192a3b4c5d6e7f8a9b0c1d2",
"tenantId": {
"type": "string"
},
"environment": {
"type": "string",
"enum": [
"sandbox",
"production"
]
},
"url": "https://example.com/webhooks/remllo-identity",
"subscribedEvents": [
"identity.verification.completed",
"identity.risk.updated"
],
"description": {
"type": "string"
},
"status": "active",
"createdAt": {
"type": "string",
"format": "date-time"
}
}
},
"signingSecret": "whsec_5e6f708192a3b4c5d6e7f8a9b0c1d2e3"
}/v1/webhooks/endpointsList webhook endpoints
Returns the webhook endpoints configured for your tenant and environment.
Parameters
1curl -X GET "https://api.remllo.com/v1/webhooks/endpoints" \2 -H "x-api-key: remllo_sk_test_EXAMPLESELECTOR12_examplesecretvaluegoeshere" \3 -H "Content-Type: application/json"{
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": "wh_4d5e6f708192a3b4c5d6e7f8a9b0c1d2",
"tenantId": {
"type": "string"
},
"environment": {
"type": "string",
"enum": [
"sandbox",
"production"
]
},
"url": "https://example.com/webhooks/remllo-identity",
"subscribedEvents": [
"identity.verification.completed",
"identity.risk.updated"
],
"description": {
"type": "string"
},
"status": "active",
"createdAt": {
"type": "string",
"format": "date-time"
}
}
}
}
}/v1/webhooks/endpoints/{endpoint_id}Retrieve a webhook endpoint
Returns a single webhook endpoint by id.
Parameters
1curl -X GET "https://api.remllo.com/v1/webhooks/endpoints/{endpoint_id}" \2 -H "x-api-key: remllo_sk_test_EXAMPLESELECTOR12_examplesecretvaluegoeshere" \3 -H "Content-Type: application/json"{
"data": {
"type": "object",
"properties": {
"id": "wh_4d5e6f708192a3b4c5d6e7f8a9b0c1d2",
"tenantId": {
"type": "string"
},
"environment": {
"type": "string",
"enum": [
"sandbox",
"production"
]
},
"url": "https://example.com/webhooks/remllo-identity",
"subscribedEvents": [
"identity.verification.completed",
"identity.risk.updated"
],
"description": {
"type": "string"
},
"status": "active",
"createdAt": {
"type": "string",
"format": "date-time"
}
}
}
}/v1/webhooks/endpoints/{endpoint_id}/rotate-secretRotate a webhook signing secret
Issues a new signing secret for the endpoint. The new secret is returned once; update your verification code before the old deliveries stop.
Parameters
1curl -X POST "https://api.remllo.com/v1/webhooks/endpoints/{endpoint_id}/rotate-secret" \2 -H "x-api-key: remllo_sk_test_EXAMPLESELECTOR12_examplesecretvaluegoeshere" \3 -H "Content-Type: application/json"{
"data": {
"type": "object",
"properties": {
"endpoint": {
"type": "object",
"properties": {
"id": "wh_4d5e6f708192a3b4c5d6e7f8a9b0c1d2",
"tenantId": {
"type": "string"
},
"environment": {
"type": "string",
"enum": [
"sandbox",
"production"
]
},
"url": "https://example.com/webhooks/remllo-identity",
"subscribedEvents": [
"identity.verification.completed",
"identity.risk.updated"
],
"description": {
"type": "string"
},
"status": "active",
"createdAt": {
"type": "string",
"format": "date-time"
}
}
},
"signingSecret": {
"type": "string"
}
}
}
}/v1/webhooks/endpoints/{endpoint_id}/activateActivate a webhook endpoint
Resumes delivery to a previously deactivated endpoint.
Parameters
1curl -X POST "https://api.remllo.com/v1/webhooks/endpoints/{endpoint_id}/activate" \2 -H "x-api-key: remllo_sk_test_EXAMPLESELECTOR12_examplesecretvaluegoeshere" \3 -H "Content-Type: application/json"{
"data": {
"type": "object",
"properties": {
"id": "wh_4d5e6f708192a3b4c5d6e7f8a9b0c1d2",
"tenantId": {
"type": "string"
},
"environment": {
"type": "string",
"enum": [
"sandbox",
"production"
]
},
"url": "https://example.com/webhooks/remllo-identity",
"subscribedEvents": [
"identity.verification.completed",
"identity.risk.updated"
],
"description": {
"type": "string"
},
"status": "active",
"createdAt": {
"type": "string",
"format": "date-time"
}
}
}
}/v1/webhooks/endpoints/{endpoint_id}/deactivateDeactivate a webhook endpoint
Pauses delivery to this endpoint without deleting its configuration.
Parameters
1curl -X POST "https://api.remllo.com/v1/webhooks/endpoints/{endpoint_id}/deactivate" \2 -H "x-api-key: remllo_sk_test_EXAMPLESELECTOR12_examplesecretvaluegoeshere" \3 -H "Content-Type: application/json"{
"data": {
"type": "object",
"properties": {
"id": "wh_4d5e6f708192a3b4c5d6e7f8a9b0c1d2",
"tenantId": {
"type": "string"
},
"environment": {
"type": "string",
"enum": [
"sandbox",
"production"
]
},
"url": "https://example.com/webhooks/remllo-identity",
"subscribedEvents": [
"identity.verification.completed",
"identity.risk.updated"
],
"description": {
"type": "string"
},
"status": "active",
"createdAt": {
"type": "string",
"format": "date-time"
}
}
}
}/v1/webhooks/endpoints/{endpoint_id}/deliveriesList deliveries for a webhook endpoint
Returns delivery attempts sent to this specific endpoint, most recent first.
Parameters
1curl -X GET "https://api.remllo.com/v1/webhooks/endpoints/{endpoint_id}/deliveries" \2 -H "x-api-key: remllo_sk_test_EXAMPLESELECTOR12_examplesecretvaluegoeshere" \3 -H "Content-Type: application/json"{
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": "whd_6f708192a3b4c5d6e7f8a9b0c1d2e3f4",
"eventId": {
"type": "string"
},
"endpointId": {
"type": "string"
},
"destination": {
"type": "string",
"format": "uri"
},
"status": "delivered",
"attemptCount": {
"type": "integer"
},
"lastHttpStatus": {
"type": "integer"
},
"lastError": {
"type": "string"
},
"nextAttemptAt": {
"type": "string",
"format": "date-time"
},
"lastAttemptAt": {
"type": "string",
"format": "date-time"
}
}
}
}
}/v1/webhooks/deliveriesList webhook deliveries
Returns delivery attempts across all endpoints for your tenant and environment, most recent first.
Parameters
1curl -X GET "https://api.remllo.com/v1/webhooks/deliveries" \2 -H "x-api-key: remllo_sk_test_EXAMPLESELECTOR12_examplesecretvaluegoeshere" \3 -H "Content-Type: application/json"{
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": "whd_6f708192a3b4c5d6e7f8a9b0c1d2e3f4",
"eventId": {
"type": "string"
},
"endpointId": {
"type": "string"
},
"destination": {
"type": "string",
"format": "uri"
},
"status": "delivered",
"attemptCount": {
"type": "integer"
},
"lastHttpStatus": {
"type": "integer"
},
"lastError": {
"type": "string"
},
"nextAttemptAt": {
"type": "string",
"format": "date-time"
},
"lastAttemptAt": {
"type": "string",
"format": "date-time"
}
}
}
}
}/v1/webhooks/deliveries/{delivery_id}Retrieve a webhook delivery
Returns a single delivery attempt by id, including its latest HTTP status and error if it failed.
Parameters
1curl -X GET "https://api.remllo.com/v1/webhooks/deliveries/{delivery_id}" \2 -H "x-api-key: remllo_sk_test_EXAMPLESELECTOR12_examplesecretvaluegoeshere" \3 -H "Content-Type: application/json"{
"data": {
"type": "object",
"properties": {
"id": "whd_6f708192a3b4c5d6e7f8a9b0c1d2e3f4",
"eventId": {
"type": "string"
},
"endpointId": {
"type": "string"
},
"destination": {
"type": "string",
"format": "uri"
},
"status": "delivered",
"attemptCount": {
"type": "integer"
},
"lastHttpStatus": {
"type": "integer"
},
"lastError": {
"type": "string"
},
"nextAttemptAt": {
"type": "string",
"format": "date-time"
},
"lastAttemptAt": {
"type": "string",
"format": "date-time"
}
}
}
}Wallet
Check prepaid balance, funding history, and active pricing for your tenant.
/v1/walletRetrieve wallet balance and pricing
Returns your tenant's prepaid balance, recent ledger entries, funding intent history, and the active per-check prices available to your tenant and country.
Parameters
1curl -X GET "https://api.remllo.com/v1/wallet" \2 -H "x-api-key: remllo_sk_test_EXAMPLESELECTOR12_examplesecretvaluegoeshere" \3 -H "Content-Type: application/json"{
"data": {
"type": "object",
"properties": {
"currency": "NGN",
"tenant": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"region": {
"type": "string"
}
}
},
"accounts": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"currency": {
"type": "string"
},
"availableBalanceMinor": {
"type": "integer"
},
"reservedBalanceMinor": {
"type": "integer"
},
"status": {
"type": "string",
"enum": [
"active",
"disabled"
]
}
}
}
},
"primaryAccount": {
"type": "object",
"nullable": true
},
"ledgerEntries": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"entryType": {
"type": "string"
},
"direction": {
"type": "string",
"enum": [
"credit",
"debit"
]
},
"amountMinor": {
"type": "integer"
},
"createdAt": {
"type": "string",
"format": "date-time"
}
}
}
},
"fundingIntents": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"amountMinor": {
"type": "integer"
},
"status": {
"type": "string",
"enum": [
"pending",
"processing",
"succeeded",
"failed",
"expired"
]
},
"createdAt": {
"type": "string",
"format": "date-time"
}
}
}
},
"prices": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"countryCode": {
"type": "string"
},
"checkType": {
"type": "string"
},
"subjectType": {
"type": "string",
"enum": [
"individual",
"business"
]
},
"currency": {
"type": "string"
},
"priceMinor": {
"type": "integer"
},
"channel": {
"type": "string",
"enum": [
"api",
"console",
"embedded"
]
},
"status": {
"type": "string",
"enum": [
"draft",
"active",
"inactive"
]
}
}
}
}
}
}
}Account Recovery
Complete a password reset for an Identity console account.
/v1/accounts/password-reset/completeComplete a console account password reset
Completes a password reset for an Identity console account using the token from the reset email. This is unauthenticated by design; the token itself is the credential.
Request Body
application/json1curl -X POST "https://api.remllo.com/v1/accounts/password-reset/complete" \2 -H "Content-Type: application/json" \3 \4 -d '{5 "token": "prt_7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d",6 "newPassword": "a-strong-example-passphrase"7}'{
"data": {
"type": "object",
"properties": {
"account": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"email": {
"type": "string"
},
"status": {
"type": "string"
}
}
}
}
}
}