Skip to main content

What are Verifications?

Verifications are the core of AnyCheck - they represent document or identity validation requests that are processed through external verification providers.

Verification Components

  • Service: The specific verification type to perform (KTP, BPKB, Land Certificate, etc.). Each service has specialized processing logic and integration with relevant external providers.
  • Folder: Organizational container for grouping verifications by project, client, or use case. Examples: “Q4 2024 Loan Applications”, “Corporate Client Onboarding”.
  • Result ID: Links multiple verifications for a single entity or transaction. Use the same result ID when verifying different documents for the same customer.
  • Configuration: Service-specific input data required for verification. Can be form-based (direct data input) or file-based (document uploads with parameters).

Verification Status

1

DRAFT

Verification saved but not yet submitted for processing
Dashboard Feature: Draft functionality is primarily designed for dashboard use with JWT tokens. For API integrations, please directly submit verification.
2

IN_QUEUE

Verification submitted and queued for background processing
3

IN_PROGRESS

Verification being processed by dedicated verifier and external providers
4

FRAUD_DETECTED

Verification data not extracted yet because potential fraud detected in documents and requires user confirmation to keep proceed (Bank Statement and Financial Statement services). This is to prevent heavy processing for untrusted large documents.
Only occur if fraud_detection = true on configuration
5

NEED_REVIEW

Verification completed data extraction but requires manual review (Bank Statement, Financial Statement, SLIK, Document Extraction services)
Dashboard Feature: Review functionality is primarily designed for dashboard use with JWT tokens. For API integrations, review process is skipped and directly COMPLETED but still can be manually edited to NEED_REVIEW status.
6

COMPLETED

Verification successfully completed with analysis results
7

FAILED

Verification failed due to error or validation failure

Creating Verifications

Workflow

1

Get Folder ID

Create folder or get existing folder ID
2

Get Service ID

Get service list and find service ID
3

Submit Verification

Create verification with configuration based on service type
4

Get Results

Poll verification status and get results

Step 1: Get Folder ID

Create folder or get existing folder ID
curl -X POST "https://staging-api.anycheck.ai/folders" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "January 2024 Verifications"
  }'
Response:
{
  "id": "folder-uuid",
  "group": {
    "id": "group-uuid",
    "name": "My Group"
  },
  "name": "January 2024 Verifications",
  "is_starred": false,
  "total_service": 0,
  "total_result": 0,
  "created_at": "2024-01-15T10:00:00Z",
  "created_by": "user-uuid",
  "updated_at": "2024-01-15T10:00:00Z",
  "updated_by": "user-uuid"
}

Step 2: Get Service ID

Get service list and find service ID
curl -X GET "https://staging-api.anycheck.ai/services" \
  -H "X-API-Key: YOUR_API_KEY"
Response:
{
  "total": 11,
  "items": [
    {
      "id": "service-uuid",
      "category": {
        "id": "category-uuid",
        "name": "Ownership Verification",
        "type": "DOCUMENT_VERIFICATION"
      },
      "code": "KTP_VERIFICATION",
      "name": "KTP & PEP Verification",
      "description": "Verifying customer identity and screening for PEP (Politically Exposed Person) status by checking NIK, name, and date of birth against trusted databases.",
      "icon_file_url": "https://example.com/icon.png",
      "credit_cost_default": 10,
      "action_type": "WEBVIEW",
      "action_param": {},
      "is_enabled": true,
      "created_at": "2024-01-15T10:00:00Z",
      "created_by": "admin-uuid",
      "updated_at": "2024-01-15T10:00:00Z",
      "updated_by": "admin-uuid"
    },
    ...
  ]
}

Step 3: Submit Verification

Create verification with configuration based on service type:
curl -X POST https://staging-api.anycheck.ai/verifications \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "service_id": "ktp-service-uuid",
    "folder_id": "folder-uuid",
    "configuration": {
      "verification_type": "NIK",
      "nik": "1234567890123456"
    }
  }'
Response:
{
  "id": "verification-uuid",
  "service": {
    "id": "service-uuid",
    "name": "KTP & PEP Verification"
  },
  "user_id": "user-uuid", // if by Token
  "api_key": "api-key", // if by API Key
  "folder_id": "folder-uuid",
  "result_id": "result-uuid",
  "execution_time": 0,
  "status": "IN_QUEUE",
  "start_date": null,
  "end_date": null,
  "input_config": {
    "verification_type": "NIK",
    "nik": "1234567890123456"
  },
  "input_file_url": null,
  "output": null,
  "output_file_url": null,
  "output_status": null,
  "external_job_id": null,
  "webhook_url": null,
  "webhook_metadata": null,
  "export_file_url": null,
  "credit_used": 5,
  "total_files": 0,
  "total_pages": 0
}

