# Pricing

Price card version: `2026-06-28-m1-cost-model`.

Unit: `1_000_000` micro-credits = `$1.00`.

Detailed source assumptions live in `kb/research/provider-costs.md`.

The initial price card intentionally charges comments, transcripts, comment parsing, and OCR placeholders above raw upstream unit cost. Those paths carry the highest retry, token, transcription, storage/cache, and support risk.

## Pricing Rules

- Reserve credits at the cache-miss price before provider or hosted AI spend.
- Settle at actual successful usage.
- Refund unused reservations and failed upstream calls.
- Fresh cache hits settle at `20%` of the equivalent cache-miss price with a `$0.005` floor when the operation is eligible for cache-hit settlement.
- Stale cache revalidation pays the full operation price when it triggers provider spend.
- Hosted transcription fallback is enabled only when the bounded Achronon/ClaudeVPS endpoint and service token are configured. The client-side default duration cap is `180` seconds.
- OCR/vision is M3 placeholder pricing only and is not enabled in M1 per decision `0009`.

## Customer Price Card

| Item | Customer price | Notes |
| --- | ---: | --- |
| Raw post/carousel read | `$0.015` | Direct public post read, cache miss. |
| Raw reel read | `$0.020` | Direct public reel read, cache miss. |
| Comments up to 20 | `$0.125` | Dedicated comments path, replies may increase cost. |
| Comments up to 100 | `$0.450` | Main default comment batch. |
| Comments up to 500 | `$1.900` | High-cost path; should require explicit limit. |
| Transcript read/extraction | `$0.500` | Provider transcript first; hosted fallback through ClaudeVPS when configured, capped by max duration. |
| Media AI parse | `$0.075` | Post/reel `summary`, `tldr`, or `json`, cache miss. |
| Comment AI parse up to 100 | `$0.150` | Comment analysis mode over up to 100 comments, cache miss. |
| Comment AI parse up to 500 | `$0.450` | High-token comment parse; should sample/truncate deterministically. |
| OCR/vision enrichment | `$0.250` | M3 disabled placeholder; not enabled in M1. |
| Profile read | `$0.020` | Optional M2/M3. |
| Search/discovery | `$0.050` | Optional M2/M3 with low result limit. |

## Cost Formula

For each operation:

```text
cost_basis = upstream_provider_cost
  + hosted_ai_cost
  + hosted_transcription_cost
  + cache_storage_cost
  + retry_and_failure_reserve
  + support_margin_reserve

gross_margin = (customer_price - cost_basis) / customer_price
```

Guardrail: do not enable a public price if modeled gross margin is below `40%` for cache misses at expected p95 cost. Prefer raising price, lowering limits, requiring explicit opt-in, or disabling the mode.

## Cost Basis Snapshot

| Upstream | Observed cost | Source |
| --- | ---: | --- |
| HikerAPI | From `$0.0006 / request` on public page; successful `200`, `403`, and `404` responses are billable, `50x` is not. | https://hikerapi.com/pricing |
| Apify Instagram Scraper | Fallback/specialized provider. From `$1.50 / 1,000 results` on public page; tiers vary. | https://apify.com/apify/instagram-scraper |
| Apify Instagram Comments Scraper | From `$1.90 / 1,000 comments`. | https://apify.com/apify/instagram-comment-scraper |
| Apify Instagram Reel Scraper | Public page shows from `$1.00 / 1,000 reels`. | https://apify.com/apify/instagram-reel-scraper |
| Bright Data Instagram Scraper API | PAYG `$1.5 / 1K record`; free 5K records/month; scale `$1.3 / 1K` additional records. | https://brightdata.com/products/web-scraper/instagram |
| Oxylabs Web Scraper API | General "other" targets around `$1.15 / 1K` without JS and `$1.35 / 1K` with JS on lower tiers. | https://oxylabs.io/products/scraper-api/web-scraper-api |
| Claude Haiku 4.5 | `$1 / MTok` input, `$5 / MTok` output. | https://platform.claude.com/docs/en/about-claude/pricing |
| Claude Sonnet 4.6 | `$3 / MTok` input, `$15 / MTok` output. | https://platform.claude.com/docs/en/about-claude/pricing |
| OpenAI GPT-5.4 mini | `$0.75 / MTok` input, `$4.50 / MTok` output. | https://developers.openai.com/api/docs/pricing |
| ClaudeVPS Codex transcription relay | Model `auto` via `claudex/transcribe`; direct model credentials and runtime are owned by ClaudeVPS, not igskill. | Internal HLM-537 relay contract. |

## Cost Examples

| Operation | Raw upstream estimate | Modeled reserve | Customer price | Margin posture |
| --- | ---: | ---: | ---: | --- |
| Raw post cache miss | `$0.0015` | `$0.004` | `$0.015` | Healthy after retry/cache reserve. |
| Raw reel cache miss, no transcript fallback | `$0.0010-$0.0015` | `$0.005` | `$0.020` | Healthy, keeps room for reel-specific failures. |
| 20 comments | `$0.038` | `$0.057` | `$0.125` | Above guardrail. |
| 100 comments | `$0.190` | `$0.266` | `$0.450` | Tight but acceptable for private MVP. |
| 500 comments | `$0.950` | `$1.140` | `$1.900` | Explicit high-cost path, no free tier. |
| Provider transcript read | Included with reel provider result when present | `$0.005-$0.020` | `$0.500` | High margin offsets transcript uncertainty. |
| Hosted transcript fallback, 3 minute reel | CVPS relay cost not directly exposed to igskill | `$0.050` | `$0.500` | Enable only with duration cap and relay smoke. |
| Media parse | `$0.006-$0.025` for bounded prompt/output | `$0.030` | `$0.075` | Use cheap model by default; cache by content hash. |
| Comment parse up to 100 | `$0.013-$0.040` | `$0.060` | `$0.150` | Avoids underpricing comment token volume. |
| Comment parse up to 500 | `$0.050-$0.150` | `$0.220` | `$0.450` | Requires sampling/truncation guardrails. |
| OCR/vision enrichment | Deferred per `0009` | `$0.100` placeholder | `$0.250` | Disabled in M1 until provider, payload, and abuse controls exist. |

## Cache Model

Cache writes and storage are not expected to dominate provider or AI spend during private MVP. Model them as an operational reserve rather than a separate customer line item:

- Raw provider cache write/read reserve: `$0.001` per cache miss.
- AI parse/transcript cache write/read reserve: `$0.002` per cache miss.
- Fresh cache hit settlement: `20%` of operation price, floor `$0.005`.
- No cache-hit discount for high-cost `500` comment or comment-parse batches until real hit-rate and support costs are known.

Cache keys must include provider id, provider schema version, normalized content hash, parse mode, model, transcript source, prompt version, and requested comment/reply limit where relevant. Reel summaries that include selected comments reserve both media parse and comment parse line items.

## Free Tier

No public free tier is approved yet. A free tier is only acceptable if:

- It is invite-gated.
- It has hard per-key and per-day cost ceilings.
- It excludes high-cost comments, transcription, and parse modes by default.
- It uses cache-only fixtures or a sponsor budget for provider spend.

## Refund Behavior

- Reserve credits before provider spend.
- Settle actual successful usage.
- Refund unused reservations.
- Refund failed upstream calls unless a policy-specific non-refundable paid attempt is explicitly added later.
