Partner API
REST endpoints exposed to CBrilliance only. Requests must include the X-Partner-Api-Key header. Only groups that have explicitly opted into CBrilliance investment are accessible — unenrolled group data is never shared.
Authentication
Include this header on every request:
X-Partner-Api-Key: <your-laskad-issued-key>
Keys are provisioned manually by Laskad ops. Missing or invalid keys return 401 Unauthorized.
Base URL
https://api.laskad.app/api/v1This docs site proxies /api/v1/* transparently to the Laskad production backend. CBrilliance should call https://api.laskad.app/api/v1/... directly.
/api/v1/partner/groupsReturns all Laskad contribution groups that have opted into CBrilliance investment. Only groups with a non-null cbrillianceGroupId are included.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Partner-Api-Key | header | string | required | Your Laskad-issued partner API key |
Response Fields
| Field | Type | Description |
|---|---|---|
success | boolean | Always true for 2xx responses |
count | number | Total number of opted-in groups |
data[] | GroupSummary[] | Array of group objects |
data[].id | string | Laskad internal group UUID |
data[].jid | string | WhatsApp JID (use this to call GET /groups/:jid) |
data[].name | string | Group display name |
data[].cbrillianceGroupId | string | CBrilliance-side group ID |
data[].currentPotBalance | string (decimal) | Current escrow balance in Naira |
data[].memberCount | number | Number of participants |
data[].activeInvestment | Investment | null | Most recent investment record, if any |
Example Request
curl https://api.laskad.app/api/v1/partner/groups \ -H "X-Partner-Api-Key: your-key"
Example Response
{
"success": true,
"count": 1,
"data": [
{
"id": "group-uuid",
"jid": "120363238495038290@g.us",
"name": "Savings Circle 2025",
"cbrillianceGroupId": "cbr_abc123",
"currentPotBalance": "450000.00",
"memberCount": 12,
"createdAt": "2025-01-15T10:30:00Z",
"activeInvestment": {
"id": "inv-uuid",
"amount": "100000.00",
"status": "ACTIVE",
"investedAt": "2025-06-01T09:00:00Z"
}
}
]
}/api/v1/partner/groups/:jidReturns full details for a specific group by its WhatsApp JID, including the complete member list and investment history. Returns 404 if the group has not opted into CBrilliance.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
jid | path | string | required | WhatsApp group JID — URL-encode the @ sign as %40 |
X-Partner-Api-Key | header | string | required | Your Laskad-issued partner API key |
Response Fields
| Field | Type | Description |
|---|---|---|
data.id | string | Laskad group UUID |
data.jid | string | WhatsApp JID |
data.name | string | Group display name |
data.cbrillianceGroupId | string | CBrilliance group ID |
data.currentPotBalance | string | Current Naira escrow balance |
data.memberCount | number | Number of participants |
data.members[] | Member[] | Full member list with phone numbers |
data.members[].phone | string | E.164 phone number |
data.members[].isAdmin | boolean | Whether this member is a group admin |
data.investmentHistory[] | Investment[] | All investment records, newest first |
data.investmentHistory[].status | string | PENDING | ACTIVE | WITHDRAWING | WITHDRAWN | FAILED |
data.investmentHistory[].lockedUntil | ISO date | Investment lock-in expiry (default 30 days) |
Example Request
# URL-encode @ as %40 curl "https://api.laskad.app/api/v1/partner/groups/120363238495038290%40g.us" \ -H "X-Partner-Api-Key: your-key"
Example Response
{
"success": true,
"data": {
"id": "group-uuid",
"jid": "120363238495038290@g.us",
"name": "Savings Circle 2025",
"cbrillianceGroupId": "cbr_abc123",
"currentPotBalance": "450000.00",
"memberCount": 12,
"members": [
{
"id": "p-1",
"phone": "2348012345678",
"isAdmin": true,
"hasAccount": true,
"joinedAt": "2025-01-15T10:30:00Z"
}
],
"investmentHistory": [
{
"id": "inv-uuid",
"amount": "100000.00",
"status": "ACTIVE",
"reference": "LSK-INV-1717228800000",
"investedAt": "2025-06-01T09:00:00Z",
"lockedUntil": "2025-07-01T09:00:00Z"
}
]
}
}Error Codes
| Status | Meaning |
|---|---|
401 | Missing or invalid X-Partner-Api-Key |
404 | Group not found, or group has not opted into CBrilliance |
500 | Laskad backend error — retry with exponential backoff |
502 | Proxy error — Laskad backend unreachable, retry in 30s |