Step 4: Get Results

Retrieve verification results via API or webhook
curl -X GET https://staging-api.anycheck.ai/verifications/{verification_id} \
  -H "X-API-Key: YOUR_API_KEY"
Response:
{
  "id": "verification-uuid",
  "service": {
    "id": "service-uuid",
    "name": "KTP & PEP Verification"
  },
  "user_id": "user-uuid", // if by Token
  "api_key": "api-key", // if by API Key
  "folder_id": "folder-uuid",
  "result_id": "result-uuid",
  "execution_time": 2.28439,
  "status": "COMPLETED",
  "start_date": "2025-10-14T20:12:56.102166+07:00",
  "end_date": "2025-10-14T20:12:58.386556+07:00",
  "input_config": {
    "verification_type": "KTP_SELFIE",
    "files": {
      "ktp_file": ["files/ktp.jpg"],
      "selfie_file": ["files/selfie.jpg"]
    }
  },
  "input_file_url": {
    "ktp_file": ["https://example.com/files/ktp.jpg"],
    "selfie_file": ["https://example.com/files/selfie.jpg"]
  },
  "output": {
    "face_match_confidence_level": "LOW",
    "face_match_confidence_score": 2.284846674563825,
    "is_match_face": false
  },
  "output_file_url": "https://example.com/output.json",
  "output_status": "NOT_VERIFIED",
  "external_job_id": null,
  "webhook_url": null,
  "webhook_metadata": null,
  "export_file_url": null,
  "credit_used": 5,
  "total_files": 2,
  "total_pages": 2
}

Reviewing Verifications

Some verification services require human review after data extraction. This applies to Bank Statement, Financial Statement, SLIK, and Document Extraction services. When Review is Required:
  • FRAUD_DETECTED: Warning for suspicious documents - asks user if they still want to proceed the verification.
  • NEED_REVIEW: Required for services that extract data - allows editing verification after data extraction

Workflow

1

Check Review Status

Monitor verifications that require review (FRAUD_DETECTED or NEED_REVIEW)
2

Proceed to Review

If fraud detected, decide whether to proceed to review despite the warning - update status to NEED_REVIEW
3

Review Data

Edit extracted data or analysis configuration as needed during review process
4

Complete Review

Confirm the review process - update status to COMPLETED to get analysis results

Review Verification

To process fraud detected verification to review, update to NEED_REVIEW status:
curl -X PUT https://staging-api.anycheck.ai/verifications/{verification_id} \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "verification_status": "NEED_REVIEW"
  }'

Working with Results

Once a verification is complete, you can:
  • View Folder Results: Get all verifications within a folder grouped by result ID using the Get Folder Results endpoint.
  • Get Verifications by Result ID: Retrieve all verifications in a result group using the List Verifications endpoint.
  • Export Verification Results: Generate formatted verification reports in Excel formats using the Export Verification endpoint.
  • Download Raw OCR Data: Access raw OCR extraction data in JSON format using the Download Raw OCR endpoint.
  • Download Raw Excel Data: Download raw verification data in Excel format using the Download Raw Excel endpoint.is.

Retry Mechanism

Retry failed verifications using the Retry Verification endpoint. This will retry the verification with the same configuration. Retry Scenarios:
  • Temporary service outage
  • Network timeout
  • Provider rate limiting

Credit Usage

Each verification consumes different amount of credits. Credit usage details are included in verification responses with information about consumed credits, file counts, and page counts. Credit Calculation:
  • Default credit per service is 5 credit, may be varies based on configuration
  • Some service calculates credits based on total pages/files
    • Bank Statement, Financial Statement, and SLIK -> 1 credit per page

Best Practices

Use Folders for Organization

Create folders for projects or clients to manage large volumes of verifications and provide structure for reporting

Group Related Verifications

Use the same result ID to link multiple verifications for a single entity or transaction

Status Polling

Poll verification status for real-time updates (webhooks coming soon)

Handle Review States

Implement workflow for NEED_REVIEW status to ensure manual review when required

Next Steps