Complete REST API for OCR document processing, ARN data lookup, PAN validation, user registration with OTP verification, and JWT-based authentication. All endpoints return JSON responses.
ArthOne Bridge Platform provides REST APIs for OCR document processing (PAN/Aadhaar), ARN distributor data lookup, PAN validation, and JWT-based authentication with wallet billing. Every API call requires a single-use token — generate one with your API key, use it once, and the fee is auto-deducted with refund on failure.
Need to create an account first? Open Bridge Registration to verify your mobile number and complete your profile.
Single-use, purpose-scoped Bearer tokens. Generate a token for OCR, ARN, or PAN, use it once. Fee is charged upfront with automatic refund on failure.
Extract data from PAN cards, Aadhaar cards, and other documents. Supports PDF and image formats. File size must be less than 1.5 MB.
Lookup AMFI Registration Numbers with full-text search, state/city filters, and pagination support.
Verify PAN numbers via Easebuzz API. Get holder name, father's name, DOB, and validity status instantly.
POST /auth/token with your api_key, api_secret, and purpose (ocr, arn, or pan). The fee is deducted from your wallet. You receive a single-use JWT token.
Authorization: Bearer <token>. The token is consumed after one call.
Every API request requires a JWT token. Call POST /auth/token with your API key, API secret, and purpose (ocr, arn, or pan) to get a single-use token. The service fee is charged at token generation. Pass the token as Authorization: Bearer <token> header. If the API call fails, the fee is refunded automatically. ARN API also supports legacy X-API-Key header.
Secure token-based authentication for all Bridge API endpoints.
Important: Each token is single-use — it works for exactly one API call (one OCR, one ARN, or one PAN request). You must generate a new token for every request. The token is also scoped to a specific purpose (ocr, arn, or pan) — an OCR token cannot be used for ARN or PAN endpoints and vice versa.
Exchange your API key, API secret, and a purpose for a JWT Bearer token. The service fee is deducted from your wallet immediately at token generation — not after the API call. The token is valid for 1 hour but can only be used once. If the API call fails, the fee is automatically refunded to your wallet and the token is revoked.
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | string | Required | Your bridge API key. Can be passed as POST param, JSON body, GET param, or X-API-Key header. |
| api_secret | string | Required | Your bridge API secret. Can be passed as POST param, JSON body, GET param, or X-API-Secret header. Both key and secret must match the same API key record. |
| purpose | string | Required | What the token will be used for: ocr for OCR processing, arn for ARN data API, pan for PAN validation. An OCR token only works with /ocr/* endpoints; an ARN token only works with /arn/* endpoints; a PAN token only works with /pan/* endpoints. |
When you generate a token, the service fee (OCR: ₹5/call, ARN: ₹2/call, PAN: ₹3/call — all configurable by admin) is deducted from your wallet immediately. If the actual API call succeeds, the fee stays deducted. If the API call fails for any reason (OCR error, file issue, ARN not found, PAN invalid, server error), the fee is automatically refunded to your wallet and the token is revoked. You can then generate a new token to retry.
| Code | Reason |
|---|---|
| 400 | Missing api_key, api_secret, or purpose parameter |
| 401 | Invalid key/secret, key inactive, or user inactive. Error message specifies the exact reason. |
| 402 | Insufficient wallet balance for the requested service fee |
Check if a JWT token is valid and not revoked.
Revoke a JWT token immediately. Subsequent requests with this token will fail.
Using the token: Pass the token in the Authorization: Bearer <your_jwt_token> header for your API call. Each token works for exactly one request — after the API call completes (success or failure), the token is consumed. Generate a new token for every subsequent request.
Every API request follows this 2-step flow. You cannot skip step 1 — the token is required and is consumed after step 2.
POST /auth/token with your api_key, api_secret, and purpose (ocr, arn, or pan). The fee is deducted from your wallet. You receive a JWT token.POST /ocr/process (for OCR), GET /arn/lookup (for ARN), or POST /pan/verify (for PAN) with Authorization: Bearer <token>. The token is consumed after this call.Standard HTTP status codes used across all API endpoints.
| Code | Meaning | When |
|---|---|---|
| 200 | Success | Request completed successfully |
| 400 | Bad Request | Missing or invalid parameters |
| 401 | Unauthorized | Missing, invalid, or expired JWT token / API key |
| 402 | Payment Required | Insufficient wallet balance for token generation |
| 403 | Forbidden | Access denied (filtered key, restricted record, purpose mismatch) |
| 404 | Not Found | Requested resource not found |
| 405 | Method Not Allowed | Wrong HTTP method used |
| 500 | Internal Server Error | Server-side processing error |
| 502 | Bad Gateway | Upstream service error (e.g. Easebuzz PAN API failure) |
Extract structured data from PAN cards, Aadhaar cards, and other documents using AI-powered OCR.
The OCR API allows you to upload document images or PDFs and extract structured text data. It automatically detects document types (PAN, Aadhaar, GST, etc.) and returns parsed fields. Requires a JWT token generated with purpose=ocr.
Requires a JWT token generated with purpose=ocr. The OCR fee (₹5/call) is charged at token generation. Pass the token in the Authorization header.
| Parameter | Type | Required | Description |
|---|---|---|---|
| file | file | Either file or url | Document file (multipart/form-data). File size must be less than 1.5 MB. Supports: PDF, PNG, JPG, JPEG, GIF, TIFF, BMP. |
| url | string | Either file or url | Public URL of the document image (e.g., https://example.com/pan_card.jpg). The server downloads and processes it. File size must be less than 1.5 MB after download. |
| language | string | Optional | OCR language code (default: eng). Supported: eng, ara, bul, chs, cht, hrv, cze, dan, dut, fin, fre, ger, gre, hun, kor, ita, jpn, pol, por, rus, slv, spa, swe, tha, tur, ukr, vnm. |
Returns the current status of the OCR service. No authentication required.
Returns a paginated list of your OCR processing requests.
| Parameter | Type | Required | Description |
|---|---|---|---|
| page | int | Optional | Page number (default: 1) |
| limit | int | Optional | Records per page (default: 20, max: 100) |
| Practice | Recommendation |
|---|---|
| Generate one token per request | OCR tokens are single-use and purpose-scoped. Never reuse a consumed token. |
| Validate files before upload | Use supported formats and keep file size less than 1 MB for best performance and reliability. |
| Keep API keys server-side | Do not expose your API key or secret in browser code or public repositories. |
| Handle automatic refunds | When processing fails, show the error and allow a new token to be generated. |
Copy the prompt below, paste it into any AI coding assistant (ChatGPT, Claude, Cursor, Bolt, etc.), replace [YOUR_TECH_STACK] with your technology (React, Node.js, Python, Flutter, PHP, etc.), and the AI will generate a complete working integration for you.
Download a complete, self-contained PHP file that demonstrates the full OCR integration flow — upload a document, generate a token, call the OCR API, and display the result. No framework needed, just upload it to any PHP server.
How to use: 1. Download the file. 2. Edit the three config lines at the top (BRIDGE_BASE_URL, BRIDGE_API_KEY, BRIDGE_API_SECRET). 3. Upload to any PHP 7.4+ server. 4. Open in browser, pick a document, and submit. Your API keys stay server-side — they never reach the browser.
| Code | Reason | Refund? |
|---|---|---|
| 401 | Missing, invalid, expired, or already-used JWT token | No (token was invalid) |
| 403 | Token purpose mismatch (ARN/PAN token used for OCR) | No (token was invalid) |
| 400 | No file uploaded and no valid URL provided / invalid file type / file too large / image URL download failed | Yes — fee refunded, token revoked |
| 400 | OCR processing failed (OCR service returned error) | Yes — fee refunded, token revoked |
| 500 | OCR service error / no API keys configured / cURL error | Yes — fee refunded, token revoked |
Automatic refund: If the OCR call fails for any reason (file validation, OCR service error, server error), the fee that was charged at token generation is automatically credited back to your wallet. The token is also revoked. You can generate a new token to retry.
Access AMFI Registration Number (ARN) records with lookup, search, and filtering capabilities.
The ARN Data API gives you access to AMFI Registration Number records. Use it to look up specific ARN holders by number, or search and filter across the entire database with pagination support.
| Type | Description |
|---|---|
| full | All ARN records accessible, no restrictions |
| filtered | Only allowed states/cities records are returned |
Every request requires a JWT token with purpose=arn, or a legacy ARN API key. The ARN fee (₹2/call) is charged at token generation.
Fetch complete data for a specific ARN number. Pass the ARN number and get all associated details including holder name, validity dates, contact, address, and EUIN.
| Parameter | Type | Required | Description |
|---|---|---|---|
| arn | string | Required | ARN number to look up (e.g., 122553, ARN-12345). Passed as a query parameter. |
| Field | Type | Description |
|---|---|---|
| arn | string | AMFI Registration Number |
| arn_holder_name | string | Name of the ARN holder / distributor |
| arn_valid_from | string | ARN validity start date |
| arn_valid_till | string | ARN validity end date |
| telephone_o | string | Office telephone number |
| telephone_r | string | Residence telephone number |
| string | Email address of the distributor | |
| address | string | Full postal address |
| pin | string | PIN / ZIP code |
| city | string | City name |
| state | string | State name |
| euin | string | European Union Identification Number (EUIN) |
Search across ARN numbers, holder names, emails, cities, and EUINs. Filter by state, city, month, and year. Results are paginated and sorted by ARN number ascending.
| Parameter | Type | Required | Description |
|---|---|---|---|
| search | string | Optional | Full-text search across ARN, holder name, email, city, EUIN |
| state | string | Optional | Filter by exact state name (e.g., Maharashtra) |
| city | string | Optional | Filter by exact city name (e.g., Mumbai) |
| month | integer | Optional | Filter by arn_valid_from month (1-12) |
| year | integer | Optional | Filter by arn_valid_from year (e.g., 2024) |
| page | integer | Optional | Page number (default: 1) |
| limit | integer | Optional | Records per page (default: 20, max: 100) |
Filtered API keys: If your API key has access_type=filtered with allowed states/cities configured, search results are automatically restricted to those states/cities. You cannot search outside your allowed scope.
Get distinct states and cities available in the ARN database. Useful for building filter dropdowns.
| Practice | Recommendation |
|---|---|
| Use header authentication | Prefer the Authorization header. Avoid putting credentials in URLs or query strings. |
| Use pagination | For large datasets, use page and limit. The maximum limit is 100. |
| Cache stable lookups | Cache repeated ARN and location lookups to reduce unnecessary API calls. |
| Respect filtered access | Keep searches within the states and cities permitted for your API key. |
Copy the prompt below, paste it into any AI coding assistant (ChatGPT, Claude, Cursor, Bolt, etc.), replace [YOUR_TECH_STACK] with your technology (React, Node.js, Python, Flutter, PHP, etc.), and the AI will generate a complete working integration for you.
| Code | Reason | Refund? |
|---|---|---|
| 400 | Missing arn parameter | Yes — fee refunded |
| 401 | Missing, invalid, or already-used token / API key | No |
| 403 | Token purpose mismatch (OCR/PAN token used for ARN) | No |
| 403 | Access denied (filtered key, restricted state/city) | Yes — fee refunded |
| 404 | ARN not found in database | Yes — fee refunded |
Automatic refund: If the ARN lookup fails for any reason (not found, access denied, missing parameter), the fee that was charged at token generation is automatically credited back to your wallet. The token is also revoked. Generate a new token to retry.
Verify PAN numbers and get holder details via the Easebuzz PAN validation service.
The PAN Validation API allows you to verify a PAN number and retrieve the holder's name, father's name, date of birth, and validity status. It uses the Easebuzz PAN verification service behind the scenes. Requires a JWT token generated with purpose=pan.
The PAN fee (₹3/call, configurable by admin) is deducted from your wallet at token generation. If verification fails, the fee is automatically refunded.
Requires a JWT token generated with purpose=pan. The PAN fee (₹3/call) is charged at token generation.
Verify a PAN number via the Easebuzz PAN validation API. Returns the holder's name, father's name, date of birth, and whether the PAN is valid. The fee was already charged at token generation — if this call fails, the fee is automatically refunded.
| Parameter | Type | Required | Description |
|---|---|---|---|
| pan_number | string | Required | PAN number to verify. Format: 5 letters + 4 digits + 1 letter (e.g., ABCDE1234F). Can be passed as POST param, JSON body, or GET param. |
| Field | Type | Description |
|---|---|---|
| pan_number | string | PAN number (uppercase) |
| name | string | Holder's name as per PAN records |
| father_name | string | Father's name as per PAN records |
| dob | string | Date of birth as per PAN records |
| is_valid | boolean | Whether the PAN is valid and active |
| log_id | int | Internal log ID for this verification |
| fee_charged | float | Fee charged for this call |
| wallet_balance | float | Updated wallet balance after fee deduction |
Returns the current status of the PAN validation service. No authentication required.
Returns a paginated list of your PAN verification requests.
| Parameter | Type | Required | Description |
|---|---|---|---|
| page | int | Optional | Page number (default: 1) |
| limit | int | Optional | Records per page (default: 20, max: 100) |
| Practice | Recommendation |
|---|---|
| Validate PAN format locally | Check the 5-letter, 4-digit, 1-letter pattern before generating a paid token. |
| Protect personal data | Keep PAN responses private, avoid logging full responses, and restrict access to authorized staff. |
| Use one token once | PAN tokens are single-use. Generate a fresh token for every verification request. |
| Handle invalid PANs clearly | Show the verification result separately from service errors and retry only after a new token is issued. |
Copy the prompt below, paste it into any AI coding assistant (ChatGPT, Claude, Cursor, Bolt, etc.), replace [YOUR_TECH_STACK] with your technology (React, Node.js, Python, Flutter, PHP, etc.), and the AI will generate a complete working integration for you.
| Code | Reason | Refund? |
|---|---|---|
| 400 | Missing or invalid PAN format (must be 5 letters + 4 digits + 1 letter) | Yes — fee refunded |
| 401 | Missing, invalid, or already-used JWT token | No (token was invalid) |
| 402 | Insufficient wallet balance for PAN token | No (token not generated) |
| 403 | Token purpose mismatch (OCR/ARN token used for PAN) | No (token was invalid) |
| 502 | PAN verification service error (Easebuzz API failure) | Yes — fee refunded |
Automatic refund: If the PAN verification fails for any reason (invalid format, service error, network issue), the fee that was charged at token generation is automatically credited back to your wallet. The token is also revoked. Generate a new token to retry.
Look up bank details by IFSC code and post office details by pincode. Free to use — no per-call fee.
The Utility API provides two free lookup endpoints: IFSC (bank branch details) and Pincode (post office details). No fee is charged per call. However, your wallet balance must be at least ₹5,000 to use these endpoints. Requires a JWT token generated with purpose=utility.
Free: The Utility API token fee is ₹0 — no charge at token generation. The only requirement is a minimum wallet balance of ₹5,000. If your balance drops below ₹5,000, API calls will be rejected with a 402 error.
Requires a JWT token generated with purpose=utility. The token fee is ₹0 (free). Pass the token in the Authorization header.
Look up bank branch details by IFSC code. Returns bank name, branch, address, city, state, MICR, and supported payment modes (UPI, RTGS, NEFT, IMPS).
| Parameter | Type | Required | Description |
|---|---|---|---|
| ifsc | string | Required | 11-character IFSC code (4 letters + 0 + 6 alphanumeric). Can be passed as query param, POST body, or JSON body. |
Look up post office details by 6-digit pincode. Returns all post offices serving that pincode with name, branch type, delivery status, division, region, circle, district, state, and country.
| Parameter | Type | Required | Description |
|---|---|---|---|
| pincode | string | Required | 6-digit Indian pincode (e.g., 110001). Can be passed as query param, POST body, or JSON body. |
Returns the current status of the Utility API service. No authentication required.
Copy the prompt below, paste it into any AI coding assistant (ChatGPT, Claude, Cursor, Bolt, etc.), replace [YOUR_TECH_STACK] with your technology (React, Node.js, Python, Flutter, PHP, etc.), and the AI will generate a complete working integration for you.
Download a complete, self-contained PHP file that demonstrates the full Utility API integration flow — generate a free token, look up IFSC and pincode, and display results. No framework needed, just upload it to any PHP server.
How to use: 1. Download the file. 2. Edit the three config lines at the top (BRIDGE_BASE_URL, BRIDGE_API_KEY, BRIDGE_API_SECRET). 3. Upload to any PHP 7.4+ server. 4. Open in browser, enter an IFSC or pincode, and submit. Your API keys stay server-side — they never reach the browser.
| Code | Reason |
|---|---|
| 400 | Missing or invalid IFSC/pincode parameter |
| 401 | Missing, invalid, or already-used JWT token |
| 402 | Wallet balance below ₹5,000 minimum required for Utility API |
| 403 | Token purpose mismatch (not a utility token) |
| 404 | No data found for the given pincode |
| 502 | Upstream lookup service error (IFSC or pincode service unavailable) |
Note: Utility API is free (no per-call fee). The token fee is ₹0. However, a minimum wallet balance of ₹5,000 is required. If your balance drops below this threshold, calls will be rejected with a 402 error. Recharge your wallet to continue using the Utility API.