API The contract the app itself runs on

API reference

Nine endpoints. What each one needs, what it refuses, and which of them can move money.

Gates

Three doors, and only one of them is open

Which endpoints anyone may call, and which ones commit money.

Open

No credentials

Reading campaigns, submitting a clip, checking a submission, previewing whether a link can be handled. A creator needs no account to be paid — the wallet address is the counterparty.

Operator

x-operator-secret

Opening a campaign. This is the one that publishes a budget, so it is gated on a shared secret rather than a session — and it is the reason a brand cannot yet self-serve.

Scheduler

x-tick-secret

Running a pass. Separate from the operator secret on purpose: the scheduler needs to run passes forever and should never hold the ability to open a campaign.

Every write is rate limited per address. A refusal always names its reason and, where a field caused it, that field — so a caller can fix the request rather than guess at it.

Endpoints

All nine

Generated from the OpenAPI document, so this page cannot drift from it.

GET/api/verify/preview

Free. Can this link be handled, and when will a real answer exist?

Costs nothing and returns no counts. Use it to decide whether a paid call is worth making: it reports whether the URL is supported, whether the post is already under observation, and the timestamp at which a surviving-view figure will first be available.

Open · responds 200, 400

POST/api/views

Latest and surviving view counts. No verdict.

Price: 0.005 USDC per call — a tenth of `/api/verify`, because no model runs. A `brief` sent here is not judged; the response says so rather than dropping it silently.

Open · responds 200, 400, 402

POST/api/verify

Verify a clip against a brief and report surviving views

Price: 0.05 USDC per call, settled over x402.

Open · responds 200, 400, 402

GET/api/campaign

Public view of active campaigns and remaining pools

Returns campaign configurations, total pool allocations, remaining funds, dwell requirements, and tick status.

Open · responds 200

POST/api/campaigns

Open a new creator marketing campaign (Operator-gated)

Requires `x-operator-secret` header matching `OPERATOR_SECRET`.

Operator · x-operator-secret · responds 201, 401, 503

POST/api/submissions

Submit a creator clip for a campaign

Public door for creators. Accepts post URL, payout wallet address, and campaignId. Freezes accepted terms.

Open · responds 201, 400

GET/api/submissions/{id}

Check status of a submitted clip

Returns current disposition (auto_pay, held, blocked, no_op), verdict status, confirmed views, and earned USDC.

Open · responds 200, 404

POST/api/tick

Execute one agent tick pass (Cloud Scheduler-gated)

Requires `x-tick-secret` header matching `TICK_SECRET`. Refreshes views, evaluates payout gate, and triggers settlement.

Scheduler · x-tick-secret · responds 200, 401, 503

POST/api/job

Execute an autonomous research job (x402-gated)

Requires x402 payment header `X-PAYMENT`. Agent researches, prices, buys data, and answers.

x402 · payment · responds 200, 402