Documentation
API Reference
REST API for the Token-x platform. All endpoints require a Bearer token from POST /auth/login unless noted.
Base URL: https://api.token-x.datacraft.co.keAPI version: v1Authentication — Pass
Authorization: Bearer <token> on every request. Tokens expire after 24 h. Use POST /auth/refresh with the refresh token to extend the session.Auth
POST
/auth/loginObtain a JWT for a user accountPOST
/auth/refreshRefresh an expired access tokenPOST
/auth/logoutInvalidate current tokenInvestors
GET
/investors/meFetch authenticated investor profilePOST
/investors/kyc/startInitiate Sumsub KYC flow — returns applicantTokenGET
/investors/kyc/statusCurrent KYC status for the investorGET
/investors/walletsList investor wallets (hosted + self-custody)POST
/investors/walletsRegister a new hosted walletGET
/investors/portfolioHoldings, NAV, unrealised PnLOfferings
GET
/offeringsList published offerings (marketplace)GET
/offerings/:idOffering detail + documentsPOST
/offeringsCreate a new offering draft (Issuer)PATCH
/offerings/:idUpdate offering fieldsPOST
/offerings/:id/publishSubmit for Super Admin approvalPOST
/offerings/:id/subscribeInvestor subscription intentCompliance
GET
/compliance/applicantsList KYC/KYB applicants (Compliance Officer)POST
/compliance/applicants/:id/approveApprove KYCPOST
/compliance/applicants/:id/rejectReject KYC with reasonGET
/compliance/walletsWallets pending whitelist approvalPOST
/compliance/wallets/:id/approveApprove wallet whitelistGET
/compliance/audit-logImmutable audit event logGET
/compliance/transfer-restrictionsActive Reg D / Reg S lockupsGET
/compliance/reports/reg-d/:offeringReg D 506(b)/(c) CSV/JSON reportGET
/compliance/reports/cap-table/:offeringCap table snapshotTokenization
POST
/tokenization/whitelistWhitelist investor wallet on-chainPOST
/tokenization/mintMint tokens to whitelisted investorPOST
/tokenization/burnBurn tokens (redemption)POST
/tokenization/freezeFreeze investor tokensPOST
/tokenization/force-transferRegulatory force transfer (Transfer Agent)ATS / Secondary Market
GET
/ats/orderbook/:offeringCurrent order book depthPOST
/ats/ordersPlace limit / market / stop orderDELETE
/ats/orders/:idCancel an open orderGET
/ats/ordersInvestor order historyGET
/ats/tradesExecuted fills for an offeringRedemptions
POST
/investor/redemptionsRequest redemptionGET
/investor/redemptionsInvestor redemption historyGET
/transfer-agent/redemptionsPending redemptions (Transfer Agent)POST
/transfer-agent/redemptions/:id/approveApprove → triggers burn + payment releaseError Codes
400Bad RequestInvalid input — check the request body401UnauthorizedMissing or expired token403ForbiddenInsufficient role or compliance gate active (e.g. sanctions flag)404Not FoundResource does not exist409ConflictDuplicate — e.g. wallet already registered422UnprocessablePre-trade compliance check failed — reason_code in body500Internal ErrorPlatform error — see x-request-id header for trace