Skip to content

API Reference

Complete reference for the Keshless REST API.

Base URLs

EnvironmentURL
Productionhttps://api.keshless.app
Developmenthttps://dev-api.keshless.app

API Categories

Core APIs

CategoryBase PathDescription
Authentication/authUser, vendor, and admin authentication
Users/usersUser profiles, settings, notifications
Vendors/vendorsVendor CRUD, operations, sub-users, tills
Wallet/walletBalance, transfers, payments

Transaction APIs

CategoryBase PathDescription
Cards/cardsCard linking and management
Transactions/transactionsTransaction history and details
Withdrawal Requests/withdrawal-requestsVendor-initiated withdrawals

KYC & Verification APIs (Documented)

AML & Compliance APIs (Documented)

Accounting APIs (Documented)

Admin APIs

CategoryBase PathDescription
Admin Employees/admin/employeesRBAC user management
System Config/admin/configFees, limits, PIN configuration
Emergency Controls/admin/emergencyKill switches and lockdowns
Audit Logs/admin/audit-logsActivity and change logs

Integration APIs

CategoryBase PathDescription
Integrations/integrationsAPI key management
Partner API/integrationExternal payment endpoints

Authentication

Methods

TypeUsageHeader
JWT BearerUser, vendor, admin sessionsAuthorization: Bearer <token>
API KeyPartner integrationsX-API-Key: <key>
PublicHealth, fees, public infoNone required

Token Endpoints

POST /auth/user/login          # User login
POST /auth/user/register       # User registration
POST /auth/vendor/login        # Vendor login
POST /auth/admin/login         # Admin login
POST /auth/refresh             # Refresh access token

Common Response Format

Success Response

json
{
  "success": true,
  "data": { ... },
  "message": "Operation completed"
}

Error Response

json
{
  "success": false,
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Invalid phone number format"
  }
}

Paginated Response

json
{
  "success": true,
  "data": [ ... ],
  "pagination": {
    "page": 1,
    "limit": 20,
    "total": 150,
    "totalPages": 8
  }
}

Common Query Parameters

ParameterTypeDescription
pagenumberPage number (default: 1)
limitnumberItems per page (default: 20, max: 100)
sortBystringField to sort by
sortOrderstringasc or desc
startDateISO dateFilter from date
endDateISO dateFilter to date

HTTP Status Codes

CodeMeaning
200Success
201Created
400Bad Request - validation failed
401Unauthorized - invalid/missing token
403Forbidden - insufficient permissions
404Not Found
409Conflict - duplicate resource
429Rate Limited
500Internal Server Error

Rate Limiting

  • Standard endpoints: 100 requests/minute
  • Authentication endpoints: 10 requests/minute
  • Bulk operations: 10 requests/minute

Rate limit headers are included in responses:

X-RateLimit-Limit: 100
X-RateLimit-Remaining: 95
X-RateLimit-Reset: 1706140800

Getting Started

  1. Register via /auth/user/register or /auth/vendor/register
  2. Verify phone with OTP sent via SMS/WhatsApp
  3. Login to receive JWT access token
  4. Include token in all authenticated requests

Detailed Documentation

Explore the documented API services:

Compliance & Verification:

Accounting System:

Internal use only - Keshless Payment Platform