## §OIP SYSTEM ARTICLE — ArcAds (7 operations)
A generated article for one OIP shelf. It lists every operation in this API/CLI/MCP/device/model/core subsystem, links each leaf article, and gives the ledger path for proof.

### Read Order
- scan operations
- open a leaf doc
- run via run_now or POST /api/dispatch
- open receipt
- repair/replay if needed

### Operations
- **ARCADS_GENERATE** — Generate an ad image via ArcAds, poll to completion, store to R2, return a stable link
  when: you need to arcads generate
  args: model|prompt|aspectRatio|referenceImages|productId|enhance
  doc: https://miscsubjects.com/api/dispatch?key=ARCADS_GENERATE&format=markdown
  run: https://miscsubjects.com/api/dispatch?invoke=ARCADS_GENERATE&body=%3Cmodel%3E%7C%3Cprompt%3E%7C%3CaspectRatio%3E%7C%3CreferenceImages%3E%7C%3CproductId%3E%7C%3Cenhance%3E&share=<TOKEN>
  history: https://miscsubjects.com/api/invocations?object_id=ARCADS_GENERATE
- **ARCADS_VIDEO_GENERATE** — Generate a video via ArcAds, poll, store to R2, return a stable link
  when: you need to arcads video generate
  args: model|prompt|aspectRatio|referenceImages|duration|productId
  doc: https://miscsubjects.com/api/dispatch?key=ARCADS_VIDEO_GENERATE&format=markdown
  run: https://miscsubjects.com/api/dispatch?invoke=ARCADS_VIDEO_GENERATE&body=%3Cmodel%3E%7C%3Cprompt%3E%7C%3CaspectRatio%3E%7C%3CreferenceImages%3E%7C%3Cduration%3E%7C%3CproductId%3E&share=<TOKEN>
  history: https://miscsubjects.com/api/invocations?object_id=ARCADS_VIDEO_GENERATE
- **ARCADS_UPLOAD** — Upload a file to ArcAds (presign + S3 PUT). Returns {filePath,fileId}; pass filePath in referenceImages. fileT
  when: you need to arcads upload
  args: source_url|file_type
  doc: https://miscsubjects.com/api/dispatch?key=ARCADS_UPLOAD&format=markdown
  run: https://miscsubjects.com/api/dispatch?invoke=ARCADS_UPLOAD&body=%3Csource_url%3E%7C%3Cfile_type%3E&share=<TOKEN>
  history: https://miscsubjects.com/api/invocations?object_id=ARCADS_UPLOAD
- **ARCADS_CREDITS** — ArcAds credit usage this month. Returns {month,used,cap,remaining}. Cap from settings.arcads_monthly_credits (
  when: you need to arcads credits
  args: none
  doc: https://miscsubjects.com/api/dispatch?key=ARCADS_CREDITS&format=markdown
  run: https://miscsubjects.com/api/dispatch?invoke=ARCADS_CREDITS&share=<TOKEN>
  history: https://miscsubjects.com/api/invocations?object_id=ARCADS_CREDITS
- **ARCADS** — 
  doc: https://miscsubjects.com/api/dispatch?key=ARCADS&format=markdown
  run: https://miscsubjects.com/api/dispatch?invoke=ARCADS&body=%3Cyour%20request%20in%20plain%20words%3E&share=<TOKEN>
  history: https://miscsubjects.com/api/invocations?object_id=ARCADS
- **ARCADS_ROUTES** — ArcAds HTTP unified entrypoint
  when: direct ArcAds REST ops (presigned uploads, products, assets, situations, fields)
  args: $1=op, $2..$N=positional args
  doc: https://miscsubjects.com/api/dispatch?key=ARCADS_ROUTES&format=markdown
  run: https://miscsubjects.com/api/dispatch?invoke=ARCADS_ROUTES&body=products&share=<TOKEN>
  history: https://miscsubjects.com/api/invocations?object_id=ARCADS_ROUTES
- **ARCADS_TO_R2** — Poll a finished ArcAds render by arcads_id and re-store its bytes to R2, returning a stable https://miscsubjec
  when: after ARCADS_GENERATE / ARCADS_VIDEO_GENERATE returns an arcads_id, to get the durable asset link for the sheet / a text / an ad.
  args: $1 = arcads_id, $2 = model label (optional, for the filename).
  doc: https://miscsubjects.com/api/dispatch?key=ARCADS_TO_R2&format=markdown
  run: https://miscsubjects.com/api/dispatch?invoke=ARCADS_TO_R2&body=9a14205f-3683-4231-abc4-bf6228017c0a%7Cgpt-image&share=<TOKEN>
  history: https://miscsubjects.com/api/invocations?object_id=ARCADS_TO_R2

### Troubleshooting
- If a row's example has placeholders, replace only the placeholder values and preserve separators.
- If a call fails, open its receipt and repair it with POST /api/dispatch {key, body, repairs:'inv_ID'}.
- If token scope denies this system, ask the owner for a row:/rows:/pfx: token scoped to the exact operation set.

Back to the tree: https://miscsubjects.com/api/dispatch?map=1&format=markdown