Skip to main content
Strand AI bills predictions in credits. The credits model is intentionally simple so you can predict cost exactly before submitting a job.

How credits work

The platform tiles each slide into fixed 224×224-pixel patches and runs inference per patch, per marker. One credit pays for one (patch × marker) prediction.
1 credit = 1 patch × 1 marker. Patch size is fixed at 224 px.
For a slide that’s W × H pixels:
patches  = ceil(W / 224) × ceil(H / 224)
credits  = patches × markers_requested
That’s it. There is no separate inference fee, surcharge, or per-job overhead. A 50 000 × 40 000 px H&E with 5 markers is 224 × 179 × 5 = 200 480 credits.

Estimating before you submit

The /predict/estimate endpoint (and its SDK wrappers) compute the exact cost from slide dimensions, with no reservation:
est = client.predict.estimate(upload.id, markers=["CD8", "PanCK", "Ki67"])
print(est.patch_count, est.marker_count, est.estimated_credits)
print("balance:", est.org_balance, "pending:", est.org_pending)

Reservation and refunds

When you call POST /predict, the platform atomically reserves the estimated credits against your org balance. The reservation is recorded on the job (reservedCredits) so:
  • In-flight jobs are price-locked. If we change CREDITS_PER_PATCH_MARKER or PATCH_PX later, jobs already submitted keep their reserved price.
  • Failed jobs refund automatically. If a job terminates with status failed, the reservation is released back to the org balance.
  • Insufficient balance returns 402. The error body carries the required field so you know how much to top up.

Buying credits

Credits are sold in prepaid tiers. Today, top-ups are handled by the team. Email support@strandai.com with the volume you need and we’ll provision them.
Self-serve top-up via Stripe is in progress and will be surfaced under Settings → Billing when it ships.

See also