POST https://bingo.yegaruhost.com/relay/v1/fetch
Headers: Content-Type: application/json and X-Relay-Key: YOUR_RELAY_API_KEY. The API key is different from the log-viewer password.
{
"url": "https://m-pesabusiness.safaricom.et/api/receipt/getReceipt?trxNo=TRANSACTION_ID"
}
M-PESA: https://m-pesabusiness.safaricom.et/api/receipt/getReceipt?trxNo=ID
CBE: https://mb.cbe.com.et/api/v1/transactions/public/transaction-detail/TOKEN
CBE Birr: https://cbepay1.cbe.com.et/aureceipt?TID=ID&PH=PHONE
Telebirr: https://transactioninfo.ethiotelecom.et/receipt/REFERENCE
curl https://bingo.yegaruhost.com/relay/v1/fetch \
-H "Content-Type: application/json" \
-H "X-Relay-Key: YOUR_RELAY_API_KEY" \
-d '{"url":"OFFICIAL_RECEIPT_URL"}'
const response = await fetch("https://bingo.yegaruhost.com/relay/v1/fetch", {
method: "POST",
headers: {
"Content-Type": "application/json",
"X-Relay-Key": process.env.RELAY_API_KEY
},
body: JSON.stringify({ url: officialReceiptUrl })
});
const upstreamBody = await response.text();
The upstream status, content type, and body are returned immediately. Nothing is cached or stored. Errors: 400 invalid or disallowed URL, 403 wrong key, 429 relay busy, 502 official endpoint unavailable. Request limit: 16 KB. Response limit: 10 MB. Concurrency: 10 upstream fetches.
Keep the API key on your backend, never in public browser code. The public domain uses trusted HTTPS. Cross-origin POST and OPTIONS are supported.