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 Lifecycle

1

DRAFT

Verification saved but not yet submitted for processing
2

IN_PROGRESS

Verification submitted and being processed by verification provider
3

NEED_REVIEW

Verification completed but requires manual review
4

COMPLETED

Verification successfully completed with results
5

FAILED

Verification failed due to error or validation failure

Creating Verifications

Basic Flow

1

Select Service

Choose the verification service (KTP, BPKB, etc.)
2

Provide Configuration

Supply required data based on service type
3

Submit

Create verification and wait for processing
4

Get Results

Retrieve verification results via API or webhook

Example: KTP Verification

curl -X POST https://api.anycheck.id/verifications \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "service_id": "ktp-service-uuid",
    "folder_id": "folder-uuid",
    "configuration": {
      "nik": "1234567890123456",
      "name": "John Doe",
      "birth_date": "1990-01-01"
    }
  }'

Verification Components

Service

The type of verification to perform (KTP, BPKB, Land Certificate, etc.)

Folder

Logical container for organizing verifications by project or client

Configuration

Service-specific input data required for verification

Result ID

Groups multiple verifications together (e.g., multiple documents for one customer)

Working with Drafts

Save verifications as drafts before submitting:

Create Draft

curl -X POST https://api.anycheck.id/verifications/drafts \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "service_id": "service-uuid",
    "folder_id": "folder-uuid",
    "configuration": {...}
  }'

Submit Draft

curl -X POST https://api.anycheck.id/verifications/drafts/draft-uuid/verify \
  -H "Authorization: Bearer YOUR_TOKEN"
Benefits:
  • Save incomplete verifications
  • Batch submit multiple verifications
  • Review before processing (saves credits)

Verification Output

Completed verifications include:

Status Information

{
  "id": "verification-uuid",
  "status": "COMPLETED",
  "execution_time": 5.2,
  "started_at": "2024-01-15T10:00:00Z",
  "completed_at": "2024-01-15T10:00:05Z"
}

Verification Results

{
  "output": {
    "verified": true,
    "match_score": 0.95,
    "data": {
      "nik": "1234567890123456",
      "name": "JOHN DOE",
      "birth_date": "1990-01-01",
      "address": "Jakarta"
    }
  }
}

Input Files

Documents associated with verification (if applicable):
{
  "input_file_url": {
    "ktp_front": ["https://s3.../presigned-url-1"],
    "ktp_back": ["https://s3.../presigned-url-2"]
  }
}

Output Files

Generated reports or processed documents:
{
  "output_file_url": "https://s3.../verification-report.pdf"
}

Verification States

IN_PROGRESS

Verification is being processed:
  • Queued for processing
  • Being verified by provider
  • Cannot be modified

NEED_REVIEW

Requires manual review:
  • Ambiguous results
  • Low confidence scores
  • Missing information
  • Policy violations
Update to COMPLETED when reviewed:
curl -X PUT https://api.anycheck.id/verifications/verification-uuid \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "verification_status": "COMPLETED",
    "output": {
      "verified": true,
      "reviewer_notes": "Manually verified"
    }
  }'

COMPLETED

Verification finished successfully:
  • Results available in output
  • Can export reports
  • Can download raw data

FAILED

Verification failed:
  • Check error_message for details
  • Can retry if retriable error
  • Credits may be refunded

Organization Structure

Verifications are organized hierarchically:
Organization
  └── Group
      └── Folder
          └── Result ID
              └── Verifications
Result ID: Groups related verifications
  • Multiple documents for one customer
  • Different verification types for same entity
  • Batch processing
Example:
{
  "result_id": "customer-123-onboarding",
  "verifications": [
    { "service": "KTP Verification" },
    { "service": "NPWP Verification" },
    { "service": "Bank Statement" }
  ]
}

Filtering and Searching

List verifications with filters:
curl "https://api.anycheck.id/verifications?result_id=result-uuid&status=COMPLETED" \
  -H "Authorization: Bearer YOUR_TOKEN"
Filters:
  • result_id: Group by result
  • status: Filter by status
  • service_id: Filter by service type
  • date_range: Filter by date

Retry Mechanism

Retry failed verifications:
curl -X POST https://api.anycheck.id/verifications/verification-uuid/retry \
  -H "Authorization: Bearer YOUR_TOKEN"
Retry Scenarios:
  • Temporary service outage
  • Network timeout
  • Provider rate limiting
  • Invalid temporary data

Exporting Results

Export Verification

curl -X POST https://api.anycheck.id/verifications/verification-uuid/export \
  -H "Authorization: Bearer YOUR_TOKEN"
Downloads formatted report with all verification data.

Download Raw OCR Data

For document-based verifications:
curl -X POST https://api.anycheck.id/verifications/verification-uuid/download-raw-ocr \
  -H "Authorization: Bearer YOUR_TOKEN"

Download Raw Excel Data

Export data in Excel format:
curl -X POST https://api.anycheck.id/verifications/verification-uuid/download-raw-excel \
  -H "Authorization: Bearer YOUR_TOKEN"

Credit Usage

Each verification consumes credits:
{
  "credit_used": 1,
  "total_files": 2,
  "total_pages": 5
}
Credit Calculation:
  • Base credit per verification
  • Additional credits for pages/files
  • Varies by service type

Best Practices

Create folders for projects or clients:
- January 2024 Onboarding
- Corporate Clients
- Loan Applications
Use webhooks instead of polling:
{
  "webhook_url": "https://your-app.com/webhook",
  "webhook_metadata": {
    "customer_id": "123"
  }
}
Implement workflow for NEED_REVIEW:
if (status === 'NEED_REVIEW') {
  await addToReviewQueue(verification);
}

Next Steps