{"data":{"$schema":"https://docs.mworks.com/schemas/pricing/v1.json","version":"1.27.0","updated_at":"2026-09-04","currency":"USD","credit":{"rate_per_credit_usd":0.05,"stripe_lookup_key_payg":"credits_metered","free_monthly_grant":2000,"free_grant_accumulates":false},"overage_policy":{"products":"payg","platform":"contact_sales"},"products":{"popcast":{"display_name":"Popcast","kicker":"Audience Intelligence","status":"production","operations":[{"id":"popcast_audience_query","display_name":"Audience Query","credits_per_call":2,"usd_per_call":0.1,"qualifier":null,"endpoints":["GET /v2/popcast/at-home","GET /v2/popcast/anytime"],"status":"production"},{"id":"popcast_custom_audience","display_name":"Custom Audience","credits_per_call":1000,"usd_per_call":50,"qualifier":"per audience","endpoints":["POST /v2/popcast/audiences"],"status":"production","note":"Flat one-time registration cost per custom audience. Retrieval charged separately via Audience Query."}],"skus":[{"id":"popcast_at_home_monthly","display_name":"Popcast At Home — Monthly","billing_cadence":"monthly","price_usd":500,"included_calls":5000,"included_operation_id":"popcast_audience_query","status":"production"},{"id":"popcast_at_home_annual","display_name":"Popcast At Home — Annual","billing_cadence":"annual","price_usd":6000,"included_calls_per_year":60000,"included_operation_id":"popcast_audience_query","status":"production"},{"id":"popcast_anytime_monthly","display_name":"Popcast Anytime (incl. At Home) — Monthly","billing_cadence":"monthly","price_usd":750,"included_calls":7500,"included_operation_id":"popcast_audience_query","status":"production"},{"id":"popcast_anytime_annual","display_name":"Popcast Anytime (incl. At Home) — Annual","billing_cadence":"annual","price_usd":9000,"included_calls_per_year":90000,"included_operation_id":"popcast_audience_query","status":"production"}],"addons":[]},"placecast":{"display_name":"Placecast","kicker":"Place Intelligence — Current Profiles and Event Analysis","status":"production","operations":[{"id":"placecast_profile_call","display_name":"Place Profile Call","credits_per_call":20,"usd_per_call":1,"qualifier":null,"endpoints":["GET /v2/placecast/profiles/:place_id"],"status":"production","note":"One place returns a full profile object with all details."},{"id":"placecast_select_submit","display_name":"Select Submit","credits_per_call":2000,"usd_per_call":100,"qualifier":"per event submission","endpoints":["POST /v2/placecast/select"],"status":"production"},{"id":"placecast_select_retrieve","display_name":"Select Retrieve","credits_per_call":1,"usd_per_call":0.05,"qualifier":"per poll","endpoints":["GET /v2/placecast/select","GET /v2/placecast/select/:id"],"status":"production"},{"id":"placecast_custom_place","display_name":"Custom Place","credits_per_call":150,"usd_per_call":7.5,"qualifier":"per place","endpoints":["POST /v2/placecast/places"],"status":"production","note":"One place at a time. Register-once with large data object defining the place."}],"skus":[{"id":"placecast_profiles_standard_monthly","billing_cadence":"monthly","price_usd":1500,"expected_calls":3000,"scope":"standard","place_universe":"TBD","status":"production"},{"id":"placecast_profiles_mid_monthly","billing_cadence":"monthly","price_usd":2250,"expected_calls":4500,"scope":"mid","place_universe":"TBD","status":"production"},{"id":"placecast_profiles_full_monthly","billing_cadence":"monthly","price_usd":3000,"expected_calls":6000,"scope":"full","place_universe":"TBD","status":"production"},{"id":"placecast_profiles_standard_annual","billing_cadence":"annual","price_usd":18000,"expected_calls_per_year":36000,"scope":"standard","place_universe":"TBD","status":"production"},{"id":"placecast_profiles_mid_annual","billing_cadence":"annual","price_usd":27000,"expected_calls_per_year":54000,"scope":"mid","place_universe":"TBD","status":"production"},{"id":"placecast_profiles_full_annual","billing_cadence":"annual","price_usd":36000,"expected_calls_per_year":72000,"scope":"full","place_universe":"TBD","status":"production"},{"id":"placecast_select_event","billing_cadence":"one-time","price_usd_per_event":1500,"status":"production","note":"Default per-event rate; tiered discount table TBD."}],"addons":[]},"pathcast":{"display_name":"Pathcast","kicker":"Traffic Volume Measurement","status":"roadmap","operations":[{"id":"pathcast_location_month","display_name":"Location-Month Lookup","credits_per_call":100,"usd_per_call":5,"qualifier":"per location-month","endpoints":["GET /v2/pathcast/paths/:id","GET /v2/pathcast/faces/:id/paths","GET /v2/pathcast/faces/:id/viewshed","GET /v2/pathcast/paths/:id/traffic","GET /v2/pathcast/paths/:id/history"],"status":"roadmap","note":"Direct data access via Snowflake/BigQuery; not API-metered. SKUs preserved as sales surface."}],"skus":[{"id":"pathcast_500","billing_cadence":"annual","price_usd":3750,"included_locations":500,"rate_per_location_yr":6.25,"annual_minimum_usd":3750,"status":"roadmap"},{"id":"pathcast_2000","billing_cadence":"annual","price_usd":11250,"included_locations":2000,"rate_per_location_yr":5.625,"status":"roadmap"},{"id":"pathcast_5000","billing_cadence":"annual","price_usd":25000,"included_locations":5000,"rate_per_location_yr":5,"status":"roadmap"},{"id":"pathcast_10000","billing_cadence":"annual","price_usd":43750,"included_locations":10000,"rate_per_location_yr":4.375,"status":"roadmap"},{"id":"pathcast_25000","billing_cadence":"annual","price_usd":93750,"included_locations":25000,"rate_per_location_yr":3.75,"status":"roadmap"},{"id":"pathcast_50000","billing_cadence":"annual","price_usd":171875,"included_locations":50000,"rate_per_location_yr":3.4375,"status":"roadmap"},{"id":"pathcast_100000","billing_cadence":"annual","price_usd":312500,"included_locations":100000,"rate_per_location_yr":3.125,"status":"roadmap"},{"id":"pathcast_unlimited","billing_cadence":"annual","price_usd":null,"included_locations":null,"rate_per_location_yr":2.8125,"status":"roadmap","note":"Rate beyond 100k locations."}]}},"platform":{"viewcast":{"display_name":"Viewcast","kicker":"OOH Display Planning — viewshed validation","status":"production","operations":[{"id":"viewcast_display_validation","display_name":"Viewcast Display Validation","credits_per_call":5,"usd_per_call":0.25,"qualifier":"per validation","endpoints":["POST /v2/viewcast/display-validation"],"status":"production","note":"MA-121: synchronous display-face validation against the BQ procedure mworks-product.viewcast.sketch_viewshed_v0 on the resurrected mw-api-viewcast worker. Customer-facing price is 5 cr/call; the endpoint is marked conditional in PRICING_MANIFEST (no CREDIT_COSTS claim) so the codegen skips the 5-cr endpoint entry, and the runtime 1-cr router base for the route lives in scripts/credit-costs-manual-additions.json. creditsForOperation = 5; the handler charges the 4-cr delta through deduct_credits, matching the displays purchase pattern. Results KV-cached 24h; cache hits are still charged 5 credits."},{"id":"viewcast_on_demand_detail","display_name":"Viewcast On-Demand Detail","credits_per_call":1,"usd_per_call":0.05,"qualifier":null,"endpoints":["GET /v2/viewcast/on-demand/:asset_id"],"status":"production","note":"MA-125: asset + measurement detail on mw-api-viewcast. 1 cr, org-scoped, no-store."}]},"displays_profiles":{"display_name":"Displays","kicker":"OOH Audience Measurement — historical","status":"production","operations":[{"id":"displays_viewshed_purchase_draft","display_name":"Displays Viewshed Purchase (Draft)","credits_per_call":150,"usd_per_call":7.5,"qualifier":"per face","endpoints":["POST /v2/viewcast/measurements/:asset_id/purchase"],"status":"production","note":"State-conditional purchase (150 cr when the asset is in state draft). Does NOT claim the endpoint in CREDIT_COSTS; the base 1 cr via displays_asset_crud is the CREDIT_COSTS entry. Replaces viewcast_custom_inventory (MA-79 / ADR-0037). MA-117 renamed from viewcast_viewshed_purchase_draft. MA-128 / ADR-0045: the route moved to mw-api-viewcast and the live purchase op is the viewcast_* twin; this op id is kept (append-only discipline) for ledger continuity — the displays cron still completes pre-cutover rows carrying this op name (ADR-0045 D6; the ledger CHECK admits both prefixes, migration 0064)."},{"id":"displays_viewshed_purchase_final","display_name":"Displays Viewshed Purchase (Final)","credits_per_call":300,"usd_per_call":15,"qualifier":null,"endpoints":["POST /v2/viewcast/measurements/:asset_id/purchase"],"status":"production","note":"State-conditional purchase (300 cr when the asset is in state draft_measured, the owned-asset final transition). Does NOT claim the endpoint in CREDIT_COSTS; the base 1 cr via displays_asset_crud is the CREDIT_COSTS entry. Replaces viewcast_profile_call for the owned-asset transition (MA-79 / ADR-0037). MA-117 renamed from viewcast_viewshed_purchase_final. MA-128 / ADR-0045: the route moved to mw-api-viewcast and the live purchase op is the viewcast_* twin; this op id is kept (append-only discipline) for ledger continuity (ADR-0045 D6; migration 0064 CHECK admits both prefixes)."},{"id":"displays_asset_crud","display_name":"Displays Asset CRUD","credits_per_call":1,"usd_per_call":0.05,"qualifier":null,"endpoints":["POST /v2/displays/assets","GET /v2/displays/assets","GET /v2/displays/assets/:asset_id","PATCH /v2/displays/assets/:asset_id","DELETE /v2/displays/assets/:asset_id","GET /v2/displays/assets/summary"],"status":"production","note":"Library listing, detail, refine, archive, summary, and draft create calls on the Displays Asset library. Carries the base CREDIT_COSTS claim for the conditional purchase endpoints (MA-79 / ADR-0037). Merged into the Displays worker (MA-113): endpoints re-pathed from /v2/viewcast/* to /v2/displays/* on 2026-09-02. MA-117 renamed from viewcast_asset_crud. MA-128 / ADR-0045: the measurement purchase/poll and profile-read endpoints moved to /v2/viewcast/* (base claim via viewcast_asset_crud); removed from this list."},{"id":"displays_viewshed_purchase_direct","display_name":"Displays Viewshed Purchase (Direct Add)","credits_per_call":300,"usd_per_call":15,"qualifier":null,"endpoints":["GET /v2/viewcast/profiles/:display_id"],"status":"production","note":"Direct-add purchase (300 cr when the caller org does not own the display). Auto-adds the face to the caller org assets, related_parties empty (the DB default \"[]\"::jsonb), starts a 12-month measurement subscription clocked from purchase date. Does NOT claim the endpoint in CREDIT_COSTS; the base 1 cr via displays_asset_crud is the CREDIT_COSTS entry. Replaces viewcast_profile_call for the direct-add path (MA-79 / ADR-0037). MA-117 renamed from viewcast_viewshed_purchase_direct. MA-128 / ADR-0045: the route moved to mw-api-viewcast and the live direct-add op is the viewcast_* twin; this op id is kept (append-only discipline) for ledger continuity (ADR-0045 D6)."},{"id":"displays_search","display_name":"Displays Search","credits_per_call":1,"usd_per_call":0.05,"qualifier":null,"endpoints":["POST /v2/displays/search"],"status":"production","note":"MA-115 Card 5: ES-backed public display search. 1 credit per search request. Feature key oohdisplays.displays.search (provisional). Authenticated-only (no anonymous search at launch)."},{"id":"viewcast_viewshed_purchase_draft","display_name":"Viewcast Viewshed Purchase (Draft)","credits_per_call":150,"usd_per_call":7.5,"qualifier":"per face","endpoints":["POST /v2/viewcast/measurements/purchase/:type"],"status":"production","note":"MA-128 / ADR-0045: the draft-measurement purchase moved from the displays worker to /v2/viewcast/measurements/:asset_id/purchase (op renamed back from displays_viewshed_purchase_draft). State-conditional purchase (150 cr when the asset is in state draft). Does NOT claim the endpoint in CREDIT_COSTS; the base 1 cr via viewcast_asset_crud is the CREDIT_COSTS entry. MA-139 / ADR-0046: the route refactored to /v2/viewcast/measurements/purchase/{type} (type in {draft, final, direct}); asset_id moved from path to body."},{"id":"viewcast_viewshed_purchase_final","display_name":"Viewcast Viewshed Purchase (Final)","credits_per_call":300,"usd_per_call":15,"qualifier":null,"endpoints":["POST /v2/viewcast/measurements/purchase/:type"],"status":"production","note":"MA-128 / ADR-0045: the final-measurement purchase moved to /v2/viewcast/measurements/:asset_id/purchase (op renamed back from displays_viewshed_purchase_final). State-conditional purchase (300 cr when the asset is in state draft_measured). Does NOT claim the endpoint in CREDIT_COSTS; the base 1 cr via viewcast_asset_crud is the CREDIT_COSTS entry. MA-139 / ADR-0046: the route refactored to /v2/viewcast/measurements/purchase/{type} (type in {draft, final, direct}); asset_id moved from path to body."},{"id":"viewcast_asset_crud","display_name":"Viewcast Asset CRUD","credits_per_call":1,"usd_per_call":0.05,"qualifier":null,"endpoints":["POST /v2/viewcast/measurements/purchase/:type","GET /v2/viewcast/measurements/:asset_id","GET /v2/viewcast/profiles/:display_id"],"status":"production","note":"MA-128 / ADR-0045: base 1-cr op for the measurement + profile surface on the viewcast worker (op renamed back from displays_asset_crud). Carries the base CREDIT_COSTS claim for the conditional purchase endpoints. The asset-library CRUD routes stay on the displays worker under displays_asset_crud. MA-139 / ADR-0046: the purchase route refactored from /v2/viewcast/measurements/:asset_id/purchase to /v2/viewcast/measurements/purchase/:type (codegen normalizes :type to :id; the retired key is dropped here so the router billing middleware keeps charging the 1-cr base on the new path)."},{"id":"viewcast_viewshed_purchase_direct","display_name":"Viewcast Viewshed Purchase (Direct Add)","credits_per_call":300,"usd_per_call":15,"qualifier":null,"endpoints":["GET /v2/viewcast/profiles/:display_id","POST /v2/viewcast/measurements/purchase/:type"],"status":"production","note":"MA-128 / ADR-0045: the direct-add profile purchase moved to /v2/viewcast/profiles/:display_id (op renamed back from displays_viewshed_purchase_direct). Direct-add purchase (300 cr when the caller org does not own the display). Does NOT claim the endpoint in CREDIT_COSTS; the base 1 cr via viewcast_asset_crud is the CREDIT_COSTS entry. MA-139 / ADR-0046: first real use of this op on the NEW synchronous direct-measurement purchase path POST /v2/viewcast/measurements/purchase/direct (caller submits display_id + the create-asset field set; mints a final_measured asset). Shares the (org_id, source_display_id) direct-add unique index with the profile direct-add per ruling 3."}],"skus":[{"id":"displays_t1","billing_cadence":"annual","price_usd":5000,"weekly_impression_tier":"1M","included_calls_per_year":333,"status":"production"},{"id":"displays_t2","billing_cadence":"annual","price_usd":10750,"weekly_impression_tier":"5M","included_calls_per_year":717,"status":"production"},{"id":"displays_t3","billing_cadence":"annual","price_usd":12000,"weekly_impression_tier":"10M","included_calls_per_year":800,"status":"production"},{"id":"displays_t4","billing_cadence":"annual","price_usd":18000,"weekly_impression_tier":"25M","included_calls_per_year":1200,"status":"production"},{"id":"displays_t5","billing_cadence":"annual","price_usd":45500,"weekly_impression_tier":"100M","included_calls_per_year":3033,"status":"production"},{"id":"displays_t6","billing_cadence":"annual","price_usd":90000,"weekly_impression_tier":"250M","included_calls_per_year":6000,"status":"production"},{"id":"displays_t7","billing_cadence":"annual","price_usd":146500,"weekly_impression_tier":"500M","included_calls_per_year":9767,"status":"production"},{"id":"displays_t8","billing_cadence":"annual","price_usd":194000,"weekly_impression_tier":"1B","included_calls_per_year":12933,"status":"production"},{"id":"displays_t9","billing_cadence":"annual","price_usd":417000,"weekly_impression_tier":"3B","included_calls_per_year":27800,"status":"production"},{"id":"displays_t10","billing_cadence":"annual","price_usd":500000,"weekly_impression_tier":"6B","included_calls_per_year":33333,"status":"production"},{"id":"displays_t11","billing_cadence":"annual","price_usd":600000,"weekly_impression_tier":"12B","included_calls_per_year":40000,"cap":"all_you_can_eat","status":"production","note":"Ceiling tier — largest US operator @ ~12B weekly impressions. Intentional all-you-can-eat cap."}]},"campaign_measurement":{"display_name":"Campaign Measurement","kicker":"Viewcast Select — Deduplicated Reach + Frequency","status":"planned","operations":[{"id":"campaign_submit","display_name":"Campaign Submit","credits_per_call":5000,"usd_per_call":250,"qualifier":"per submission","endpoints":["POST /v2/campaign-analysis"],"status":"planned","planned_endpoint":"POST /v2/campaign-analysis","note":"Forward-looking surface; not yet implemented. Distinct from legacy Set Dynamics."},{"id":"campaign_retrieve","display_name":"Campaign Retrieve","credits_per_call":1,"usd_per_call":0.05,"qualifier":"per poll","endpoints":["GET /v2/campaign-analysis/:id"],"status":"planned","planned_endpoint":"GET /v2/campaign-analysis/:id"}],"skus_subscription":[{"id":"cm_sub_t1","billing_cadence":"annual","price_usd":36000,"weekly_impression_tier":"1M","included_campaigns_per_year":144,"status":"planned"},{"id":"cm_sub_t2","billing_cadence":"annual","price_usd":72000,"weekly_impression_tier":"5M","included_campaigns_per_year":288,"status":"planned"},{"id":"cm_sub_t3","billing_cadence":"annual","price_usd":108000,"weekly_impression_tier":"10M","included_campaigns_per_year":432,"status":"planned"},{"id":"cm_sub_t4","billing_cadence":"annual","price_usd":180000,"weekly_impression_tier":"25M","included_campaigns_per_year":720,"status":"planned"},{"id":"cm_sub_t5","billing_cadence":"annual","price_usd":300000,"weekly_impression_tier":"100M","included_campaigns_per_year":1200,"status":"planned"},{"id":"cm_sub_t6","billing_cadence":"annual","price_usd":500000,"weekly_impression_tier":"500M","included_campaigns_per_year":2000,"status":"planned"},{"id":"cm_sub_t7","billing_cadence":"annual","price_usd":750000,"weekly_impression_tier":"1B","included_campaigns_per_year":3000,"status":"planned"}],"skus_per_event":[{"id":"cm_event_le_50","billing_cadence":"one-time","max_events":50,"price_usd_per_event":1650,"pricing_basis":"Pathcast Select + 10%","status":"planned"},{"id":"cm_event_le_250","billing_cadence":"one-time","max_events":250,"price_usd_per_event":825,"pricing_basis":"Pathcast Select + 10%","status":"planned"},{"id":"cm_event_le_1000","billing_cadence":"one-time","max_events":1000,"price_usd_per_event":440,"pricing_basis":"Pathcast Select + 10%","status":"planned"},{"id":"cm_event_le_5000","billing_cadence":"one-time","max_events":5000,"price_usd_per_event":220,"pricing_basis":"Pathcast Select + 10%","status":"planned"},{"id":"cm_event_le_10000","billing_cadence":"one-time","max_events":10000,"price_usd_per_event":137.5,"pricing_basis":"Pathcast Select + 10%","status":"planned"},{"id":"cm_event_le_25000","billing_cadence":"one-time","max_events":25000,"price_usd_per_event":82.5,"pricing_basis":"Pathcast Select + 10%","status":"planned"},{"id":"cm_event_le_50000","billing_cadence":"one-time","max_events":50000,"price_usd_per_event":55,"pricing_basis":"Pathcast Select + 10%","status":"planned"},{"id":"cm_event_unlimited","billing_cadence":"one-time","max_events":null,"price_usd_per_event":27.5,"pricing_basis":"Pathcast Select + 10%","status":"planned"}],"legacy_endpoints":{"note":"set-dynamics endpoints (POST /v2/set-dynamics/scenarios, GET ...) remain in docs/openapi/set-dynamics.yaml as legacy/internal; Campaign is a forward-looking surface, not a rename."}}},"reference_operations":[{"id":"popcast_reference_call","display_name":"Popcast Reference Call","credits_per_call":1,"usd_per_call":0.05,"qualifier":null,"endpoints":["POST /v2/popcast/segments","GET /v2/popcast/segments","GET /v2/popcast/segments/:id"],"note":"Audience segment list + detail. Cross-cutting reference data for Popcast queries."},{"id":"markets_reference_call","display_name":"Markets Reference Call","credits_per_call":1,"usd_per_call":0.05,"qualifier":null,"endpoints":["GET /v2/markets","GET /v2/markets/:id"],"note":"DMA list + detail. Cross-cutting reference data for geography-scoped operations."},{"id":"places_reference_call","display_name":"Places Reference Call","credits_per_call":1,"usd_per_call":0.05,"qualifier":null,"endpoints":["GET /v2/places","GET /v2/places/:poi_id"],"group_label":"Placecast Library","note":"POI-anchored Places Library lookup + filtered retrieval (ADR-024)."},{"id":"places_brand_detail","display_name":"Places Brand Detail","credits_per_call":1,"usd_per_call":0.05,"qualifier":null,"endpoints":["GET /v2/places/brands/:brand_id"],"group_label":"Placecast Library","note":"Brand-level footprint roll-up (count, top states + cities, centroid) backed by the brand_rollup materialized view (ADR-024 amendment, app-mworks-com#156)."},{"id":"paths_tiles_fetch","display_name":"Paths Vector Tile Fetch","credits_per_call":1,"usd_per_call":0.05,"qualifier":"per 1000 tiles served","meter_divisor":1000,"endpoints":["GET /v2/paths/tiles/{layer}/{z}/{x}/{y}.mvt"],"status":"production","group_label":"Pathcast Maptiles Access","note":"Motionworks Paths roadway-volume vector tiles. Metered at 1 credit per 1,000 tiles served. The grant/tilejson control-plane endpoints below are free."},{"id":"paths_tiles_grant_create","credits_per_call":0,"usd_per_call":0,"qualifier":null,"endpoints":["POST /v2/paths/tiles/grants"],"group_label":"Pathcast Maptiles Access"},{"id":"paths_tiles_grant_list","credits_per_call":0,"usd_per_call":0,"qualifier":null,"endpoints":["GET /v2/paths/tiles/grants"],"group_label":"Pathcast Maptiles Access"},{"id":"paths_tiles_tilesets","credits_per_call":0,"usd_per_call":0,"qualifier":null,"endpoints":["GET /v2/paths/tiles/tilesets"],"group_label":"Pathcast Maptiles Access"},{"id":"paths_tiles_grant_get","credits_per_call":0,"usd_per_call":0,"qualifier":null,"endpoints":["GET /v2/paths/tiles/grants/:id"],"group_label":"Pathcast Maptiles Access"},{"id":"paths_tiles_grant_revoke","credits_per_call":0,"usd_per_call":0,"qualifier":null,"endpoints":["POST /v2/paths/tiles/grants/:id/revoke"],"group_label":"Pathcast Maptiles Access"},{"id":"paths_tiles_tilejson","credits_per_call":0,"usd_per_call":0,"qualifier":null,"endpoints":["GET /v2/paths/tiles/grants/:id/tilejson"],"group_label":"Pathcast Maptiles Access"},{"id":"placecast_tiles_fetch","display_name":"Placecast Vector Tile Fetch","credits_per_call":1,"usd_per_call":0.05,"qualifier":"per 1000 tiles served","meter_divisor":1000,"endpoints":["GET /v2/placecast/tiles/{layer}/{z}/{x}/{y}.mvt"],"status":"production","group_label":"Placecast Maptiles Access","note":"Motionworks Placecast place-intelligence vector tiles (buildings + DCA polygons). Metered at 1 credit per 1,000 tiles served. The grant/tilejson control-plane endpoints below are free."},{"id":"placecast_tiles_grant_create","credits_per_call":0,"usd_per_call":0,"qualifier":null,"endpoints":["POST /v2/placecast/tiles/grants"],"group_label":"Placecast Maptiles Access"},{"id":"placecast_tiles_grant_list","credits_per_call":0,"usd_per_call":0,"qualifier":null,"endpoints":["GET /v2/placecast/tiles/grants"],"group_label":"Placecast Maptiles Access"},{"id":"placecast_tiles_tilesets","credits_per_call":0,"usd_per_call":0,"qualifier":null,"endpoints":["GET /v2/placecast/tiles/tilesets"],"group_label":"Placecast Maptiles Access"},{"id":"placecast_tiles_grant_get","credits_per_call":0,"usd_per_call":0,"qualifier":null,"endpoints":["GET /v2/placecast/tiles/grants/:id"],"group_label":"Placecast Maptiles Access"},{"id":"placecast_tiles_grant_revoke","credits_per_call":0,"usd_per_call":0,"qualifier":null,"endpoints":["POST /v2/placecast/tiles/grants/:id/revoke"],"group_label":"Placecast Maptiles Access"},{"id":"placecast_tiles_tilejson","credits_per_call":0,"usd_per_call":0,"qualifier":null,"endpoints":["GET /v2/placecast/tiles/grants/:id/tilejson"],"group_label":"Placecast Maptiles Access"},{"id":"places_tiles_fetch","display_name":"Placecast Vector Tile Fetch","credits_per_call":1,"usd_per_call":0.05,"qualifier":"per 1000 tiles served","meter_divisor":1000,"endpoints":["GET /v2/places/tiles/{layer}/{z}/{x}/{y}.mvt"],"status":"production","group_label":"Placecast Maptiles Access","note":"Motionworks Places place-intelligence vector tiles. Metered at 1 credit per 1,000 tiles served. The grant/tilejson control-plane endpoints below are free."},{"id":"places_tiles_grant_create","credits_per_call":0,"usd_per_call":0,"qualifier":null,"endpoints":["POST /v2/places/tiles/grants"],"group_label":"Placecast Maptiles Access"},{"id":"places_tiles_grant_list","credits_per_call":0,"usd_per_call":0,"qualifier":null,"endpoints":["GET /v2/places/tiles/grants"],"group_label":"Placecast Maptiles Access"},{"id":"places_tiles_tilesets","credits_per_call":0,"usd_per_call":0,"qualifier":null,"endpoints":["GET /v2/places/tiles/tilesets"],"group_label":"Placecast Maptiles Access"},{"id":"places_tiles_grant_get","credits_per_call":0,"usd_per_call":0,"qualifier":null,"endpoints":["GET /v2/places/tiles/grants/:id"],"group_label":"Placecast Maptiles Access"},{"id":"places_tiles_grant_revoke","credits_per_call":0,"usd_per_call":0,"qualifier":null,"endpoints":["POST /v2/places/tiles/grants/:id/revoke"],"group_label":"Placecast Maptiles Access"},{"id":"places_tiles_tilejson","credits_per_call":0,"usd_per_call":0,"qualifier":null,"endpoints":["GET /v2/places/tiles/grants/:id/tilejson"],"group_label":"Placecast Maptiles Access"},{"id":"displays_tiles_fetch","display_name":"OOH Displays Vector Tile Fetch","credits_per_call":1,"usd_per_call":0.05,"qualifier":"per 1000 tiles served","meter_divisor":1000,"endpoints":["GET /v2/displays/tiles/{layer}/{z}/{x}/{y}.mvt"],"status":"production","group_label":"OOH Displays Maptiles Access","note":"Motionworks OOH Displays inventory face vector tiles. Metered at 1 credit per 1,000 tiles served. The grant/tilejson control-plane endpoints below are free."},{"id":"displays_tiles_grant_create","credits_per_call":0,"usd_per_call":0,"qualifier":null,"endpoints":["POST /v2/displays/tiles/grants"],"group_label":"OOH Displays Maptiles Access"},{"id":"displays_tiles_grant_list","credits_per_call":0,"usd_per_call":0,"qualifier":null,"endpoints":["GET /v2/displays/tiles/grants"],"group_label":"OOH Displays Maptiles Access"},{"id":"displays_tiles_tilesets","credits_per_call":0,"usd_per_call":0,"qualifier":null,"endpoints":["GET /v2/displays/tiles/tilesets"],"group_label":"OOH Displays Maptiles Access"},{"id":"displays_tiles_grant_get","credits_per_call":0,"usd_per_call":0,"qualifier":null,"endpoints":["GET /v2/displays/tiles/grants/:id"],"group_label":"OOH Displays Maptiles Access"},{"id":"displays_tiles_grant_revoke","credits_per_call":0,"usd_per_call":0,"qualifier":null,"endpoints":["POST /v2/displays/tiles/grants/:id/revoke"],"group_label":"OOH Displays Maptiles Access"},{"id":"displays_tiles_tilejson","credits_per_call":0,"usd_per_call":0,"qualifier":null,"endpoints":["GET /v2/displays/tiles/grants/:id/tilejson"],"group_label":"OOH Displays Maptiles Access"},{"id":"markets_tiles_fetch","display_name":"Markets Reference Vector Tile Fetch","credits_per_call":1,"usd_per_call":0.05,"qualifier":"per 1000 tiles served","meter_divisor":1000,"endpoints":["GET /v2/markets/tiles/{layer}/{z}/{x}/{y}.mvt"],"status":"production","group_label":"Markets Reference Maptiles Access","note":"Motionworks Markets Reference geography vector tiles — blockgroup / county / metro_division / metro / micro / state / zipcode polygons. Metered at 1 credit per 1,000 tiles served. The grant/tilejson control-plane endpoints below are free."},{"id":"markets_tiles_grant_create","credits_per_call":0,"usd_per_call":0,"qualifier":null,"endpoints":["POST /v2/markets/tiles/grants"],"group_label":"Markets Reference Maptiles Access"},{"id":"markets_tiles_grant_list","credits_per_call":0,"usd_per_call":0,"qualifier":null,"endpoints":["GET /v2/markets/tiles/grants"],"group_label":"Markets Reference Maptiles Access"},{"id":"markets_tiles_tilesets","credits_per_call":0,"usd_per_call":0,"qualifier":null,"endpoints":["GET /v2/markets/tiles/tilesets"],"group_label":"Markets Reference Maptiles Access"},{"id":"markets_tiles_grant_get","credits_per_call":0,"usd_per_call":0,"qualifier":null,"endpoints":["GET /v2/markets/tiles/grants/:id"],"group_label":"Markets Reference Maptiles Access"},{"id":"markets_tiles_grant_revoke","credits_per_call":0,"usd_per_call":0,"qualifier":null,"endpoints":["POST /v2/markets/tiles/grants/:id/revoke"],"group_label":"Markets Reference Maptiles Access"},{"id":"markets_tiles_tilejson","credits_per_call":0,"usd_per_call":0,"qualifier":null,"endpoints":["GET /v2/markets/tiles/grants/:id/tilejson"],"group_label":"Markets Reference Maptiles Access"},{"id":"popcast_anytime_tiles_fetch","display_name":"Popcast Anytime Vector Tile Fetch","credits_per_call":1,"usd_per_call":0.05,"qualifier":"per 1000 tiles served","meter_divisor":1000,"endpoints":["GET /v2/popcast/tiles/anytime/{layer}/{z}/{x}/{y}.mvt"],"status":"production","group_label":"Popcast Anytime Maptiles Access","note":"Motionworks Popcast Anytime Population vector tiles — one grant covers all audience-segment tilesets in the published v2.3 family (`tiles_anytime_v2_3_<16hex>_<yyyymm>_<yyyymm>_{bg,zcta}_v1`, 372 tilesets as of the 2026-08-11 DATA-5324 rename). Metered at 1 credit per 1,000 tiles served. The grant/tilejson/tilesets control-plane endpoints are free."},{"id":"popcast_anytime_tiles_grant_create","credits_per_call":0,"usd_per_call":0,"qualifier":null,"endpoints":["POST /v2/popcast/tiles/anytime/grants"],"group_label":"Popcast Anytime Maptiles Access"},{"id":"popcast_anytime_tiles_grant_list","credits_per_call":0,"usd_per_call":0,"qualifier":null,"endpoints":["GET /v2/popcast/tiles/anytime/grants"],"group_label":"Popcast Anytime Maptiles Access"},{"id":"popcast_anytime_tiles_tilesets","credits_per_call":0,"usd_per_call":0,"qualifier":null,"endpoints":["GET /v2/popcast/tiles/anytime/tilesets"],"group_label":"Popcast Anytime Maptiles Access"},{"id":"popcast_anytime_tiles_grant_get","credits_per_call":0,"usd_per_call":0,"qualifier":null,"endpoints":["GET /v2/popcast/tiles/anytime/grants/:id"],"group_label":"Popcast Anytime Maptiles Access"},{"id":"popcast_anytime_tiles_grant_revoke","credits_per_call":0,"usd_per_call":0,"qualifier":null,"endpoints":["POST /v2/popcast/tiles/anytime/grants/:id/revoke"],"group_label":"Popcast Anytime Maptiles Access"},{"id":"popcast_anytime_tiles_tilejson","credits_per_call":0,"usd_per_call":0,"qualifier":null,"endpoints":["GET /v2/popcast/tiles/anytime/grants/:id/tilejson"],"group_label":"Popcast Anytime Maptiles Access"}],"free_operations":[{"id":"free_call","credits_per_call":0,"endpoints":["GET /v2/health","GET /v2/health/data","GET /v2/billing/credits","POST /v2/billing/credits","GET /v2/billing/credit-schedule","GET /v2/billing/pricing","GET /v2/billing/wallet","POST /v2/billing/checkout","POST /v2/orders","POST /v2/redemption/validate","POST /v2/redemption/complete","GET /v2/billing/subscription","POST /v2/billing/portal","GET /v2/organizations/me","GET /v2/workspace/orgs","POST /v2/workspace/orgs/:id/activate","GET /v2/workspace/sharing/orgs","GET /v2/workspace/projects","POST /v2/workspace/projects","GET /v2/workspace/projects/:id","PATCH /v2/workspace/projects/:id","DELETE /v2/workspace/projects/:id","GET /v2/workspace/projects/:id/sharing","PATCH /v2/workspace/projects/:id/sharing","GET /v2/workspace/projects/:id/scenarios","POST /v2/workspace/projects/:id/scenarios","GET /v2/workspace/scenarios","POST /v2/workspace/scenarios","GET /v2/workspace/scenarios/:id","PATCH /v2/workspace/scenarios/:id","DELETE /v2/workspace/scenarios/:id","POST /v2/workspace/scenarios/:id/clone","POST /v2/workspace/scenarios/:id/move","GET /v2/workspace/scenarios/:id/sharing","PATCH /v2/workspace/scenarios/:id/sharing"]},{"id":"places_autocomplete","credits_per_call":0,"endpoints":["GET /v2/places/autocomplete"]}],"rate_limits":{"unit":"requests_per_minute","by_tier":{"guest":{"per_min":2,"burst":5},"free":{"per_min":12},"payg":{"per_min":60}},"unrestricted_features":["placecast.places.autocomplete","placecast.places.poi_place_tiles","placecast.profiles.building_dca_tiles","oohdisplays.displays.face_point_tiles","oohdisplays.displays.inventory_tiles","pathcast.paths.path_line_tiles","markets.reference.geography_tiles","popcast.at_home.segment_pop_tiles","popcast.anytime.segment_occ_tiles"],"notes":"Limits are per feature, per minute. The ceiling follows the org plan, not the auth surface (a paid org gets the payg rate on both its API key and its console JWT). Tiles and autocomplete are unrestricted at every tier. An explicit feature grant promotes a bought feature to unlimited."}},"meta":{"request_id":"req_f394839b7069","credits_used":0,"credits_remaining":0,"product":"platform","version":"2.0.0","provenance":{"source":"pricing-manifest","source_doc":"https://docs.mworks.com/reference/billing","methodology_version":"2.0.0","data_vintage":"2026-09-04","data_freshness":"static","data_latency_days":0,"data_maturity":"production"}}}