Getting started as a publisher or seller
Who this is for: publishers and sellers sending call opportunities to a buyer who runs Moja. What you’ll need: the RTB endpoint, method, and parameter list from your buyer, plus a test caller ID and an agreed test window. Time: about 30 minutes to a successful test call.
Stage 1 — Get what you need from the buyer
Section titled “Stage 1 — Get what you need from the buyer”Time: as long as it takes them to reply. Do not start before this is complete.
Ask for all five. Every integration that stalls, stalls because one of them was assumed:
| Ask for | Why it matters |
|---|---|
| The exact endpoint URL | It is tied to one publisher and one campaign. Reusing it elsewhere misattributes or fails |
| The HTTP method | GET is the usual default; POST only if they say so and give you the format |
| The required parameter names | Names are not interchangeable — CALLER_ID and CID are both valid, but pick the one they configured |
| Any buyer-specific metadata | A field nobody configured on their side is silently ignored |
| Payout and duration rules | This is what decides whether a connected call earns you anything |
Also agree a test window and a test caller ID before you send anything.
Stage 1 is done when: you can paste the endpoint into a browser and get JSON back.
Stage 2 — Send a request and read the answer
Section titled “Stage 2 — Send a request and read the answer”Time: about 20 minutes. Goal: a bid response you can dial.
-
Send the RTB request with the caller data your buyer requires. Send only the metadata you agreed to send — unexpected fields are the most common cause of a no-bid. → Send RTB requests to a Moja buyer
-
Read the response. A winning bid returns a phone number, a payout, a duration, and an allocation window. Expected result:
success: true, one eligible route, and a number you can dial. -
Store the
request_idalongside the full response. It is the first thing anyone will ask you for. -
Send the call to the number that was returned — that number, for that caller, inside that window. Not a cached number, and not after it expires. → Preventing stale RTB bids with bid expiration controls
Stage 2 is done when: one test call, placed inside the agreed window, reaches the returned number.
Stage 3 — Confirm you were credited
Section titled “Stage 3 — Confirm you were credited”Time: 10 minutes. Goal: agreement with your buyer about what happened.
-
Run a handful of calls inside the agreed test window with your test caller ID.
-
Ask your buyer to confirm they landed under the expected publisher and campaign.
-
Confirm the calls show the duration and payout you expect.
-
If you have your own Moja access, the call log is the source of truth. → How to read call logs · Call log column dictionary
Stage 3 is done when: you and your buyer agree, call for call, on what was delivered and what was paid.
Stage 4 — Scale it
Section titled “Stage 4 — Scale it”Before you add a second buyer, get the first one’s numbers reconciling cleanly. Two half-working integrations are much harder to debug than one.
Selling calls the other direction
Section titled “Selling calls the other direction”If you run Moja yourself and want to sell your calls out to other networks over RTB, that is Outbound RTB — see the Outbound RTB guide.
If something is not working
Section titled “If something is not working”| Symptom | Likely cause | Fix |
|---|---|---|
| Every request comes back no-bid | Filters, caps, hours, or a missing required parameter on the buyer’s side | How to troubleshoot RTB no-bid responses |
| Responses are slow | Too many targets, or slow downstream bidders in the buyer’s campaign | How to troubleshoot high RTB processing time |
| RTB logs but no call logs | The returned number was never dialled, or was dialled after the bid expired | Why am I seeing RTB logs but no call logs? |
| Calls connect but you are not paid | The buyer’s conversion rule was not met — usually a duration threshold | Why am I getting calls but no revenue? |
| Requests fail with an HTTP error | Wrong endpoint, method, query separators, or unencoded values | Re-check the URL against what your buyer sent, character for character |
| It worked yesterday and not today | Something changed on the buyer’s side — a cap, a schedule, or a filter | Send them the request_id and the timestamp |
What to send when you report a problem
Section titled “What to send when you report a problem”Contact your Moja-integrated buyer first, with: the request timestamp, the caller ID used, the complete request and response bodies, and the request_id. They can review the campaign from there, or escalate to Moja Support with everything already in hand.
Last reviewed: August 2026.

