> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fintelite.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# API Overview

> Essential API conventions, response formats, and best practices

<Info>
  **Interactive API Reference**: Explore all endpoints with the interactive API
  playground in the navigation. This page covers API-wide conventions and
  standards.
</Info>

## Base URL

```
https://api.anycheck.ai
```

All API requests should be made to this base URL. For authentication details, see [Authentication](/anycheck/authentication).

## Error Codes

<AccordionGroup>
  <Accordion title="400 - Bad Request">
    **Codes:**

    * `INVALID_REQUEST`: Invalid request data or malformed input
    * `INVALID_ID`: Invalid UUID values
    * `INVALID_VALUE`: Invalid enum values
    * `ALREADY_EXISTS`: Duplicate resources

    **Example:**

    ```json theme={null}
    {
      "error_code": "INVALID_REQUEST",
      "message": "Invalid request. Please check input data format and try again",
      "errors": [
        {
          "field": "email",
          "message": "This field is required"
        },
        {
          "field": "password",
          "message": "This field is required"
        }
      ]
    }
    ```

    ```json theme={null}
    {
      "error_code": "INVALID_ID",
      "message": "Invalid Verification ID"
    }
    ```
  </Accordion>

  <Accordion title="401 - Unauthorized">
    **Codes:**

    * `UNAUTHORIZED`: Missing or invalid API key
    * `API_KEY_EXPIRED`: API key has expired
    * `INVALID_API_KEY`: API key is invalid or not found

    **Example:**

    ```json theme={null}
    {
      "error_code": "UNAUTHORIZED",
      "message": "You are not authorized to perform this action"
    }
    ```
  </Accordion>

  <Accordion title="408 - Request Timeout">
    **Codes:**

    * `REQUEST_TIMEOUT`: Request processing timed out

    **Example:**

    ```json theme={null}
    {
      "error_code": "REQUEST_TIMEOUT",
      "message": "Request timed out. Please try again later"
    }
    ```
  </Accordion>

  <Accordion title="403 - Forbidden">
    **Codes:**

    * `FORBIDDEN`: User lacks permissions for the action
    * `INSUFFICIENT_BALANCE`: Group or organization credit balance is too low to complete the verification
    * `QUOTA_EXCEEDED`: User has exceeded their monthly usage limit

    **Examples:**

    ```json theme={null}
    {
      "error_code": "FORBIDDEN",
      "message": "You are forbidden to perform this action"
    }
    ```

    ```json theme={null}
    {
      "error_code": "INSUFFICIENT_BALANCE",
      "message": "Organization group credit balance is insufficient to complete the action"
    }
    ```

    ```json theme={null}
    {
      "error_code": "QUOTA_EXCEEDED",
      "message": "User has exceeded their monthly usage limit"
    }
    ```
  </Accordion>

  <Accordion title="404 - Not Found">
    **Codes:**

    * `NOT_FOUND`: Resource not found

    **Example:**

    ```json theme={null}
    {
      "error_code": "NOT_FOUND",
      "message": "Verification not found"
    }
    ```
  </Accordion>

  <Accordion title="429 - Too Many Requests">
    **Codes:**

    * `TOO_MANY_REQUESTS`: Rate limit exceeded

    **Example:**

    ```json theme={null}
    {
      "error_code": "TOO_MANY_REQUESTS",
      "message": "Too many requests. Please try again later"
    }
    ```

    Wait before retrying. Using exponential backoff with jitter is recommended for automated clients.
  </Accordion>

  <Accordion title="500 - Internal Server Error">
    **Codes:**

    * `INTERNAL_SERVER_ERROR`: General server errors
    * `VERIFICATION_FAILED`: Verification processing errors

    **Example:**

    ```json theme={null}
    {
      "error_code": "VERIFICATION_FAILED",
      "message": "An error occurred while queueing verification"
    }
    ```
  </Accordion>

  <Accordion title="503 - Service Unavailable">
    **Codes:**

    * `SERVICE_UNAVAILABLE`: Service temporarily unavailable

    **Example:**

    ```json theme={null}
    {
      "error_code": "SERVICE_UNAVAILABLE",
      "message": "Verification service is temporarily unavailable: BPKB_VERIFICATION - DKI_JAKARTA"
    }
    ```
  </Accordion>
</AccordionGroup>

## Pagination

List endpoints support pagination using the following query parameters:

**Parameters:**

* `page_offset`: Number of items to skip (starts at 0, default 0)
* `page_size`: Items per page (default 10)

**Example:**

```bash theme={null}
GET /folders?page_offset=20&page_size=10
```

**Response:**

```json theme={null}
{
  "total": 156,
  "items": [
    // Array of results (item 21 - 30)
  ]
}
```

## Rate Limiting

Rate limits are enforced per organization to ensure fair usage across all integrations. Limits are configured by your account manager and may vary between organizations.

When you exceed the limit, the API returns `429 Too Many Requests`. Implement exponential backoff with jitter for automated clients.

## Webhooks

Register a `webhook_url` when creating a verification to receive real-time status updates via `POST` at your endpoint. No polling required.

See the [Webhooks guide](/anycheck/concepts/webhooks) for complete documentation on:

* Payload structure and event types
* HMAC-SHA256 signature verification
* Replay attack prevention
* Delivery behavior and best practices

## Support

Need help with AnyCheck?

<CardGroup cols={2}>
  <Card title="Email Support" icon="envelope" href="mailto:bd@fintelite.ai">
    Our team is ready to help you get started
  </Card>

  <Card title="WhatsApp Support" icon="whatsapp" href="https://wa.me/6282123195843">
    Get instant help via WhatsApp
  </Card>
</CardGroup>
