Skip to content

YeboNa API Routes

Complete route map for the YeboNa backend API.

Base URL

Production: https://api.yebona.com/api

Health Check

MethodRouteDescription
GET/api/healthService health check

Authentication Routes

/api/auth

MethodRouteDescriptionBody
POST/send-verification-codeSend OTP for signup{ phoneNumber }
POST/signupComplete registration{ phoneNumber, otp, password, name? }
POST/loginLogin{ phoneNumber, password }
POST/forgot-passwordRequest reset code{ phoneNumber }
POST/reset-passwordReset with OTP{ phoneNumber, otp, newPassword }
POST/change-passwordChange password (auth){ currentPassword, newPassword }
POST/refreshRefresh tokens{ refreshToken }
POST/logoutLogout{ refreshToken }
POST/logout-allLogout all devices-
GET/meGet current user-

User Routes

/api/users

MethodRouteDescription
GET/meGet current user profile
PUT/meUpdate profile
GET/:idGet user by ID (public profile)

Provider Routes

/api/providers

MethodRouteDescription
GET/List/search providers
GET/:idGet provider profile
POST/Become a provider
PUT/:idUpdate provider profile
GET/:id/servicesGet provider's services
POST/:id/servicesAdd a service offering
DELETE/:id/services/:serviceIdRemove service
GET/:id/reviewsGet provider reviews
GET/:id/portfolioGet portfolio items

Query Parameters for GET /:

category: exchange | sourcing | verification | freight | translation | consulting
country: string
minRating: number (1-5)
page: number
limit: number

Request Routes

/api/requests

MethodRouteDescription
GET/List requests (user's own)
GET/openList open requests (for providers)
GET/:idGet request details
POST/Create request
PUT/:idUpdate request
DELETE/:idCancel request
GET/:id/quotesGet quotes on request

Create Request Body:

json
{
  "category": "exchange",
  "title": "Need USD 500 exchanged",
  "description": "Looking for best rate...",
  "attachments": [],
  "budgetMin": 450,
  "budgetMax": 510,
  "budgetCurrency": "USD",
  "timeline": "Within 24 hours",
  "targetProviders": []
}

Quote Routes

/api/quotes

MethodRouteDescription
GET/List provider's quotes
GET/:idGet quote details
POST/Submit quote on request
PUT/:idUpdate quote
POST/:id/acceptUser accepts quote
POST/:id/declineUser declines quote
DELETE/:idWithdraw quote

Create Quote Body:

json
{
  "requestId": "req_123",
  "amount": 500,
  "currency": "USD",
  "description": "I can provide this service...",
  "deliverables": ["Exchange completed", "Receipt provided"],
  "timeline": "Same day"
}

Transaction Routes

/api/transactions

MethodRouteDescription
GET/List user's transactions
GET/:idGet transaction details
POST/:id/paySubmit payment proof
POST/:id/confirm-paymentProvider confirms payment
POST/:id/completeProvider marks complete
POST/:id/releaseUser releases funds
POST/:id/disputeOpen dispute
GET/:id/reviewsGet transaction reviews
POST/:id/reviewsLeave review

Transaction Status Flow:

pending_payment → payment_received → in_progress → completed → released

                    disputed → refunded

Conversation Routes

/api/conversations

MethodRouteDescription
GET/List conversations
GET/:idGet conversation with messages
POST/Start new conversation
POST/:id/messagesSend message
POST/:id/readMark messages as read

Send Message Body:

json
{
  "content": "Hello, I'm interested in your service",
  "messageType": "text"
}

Waitlist Routes

/api/waitlist

MethodRouteDescription
POST/Join waitlist
GET/statsGet waitlist statistics

Join Waitlist Body:

json
{
  "name": "John Doe",
  "phone": "+26812345678",
  "interest": "exchange",
  "product": "yebona",
  "source": "website"
}

Blog Routes

/api/blog

MethodRouteDescription
GET/postsList published posts
GET/posts/:slugGet post by slug
POST/postsCreate post (admin)

Query Parameters for GET /posts:

page: number
limit: number
category: string

Error Responses

All endpoints return consistent error format:

json
{
  "success": false,
  "error": "Error message description"
}

Common Status Codes:

  • 400 - Bad request / validation error
  • 401 - Unauthorized / invalid token
  • 403 - Forbidden
  • 404 - Not found
  • 429 - Rate limited
  • 500 - Server error

Rate Limiting

Endpoint GroupLimit
Auth (/api/auth/*)20 requests / 15 min
General API100 requests / 15 min

Rate limit response:

json
{
  "success": false,
  "error": "Too many requests, please try again later"
}

One chat. Everything done.