# Checksum API
> Fast non-cryptographic checksums as an API. Compute CRC-32 — the integrity check used by ZIP, gzip, PNG and Ethernet — and Adler-32 — the checksum used by zlib — over UTF-8 text, hex or base64 input, returned in hex and as signed and unsigned 32-bit integers. Ideal for file- and message-integrity verification, cache keys and ETags, change detection and deduplication, where you want a quick fingerprint rather than a secure hash. Pure local computation — no key, no third-party service, instant; send binary via the hex or base64 encoding (up to 4 MB). Live, nothing stored. 4 endpoints. Explicitly NOT for security — for cryptographic digests (MD5, SHA-256, HMAC) use a hashing API instead.

## Authentication
All requests require your oanor API key in the `x-oanor-key` header. Get one at https://www.oanor.com/developer/keys.

```bash
curl -H "x-oanor-key: oanor_live_…" "https://api.oanor.com/checksum-api/..."
```

## Pricing
- **Free** (Free) — 700 calls/Mo, 2 req/s
- **Starter** ($1/Mo) — 5,500 calls/Mo, 8 req/s
- **Pro** ($18/Mo) — 122,000 calls/Mo, 20 req/s
- **Mega** ($54/Mo) — 630,000 calls/Mo, 50 req/s

## Endpoints

### Checksum

#### `GET /v1/adler32` — Adler-32 checksum

**Parameters:**
- `text` (query, required, string) — Input Example: `hello`
- `encoding` (query, optional, string) — utf8|hex|base64 (default utf8)

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/checksum-api/v1/adler32?text=hello"
```

**Response:**
```json
{
    "data": {
        "hex": "062c0215",
        "signed": 103547413,
        "unsigned": 103547413,
        "algorithm": "adler32"
    },
    "meta": {
        "timestamp": "2026-06-03T01:09:48.810Z",
        "request_id": "f70ab88c-2d4a-42d3-a0e3-0666b96e833c"
    },
    "status": "ok",
    "message": "Adler-32 checksum",
    "success": true
}
```

#### `GET /v1/checksum` — Checksum (choose algorithm)

**Parameters:**
- `text` (query, required, string) — Input Example: `hello`
- `algo` (query, optional, string) — crc32|adler32 (default crc32) Example: `crc32`
- `encoding` (query, optional, string) — utf8|hex|base64 (default utf8)

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/checksum-api/v1/checksum?text=hello&algo=crc32"
```

**Response:**
```json
{
    "data": {
        "hex": "3610a686",
        "signed": 907060870,
        "unsigned": 907060870,
        "algorithm": "crc32"
    },
    "meta": {
        "timestamp": "2026-06-03T01:09:48.905Z",
        "request_id": "0c65edb9-fc98-451d-bd39-a5f633518c03"
    },
    "status": "ok",
    "message": "Checksum (choose algo)",
    "success": true
}
```

#### `GET /v1/crc32` — CRC-32 checksum

**Parameters:**
- `text` (query, required, string) — Input Example: `hello`
- `encoding` (query, optional, string) — utf8|hex|base64 (default utf8)

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/checksum-api/v1/crc32?text=hello"
```

**Response:**
```json
{
    "data": {
        "hex": "3610a686",
        "signed": 907060870,
        "unsigned": 907060870,
        "algorithm": "crc32"
    },
    "meta": {
        "timestamp": "2026-06-03T01:09:49.007Z",
        "request_id": "4f2b0a1d-c549-4e6c-8d98-dc6168a2130e"
    },
    "status": "ok",
    "message": "CRC-32 checksum",
    "success": true
}
```

### Meta

#### `GET /v1/meta` — Spec

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/checksum-api/v1/meta"
```

**Response:**
```json
{
    "data": {
        "name": "Checksum API",
        "notes": "These are NOT cryptographic hashes — use them for integrity and deduplication, not security. For MD5/SHA use a hashing API. Send binary data via the hex or base64 encoding. Max 4 MB.",
        "version": "v1",
        "endpoints": [
            {
                "path": "/v1/crc32",
                "params": {
                    "text": "input (required)",
                    "encoding": "utf8|hex|base64 (default utf8)"
                },
                "returns": "CRC-32 in hex, unsigned and signed"
            },
            {
                "path": "/v1/adler32",
                "params": {
                    "text": "input (required)",
                    "encoding": "utf8|hex|base64"
                },
                "returns": "Adler-32"
            },
            {
                "path": "/v1/checksum",
                "params": {
                    "algo": "crc32|adler32",
                    "text": "input (required)",
                    "encoding": "utf8|hex|base64"
                },
                "returns": "the chosen checksum"
            },
            {
                "path": "/v1/meta",
                "params": [],
                "returns": "this document"
            }
        ],
        "description": "Compute fast non-cryptographic checksums — CRC-32 (as used by zip, gzip, PNG and Ethernet) and Adler-32 (as used by zlib) — for integrity checks, cache keys and deduplication
…(truncated, see openapi.json for full schema)
```


---
Marketplace page: https://www.oanor.com/api/checksum-api
OpenAPI spec: https://www.oanor.com/api/checksum-api/openapi.json
