Partner fees
For approved partners only: read and set the fees a sub-account pays you, and ask a sub-account to accept them. To set up a new sub-account, start with Set up a sub-account on the Sub-accounts page. For the step by step, see Partner program.
Every call on this page answers 404 partner_program_off while the Partner program is off, and 403 main_account_only to a sub-account’s key: call them with your main account’s key.
#Get a client’s fees
Reads a sub-account’s current partner fees and their limits. Read them before you set them. Your account needs to be an approved partner (fee rules).
Parameters
idinteger · pathRequired- The sub-account id.
Returns
data.ready- Ready’s fee for this client.
data.lowest- The lowest you can set: Ready’s fee, or your lowest price where Ready set one for you and you brought this client in.
data.ceiling- The most you can set.
data.billed- What the client pays now.
Errors
| HTTP | Code | When |
|---|---|---|
| 403 | not_a_partner | Your account isn’t an approved partner. Apply on the Partner page in Ready (app.tryready.com/earn) and we will review it. |
| 403 | main_account_only | The key is a sub-account’s. Use your main account’s key. |
| 404 | no code | Not a client you set fees for. |
| 404 | partner_program_off | The Partner program is off. |
#Set a client’s fees
Sets what a sub-account with billing: "client" pays, in dollars. Send any of the fees below; it sets them to what you send, so sending the same fees again changes nothing. A fee above Ready’s needs the client’s consent, and a raise starts later (fee rules). A cut bills at once. Where your lowest price lets you go under Ready’s fee (data.lowest), that fee becomes this client’s own Ready fee for good: your ceiling drops to twice the new fee, and going back up is a raise that needs the client’s consent and waits. Check the numbers before you send them. Needs a live key (test keys).
Parameters
Each fee is what the client pays, from data.lowest up to data.ceiling (both from Get a client’s fees). The figures in the example aren’t Ready’s prices.
idinteger · pathRequired- The sub-account id.
More parameters
smsnumber- Each SMS segment, without carrier fees. Carrier fees are added on top, and you can’t change them.
mmsnumber- Each MMS message.
numbernumber- Each phone number, a month.
brandnumber- The brand registration, a month. The one time registration setup isn’t a partner fee.
campaignnumber- Each campaign registration, a month.
scrub, validator, blue, bluetext, dial, localpnumber- TCPA scrub (
scrub), number validation (validator), an iMessage line a month (blue), each iMessage text (bluetext), dialer minutes (dial) and local presence (localp).
Returns
data.changes[]object[]- One per fee:
product,from,to,statusandeffective_at.statusisnow(billing now),scheduled(a raise, fromeffective_at),unchangedorcanceled(a waiting raise you took back).
Errors
| HTTP | Code | When |
|---|---|---|
| 400 | no code | No fee field was sent. |
| 400 | fee_out_of_range | A fee is outside its range. limits gives min and max for each one refused, and reason says why when the fee is under Ready’s (under_lowest: under your lowest for this client; too_precise: more than six decimal places). |
| 400 | coming_soon | Ready doesn’t sell that product yet (products). Leave it out. |
| 403 | client_consent_required | A fee above Ready’s, and the client hasn’t accepted you setting their fees. Ask them with Ask a client to accept your fees (fee rules). |
| 403 | not_a_partner, agreement_required | Your account isn’t an approved partner (apply on the Partner page in Ready, app.tryready.com/earn), or hasn’t accepted the current Partner Terms. |
| 403 | partner_paused | Ready paused your partner account. Contact Ready support. |
| 403 | main_account_only | The key is a sub-account’s. Use your main account’s key. |
| 404 | no code | Not a client you set fees for. A billing: "agency" sub-account always answers this. |
| 404 | partner_program_off | The Partner program is off. |
| 409 | price_moved | Their price changed while you saved. Nothing changed. Read the fees again and retry. |
#Ask a client to accept your fees
Asks a client who hasn’t accepted you setting their fees yet. They see the request when they sign in to Ready, and get an email at most once in 7 days. Fees above Ready’s wait until they accept. Asking again while a request is open sends a reminder, inside the same email limit. Your account needs to be an approved partner on the current Partner Terms.
Parameters
idinteger · pathRequired- The sub-account id.
Returns
data.idinteger | null- The request’s id.
data.statestring- Always
pending. data.emailedboolean- Whether an email went out this time.
data.next_email_atstring | null- When no email went out because of the limit: the earliest time another can go.
Errors
| HTTP | Code | When |
|---|---|---|
| 403 | not_a_partner, agreement_required | Your account isn’t an approved partner (apply on the Partner page in Ready, app.tryready.com/earn), or hasn’t accepted the current Partner Terms. |
| 403 | partner_paused | Ready paused your partner account. Contact Ready support. |
| 403 | main_account_only | The key is a sub-account’s. Use your main account’s key. |
| 404 | no code | Not a client you set fees for. |
| 404 | partner_program_off | The Partner program is off. |
| 409 | already_accepted | The client already accepted. Set their fees. |
| 500 | no code | Nothing changed. Retry. |
#Get your default fees
Reads the fees new sub-accounts start with. Your account needs to be an approved partner (403 not_a_partner).
Returns
data.defaultsobject- Your default fees.
data.standardobject- Ready’s fee for a new sub-account, per product.
data.lowestobject- The lowest each default may be.
#Set your default fees
Sets the fees every new client gets. A client gets them when they accept you (fee rules). It takes the same fee fields as Set a client’s fees (sms, mms, scrub, validator, number, brand, campaign, blue, bluetext, dial and localp), with the same limits. Your account needs to be an approved partner on the current Partner Terms (403 not_a_partner, agreement_required). Sub-accounts already with you keep their fees. A default under Ready’s fee becomes that client’s own Ready fee for good when they accept.
Returns
data.defaultsobject | null- Your saved defaults.
nullif they were saved but couldn’t be read back.
Errors
| HTTP | Code | When |
|---|---|---|
| 400 | no code | No fee field was sent. |
| 400 | coming_soon | A product in the body can’t be priced yet; products lists them. |
| 400 | fee_out_of_range | A fee is below your lowest fee or above twice Ready’s fee; limits has the range. |
| 403 | partner_paused | Ready paused your partner account. Contact Ready support. |
| 500 | no code | Not saved. Nothing changed; retry. |