The finished price for a merchant's choices, before a store exists
const url = 'https://data.creatorain.com/partner/v1/pricing/quote?videos_per_month=2&term_months=3&approval_mode=auto&postal_code=95050';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url 'https://data.creatorain.com/partner/v1/pricing/quote?videos_per_month=2&term_months=3&approval_mode=auto&postal_code=95050' \ --header 'Authorization: Bearer <token>'Ask for a quote on the apply screen and the Confirm screen. You do NO price maths: every
number is ready to show. Show merchant.* on the merchant’s screens, and creatorain and
surcharge on your sales screen. Change a choice and ask again; the answer reflects it.
merchant.per_videois the price per published video you charge the merchant, with your surcharge and any plan surcharge already included (base price +surcharge.per_video+plan_surcharge.per_video). It is the same for every city.per_month= per video x videos per month,per_season= per month x 3.season_videos= videos per month x 3.creatorainis what we bill you, per published video: the creator’s actual cost plus our fee.fee_per_videois our fee. The creator cost varies per video, so it is not a fixed price:creator_cost_per_videois an estimate range (or null), the bill uses the actual cost.surcharge.per_videois your surcharge (PUT /settings; a default applies until you set one, so editing it changes what merchants see). It is shown so you can see your share, and is already included inmerchant.per_video(do not add it again).plan_surchargeis its own line for a non-standard plan: fewer than 2 videos a month, or a term below 3 months (sendterm_monthsto include it). Such a plan is accepted, andplan_surcharge.per_videois added to the merchant price so you can show why it costs more (appliesis true; 0 and false for a standard plan).placeholder: truemeans the amount is provisional and may change.valid_untilis the last day (UTC) the quote holds. A store confirmed by then is locked at the price in force when it is confirmed.
We bill by published video. postal_code is optional; when sent it is checked as a US ZIP
(a bad one is rejected), but there is no per-area pricing, so it does not change the price.
PARTNER KEY ONLY.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Query Parameters
Section titled “Query Parameters”1 to 10. The standard plan is 2 to 10; 1 is accepted and adds the plan surcharge.
Example
2Contract length in months, 1 to 120. The standard terms are 3, 8 and 12 (longer is allowed); below 3 adds the plan surcharge.
Example
3Example
95050Responses
Section titled “Responses”The quote.
object
What we bill the partner per published video. Not a fixed price.
object
Estimate range of the creator cost per video (on a quote, and on a store with no locked price; null on a locked store). The bill uses the actual cost.
object
object
The non-standard plan line, included in merchant. 0 / false for a standard plan.
object
True while the amount is provisional.
object
Per_video x videos per month. Null for a store with no plan.
Per_month x 3.
Example
{ "currency": "USD", "billing_unit": "published_video", "creatorain": { "fee_per_video": 10, "creator_cost_per_video": { "min": 20, "max": 40 }, "billed_as": "creator_cost_plus_fee" }, "surcharge": { "per_video": 10 }, "plan_surcharge": { "per_video": 5, "applies": false, "placeholder": true }, "merchant": { "per_video": 100, "per_month": 200, "per_season": 600 }, "season_videos": 6, "valid_until": "2026-10-31"}validation_error. field names the offending parameter.
object
object
The stable value to branch on.
A human sentence. Copy, not contract; it may be reworded.
The request field at fault, dotted for a nested one (plan.term_months).
Example
{ "error": { "code": "unauthorized" }}unauthorized. A missing, malformed, unknown or revoked key; or an invalid, expired or
wrong-store dashboard token. One answer for every case on purpose: the holder of a bad
credential learns nothing from the difference.
object
object
The stable value to branch on.
A human sentence. Copy, not contract; it may be reworded.
The request field at fault, dotted for a nested one (plan.term_months).
Example
{ "error": { "code": "unauthorized" }}rate_limited. Over this key’s requests-per-minute ceiling.
object
object
The stable value to branch on.
A human sentence. Copy, not contract; it may be reworded.
The request field at fault, dotted for a nested one (plan.term_months).
Example
{ "error": { "code": "unauthorized" }}