Viewcast On Demand purchase flow and credits
The credit model for Viewcast On Demand operations, idempotency, informational-outcome and failed-state auto-refunds, and the 12-month subscription window for direct-add profiles.
Viewcast On Demand meters every operation in credits. This page explains the credit costs, idempotency guarantees, refund behavior, and the subscription window for direct-add profile access.
All endpoints are on the v2 base https://api2.mworks.com. The pricing manifest version is 1.20.0. For the full endpoint reference, see Viewcast API reference.
Credit model
Every asset-library endpoint carries a base cost of 1 credit (viewcast_asset_crud). On top of the base cost, measurement purchases charge additional credits based on the measurement kind:
| Operation | Credit key | Credits | When charged |
|---|---|---|---|
| Any CRUD or measurement endpoint (base) | viewcast_asset_crud | 1 | Every call |
| Draft measurement purchase | viewcast_viewshed_purchase_draft | 150 | On POST .../measurements with kind=draft |
| Final measurement purchase | viewcast_viewshed_purchase_final | 300 | On POST .../measurements with kind=final |
| Direct-add profile (unowned, public, final_measured) | viewcast_viewshed_purchase_direct | 300 | On GET /v2/viewcast/profiles/{viewshed_id} for an unowned viewshed |
So a full lifecycle for one asset costs: 1 cr (create) + 1 cr (queue draft) + 150 cr (draft purchase) + 1 cr (queue final) + 300 cr (final purchase) = 453 credits, plus any read/list/summary calls at 1 cr each.
Idempotency
POST /v2/viewcast/assets and POST /v2/viewcast/assets/{asset_id}/measurements both require an Idempotency-Key header. The key lets you safely retry a request after a network failure without creating a duplicate asset or double-charging for a measurement.
- Replaying the same key on
POST /v2/viewcast/assetsreturns the original 2xx result with the sameasset_id. The duplicate-face check (409) is recomputed on every call, so a genuine duplicate is still rejected, but a safe retry returns the cached success. - Replaying the same key on
POST .../measurementsreturns the original 202 result without queuing a second measurement or charging a second purchase.
Verified (MA-99, 2026-08-30): idempotent replay of a create request returned the same asset_id across four create calls using the same key.
Informational-outcome auto-refund
Some measurement results are informational rather than measured. When a draft or final measurement completes with one of these outcomes, the purchase charge is automatically refunded:
no_coverage: the face's viewshed has no traffic coverage in the source data. No measured impressions are available.insufficient_data: the source data for the viewshed is too sparse to produce a reliable measurement.
In both cases the measurement result is delivered (status completed with the informational outcome in the result body), but the purchase credits (150 for draft, 300 for final) are returned to your account. The refund_credits field in the measurement result reflects the refunded amount. The base 1 cr endpoint cost is not refunded.
Failed-state refund
If a measurement enters the failed state (the measurement pipeline could not produce any result, informational or otherwise), the purchase charge is also automatically refunded. The refund_credits field in the failed result reflects the refunded amount. The base 1 cr endpoint cost is not refunded.
The 12-month subscription window and day-366 renewal
When you call GET /v2/viewcast/profiles/{viewshed_id} for a viewshed that your organization does not own but that is public, final_measured, and non-archived, the API charges 300 credits (viewcast_viewshed_purchase_direct) and auto-adds the face to your organization. This starts a 12-month subscription window for that viewshed.
- For the next 12 months,
GET /v2/viewcast/profiles/{viewshed_id}for that viewshed costs only the base 1 cr (owned read). - On day 366, the subscription renews automatically at the same price (300 credits). The renewal charge extends the window for another 12 months.
If you do not want the subscription to renew, archive the asset or remove the face from your organization's inventory before day 366.
Viewsheds that are unknown, private, archived, or not in final_measured state return 404 (never 403) on the profile endpoint. This means the API does not leak the existence of private or archived inventory to unlicensed callers.
Verified (MA-99): the profile endpoint returned 404 for an unknown viewshed_id; entitlements for the canary pay-as-you-go org allowed direct-add.
What to read next
Updated about 3 hours ago
