/api/v1/products
Every product on your account, with its price, address and status.
curl https://swipefast.jacob-98c.workers.dev/api/v1/products \
-H "Authorization: Bearer $KEY" {
"data": [
{
"id": "prd_a1b2c3",
"name": "The Launch Playbook",
"slug": "launch-playbook",
"price_cents": 9900,
"currency": "usd",
"pricing_type": "onetime",
"billing_interval": null,
"status": "live"
}
]
} pricing_type is onetime or subscription; subscriptions also carry billing_interval (month or year).
▸ Try it against your account /api/products/{productId}/funnel
The add-ons, upsells and every post-purchase email attached to one product.
productIdstring The product's id, from List your products.
curl https://swipefast.jacob-98c.workers.dev/api/products/PRODUCT_ID/funnel \
-H "Authorization: Bearer $KEY" {
"bumps": [
{
"id": "bmp_1",
"headline": "Add the Swipe File Vault — $27",
"price_cents": 2700,
"active": 1
}
],
"upsells": [
{
"id": "ups_1",
"headline": "Upgrade to the full implementation call",
"price_cents": 20000,
"active": 1
}
],
"downsells": [],
"emails": [
{
"position": 1,
"send_day": 0,
"subject": "You're in — here's your access",
"body": "…"
}
]
} Works with your key or a signed-in dashboard session.
▸ Try it against your account /api/v1/orders
Your latest 100 orders, newest first, each with its line items. Test orders are never included.
curl https://swipefast.jacob-98c.workers.dev/api/v1/orders \
-H "Authorization: Bearer $KEY" {
"data": [
{
"id": "ord_x1y2z3",
"product_id": "prd_a1b2c3",
"customer_email": "buyer@example.com",
"customer_name": "Alex Buyer",
"total_cents": 12600,
"currency": "usd",
"status": "paid",
"utm_source": "newsletter",
"utm_campaign": "july-launch",
"created_at": "2026-07-20T14:03:22.181Z",
"items": [
{
"kind": "main",
"label": "The Launch Playbook",
"amount_cents": 9900
},
{
"kind": "bump",
"label": "Add the Swipe File Vault — $27",
"amount_cents": 2700
}
]
}
]
} status is paid, refunded, or authorized (card held while the buyer decides on an upsell).
items[].kind is main, bump, upsell, or discount (discounts are negative). downsell appears only on orders taken before downsells were retired.
Orders carry the campaign that produced them: utm_source, utm_medium, utm_campaign, utm_term, utm_content.
▸ Try it against your account /api/v1/orders
Create an order from your own code — an external checkout, an import, an automation. It settles immediately.
productSlugstring The product's slug, from List your products.
emailstring The buyer's email.
namestring The buyer's name.
bumpIdsstring[] Ids of add-ons to include.
affiliateCodestring Credit this partner with the sale.
curl -X POST https://swipefast.jacob-98c.workers.dev/api/v1/orders \
-H "Authorization: Bearer $KEY" \
-H "Content-Type: application/json" \
-d '{"productSlug":"launch-playbook","email":"buyer@example.com","name":"Alex Buyer"}' {
"ok": true,
"orderId": "ord_x1y2z3",
"totalCents": 9900
} Fires the order.paid webhook and any matching automations, exactly like a checkout sale.
▸ Try it against your account /api/metrics/{productId}
Revenue, orders, average order, add-on and upsell rates, refunds — plus monthly series for charts.
productIdstring The product's id.
curl https://swipefast.jacob-98c.workers.dev/api/metrics/PRODUCT_ID \
-H "Authorization: Bearer $KEY" {
"product": {
"id": "prd_a1b2c3",
"name": "The Launch Playbook",
"pricingType": "onetime"
},
"summary": {
"revenueCents": 2313900,
"orders": 230,
"aovCents": 100600,
"bumpTakeRate": 21,
"upsellTakeRate": 8,
"activeSubscriptions": 0,
"mrrCents": 0,
"refunds": 3,
"refundedCents": 29900,
"refundRate": 1.3,
"views": 4100,
"conversionRate": 5.6,
"customers": 224
},
"revenueByMonth": [
{
"month": "2026-06",
"value": 412300
}
],
"mrrByMonth": [],
"churnByMonth": []
} mrrByMonth and churnByMonth are filled for subscription products only.
Test orders never count.
▸ Try it against your account /api/cron/daily
Charges subscription renewals that have come due, retries declined cards, nudges checkouts that stalled, and settles payment holds a buyer never finalised. Point a once-a-day schedule at this — nothing else calls it.
curl -X POST https://swipefast.jacob-98c.workers.dev/api/cron/daily \
-H "Authorization: Bearer $KEY" {
"ok": true,
"rebills": {
"charged": 12,
"chargedCents": 58800,
"retried": 1,
"canceled": 0
},
"recovery": {
"sent": 3,
"recovered": 1
},
"holdsSettled": 2
} Safe to run more than once a day — nothing is charged twice and a buyer is only ever nudged once.
▸ Try it against your account