Returns verification usage history for the authenticated owner/key.
Query parameters:
Parameter
Type
Default
Notes
limit
integer
100
min 1, max 1000
offset
integer
0
min 0, max 10000
status
string
-
success or error
startDate
ISO date
-
inclusive
endDate
ISO date
-
inclusive
keyId
ObjectId
-
must belong to authenticated owner
GET /me
Returns metadata for the API key in x-dokmai-api-key.
apiKey query parameter is rejected for security reasons.
One Slip, One Use
Dokmai Slip enforces one-time use at verification identity level (for example transaction reference / decode / QR identity), not just by raw image hash. A slip that was already used is rejected as duplicate.
Error Codes
Code
HTTP
Meaning
UNAUTHORIZED
401
Missing/invalid API key or missing verify permission
Dokmai Slip API
Verify Thai bank transfer slips through Dokmai Slip.
Dokmai Slip may use multiple verification providers internally for reliability, but provider identities are not exposed in the public API contract.
Base URL
Canonical production base URL:
Compatibility base URL (same contract):
Authentication
Use API key authentication:
API keys are created from the Dokmai Slip dashboard: https://slip.dokmai.app/dashboard/keys
First-party Dokmai flows may also use buyer JWT, but third-party integrations should use
x-dokmai-api-key.Response Format
Success:
{ "success": true, "data": {}, "meta": {}, "requestId": "optional_or_present" }Error:
{ "success": false, "error": { "code": "ERROR_CODE", "message": "Human readable message", "details": {} }, "requestId": "..." }Endpoints
GET /Returns supported verification methods.
POST /verifyVerifies slip image.
Request:
Parameters:
slipImageOptional cache behavior controls:
x-dokmai-return-cached: false?returnCached=falseDefault behavior (
returnCached=true): if the same slip hash was already verified, Dokmai Slip returns cached verified data andmeta.creditsUsedis0.Strict one-time behavior (
returnCached=false): reused slip returnsDUPLICATE_SLIP.GET /historyReturns verification usage history for the authenticated owner/key.
Query parameters:
limit1001, max1000offset00, max10000statussuccessorerrorstartDateendDatekeyIdGET /meReturns metadata for the API key in
x-dokmai-api-key.apiKeyquery parameter is rejected for security reasons.One Slip, One Use
Dokmai Slip enforces one-time use at verification identity level (for example transaction reference / decode / QR identity), not just by raw image hash. A slip that was already used is rejected as duplicate.
Error Codes
UNAUTHORIZEDQUOTA_EXHAUSTEDRATE_LIMITEDINVALID_INPUTDUPLICATE_SLIPVERIFICATION_PENDINGNOT_FOUND/history?keyId=...)FORBIDDENPROVIDER_NOT_CONFIGUREDNETWORK_ERRORALL_PROVIDERS_FAILEDINTERNAL_ERRORcURL Example
curl -X POST "https://api.dokmaistore.com/api/dokmaiservice/v1/slip/verify" \ -H "x-dokmai-api-key: your_api_key_here" \ -F "slipImage=@/path/to/slip.jpg"Disable cached return:
curl -X POST "https://api.dokmaistore.com/api/dokmaiservice/v1/slip/verify?returnCached=false" \ -H "x-dokmai-api-key: your_api_key_here" \ -H "x-dokmai-return-cached: false" \ -F "slipImage=@/path/to/slip.jpg"Node.js Example
const form = new FormData(); form.append('slipImage', slipFile); const response = await fetch('https://api.dokmaistore.com/api/dokmaiservice/v1/slip/verify', { method: 'POST', headers: { 'x-dokmai-api-key': process.env.DOKMAI_SLIP_API_KEY, }, body: form, }); const result = await response.json(); if (!response.ok || !result.success) { throw new Error(result?.error?.message ?? 'Slip verification failed'); }Key Management API (Owner Session)
These endpoints are session-authenticated (owner JWT/cookie), not API-key authenticated:
GET /api/dokmaiservice/v1/keys?service=slipPOST /api/dokmaiservice/v1/keysGET /api/dokmaiservice/v1/keys/:keyIdPATCH /api/dokmaiservice/v1/keys/:keyIdDELETE /api/dokmaiservice/v1/keys/:keyIdPOST /api/dokmaiservice/v1/keys/:keyId/rotatePOST /api/dokmaiservice/v1/keys/:keyId/topup