Skip to content

Docs / Agent API

Agent API

Everything Flypify does, callable by your AI agent: find winning products, the ads already selling them and where to source them, then build the store, connect a domain and set up the ad campaign. 76 capabilities over REST or MCP, with one API key.

capabilities
76
capabilities
that build or edit
32
that build or edit
protocols: REST, MCP
2
protocols: REST, MCP

Quickstart

Create a key in your account under AI agent access, then send it as Authorization: Bearer flypify_live_… (or X-Flypify-Key). The base URL is https://api.flypify.com/api/v1.

quickstart.sh
# Who am I, what can my plan call?
curl https://api.flypify.com/api/v1/me \
  -H "Authorization: Bearer $FLYPIFY_KEY"

# Ranked winning products in a category
curl "https://api.flypify.com/api/v1/products/discover?category=Health&sort=Rising&limit=10" \
  -H "Authorization: Bearer $FLYPIFY_KEY"

# AliExpress candidates for a product
curl "https://api.flypify.com/api/v1/suppliers/match?title=posture+corrector" \
  -H "Authorization: Bearer $FLYPIFY_KEY"

# The winning ads in a niche
curl "https://api.flypify.com/api/v1/ads/search?niche=Health&limit=10" \
  -H "Authorization: Bearer $FLYPIFY_KEY"

Responses are JSON. GET /api/v1 lists every capability (and, with a key, which ones your plan can call); the full machine-readable contract is openapi.json, which agent frameworks can load as tools directly.

From idea to a selling store

  1. Find. products.discover ranks winners; products.get returns the supplier link, landed cost and forecast.
  2. Verify. ads.search and brands.search show the ads already scaling the product; suppliers.match finds more AliExpress options.
  3. Sell. store_products.push puts it in Shopify as a draft, or whop_store.add_product lists it with checkout.
  4. Brand. storefront.update and storefront.brand set up the store; domains.attach connects your domain.
  5. Advertise. ads.copy and ads.create_creative make the ad, campaigns.create drafts the campaign, launch_preview shows the cost.

Plans, limits and money

  • The Agent API is part of Pro and Shipper. Pro covers discovery and reads (products, ads, brands, suppliers, your stores) and pushing winners to Shopify. Shipper adds everything that builds, edits or advertises: storefronts, pages, domains, Whop products, campaigns, and winning-ad reveals. Free accounts get 402 subscription_required.
  • Daily call limits per account: Pro 2,000, Shipper 20,000 (reset 00:00 UTC). A few capabilities that call AI models or AliExpress have their own daily cap, shown on each one. Your plan’s own budgets still apply underneath, for example product reveals.
  • Calls that charge credits or start ad spend (building a page, launching or resuming a campaign) answer 403 agent_spend_disabled for now: your agent prepares everything, and you press launch in the app. campaigns.launch_preview always shows exactly what a launch would charge.
  • Connecting Shopify, Whop or an ad account is a one-time human click in the app; after that your agent can use them.

Capability reference

Product discovery · 16

Winning products with revenue, margin, saturation and a forecast band, plus trends, TikToks and upsells.

  • GET/products/discover

    Ranked winning products with revenue, margin, saturation and a forecast band. Filter by category, sort by Best/Newest/Profit/LowRisk/Rising.

    query: category?, sort? (Best|Newest|Profit|LowRisk|Rising), interest?, limit?

    products.discoverPro + ShipperUses plan budget
  • GET/products/search

    Search the winners you have already revealed by keyword; locked_count says how many more match.

    query: q, niche?, limit?

    products.searchPro + Shipper
  • POST/products/search/refresh

    Reveal a fresh batch of winners matching a keyword (spends one browse refresh).

    query: q, niche?

    products.search_refreshPro + ShipperUses plan budget
  • GET/products/browse

    The winners you have revealed in a niche, plus how many more are locked.

    query: niche?

    products.browsePro + Shipper
  • GET/products/daily

    Today's hand-ranked daily picks.

    query: niche?, sort?, interest?

    products.dailyPro + Shipper
  • GET/products/niches

    List the product categories (niches).

    No inputs

    products.nichesPro + Shipper
  • GET/products/{opp_id}

    Full detail for one winner: its supplier link(s), landed cost, margin, forecast.

    path: opp_id

    products.getPro + Shipper500/day
  • POST/products/claim

    Claim a winner into your current store's pipeline.

    body: {opportunity_id}

    products.claimPro + Shipper
  • GET/products/resolve

    Resolve a supplier URL (e.g. an AliExpress listing) to the Flypify winner it sources.

    query: url

    products.resolve_supplier_urlPro + Shipper
  • GET/products/similar

    Winners similar to a given product.

    query: q, limit?

    products.similarPro + Shipper
  • GET/products/evidence

    Market evidence for a product: sales signals and sources behind its score.

    query: q, niche?, limit?

    products.evidencePro + Shipper
  • GET/products/from-url

    Resolve a product URL (TikTok Shop, AliExpress, store page) to a Flypify winner.

    query: url

    products.from_urlPro + Shipper
  • GET/products/upsells

    Suggested upsell and bundle products for a winner.

    query: title, interest?

    products.upsellsPro + Shipper
  • GET/products/tiktoks

    Top winners that have a winning TikTok (reveal the video with products.reveal_video).

    query: limit?

    products.tiktoksPro + Shipper
  • POST/products/{opp_id}/winning-ad

    Reveal the top-performing TikTok ad for a winner (spends one video reveal).

    path: opp_id

    products.reveal_videoShipperUses plan budget
  • GET/products/trends

    Rising search and social trend keywords.

    query: niche?

    products.trendsPro + Shipper

Winning ads and brands · 6

Search scaling Meta and TikTok ads, reveal their links, and study the brands behind them.

  • GET/ads/search

    Search the winning-ads library (Meta + TikTok) by niche, format and sort.

    query: niche, sort?, limit?, sources?, surface?

    ads.searchPro + Shipper
  • POST/ads/{ad_key}/reveal

    Reveal one ad's links: the ad, its landing page and the advertiser.

    path: ad_key

    ads.revealPro + ShipperUses plan budget
  • GET/ads/formats

    The ad formats (hook styles) the library classifies.

    query: niche?

    ads.formatsPro + Shipper
  • GET/ads/niches

    The niches the ad library covers.

    No inputs

    ads.nichesPro + Shipper
  • GET/brands

    Brands running winning ads, with their stores and ad counts.

    query: q?, niche?, sort?, page?, limit?, range?, shopify?, monthly_visits_min?

    brands.searchPro + Shipper
  • GET/brands/{brand_key}

    One brand: its store, products and live ads.

    path: brand_key

    brands.getPro + Shipper

Supplier links · 3

Ranked AliExpress candidates with price, orders and rating for any product. products.get returns a winner's own supplier link.

  • GET/suppliers/match

    AliExpress candidate listings for a product title, ranked (keyword matches, not verified).

    query: title, niche?, brand?

    suppliers.matchPro + Shipper300/day
  • GET/suppliers/aliexpress/match

    The best AliExpress candidate for a product title (keyword match, not verified).

    query: title, niche?, brand?

    suppliers.aliexpress_matchPro + Shipper300/day

Stores and products · 16

Create and switch stores, push and publish products to Shopify, read sales.

  • GET/stores

    Your stores and which one is current.

    No inputs

    stores.listPro + Shipper
  • POST/stores

    Create a store (name, niche). Connecting Shopify still needs one human click.

    body: {name, niche}

    stores.createShipper
  • GET/stores/current

    Your current store.

    No inputs

    stores.currentPro + Shipper
  • POST/stores/select

    Switch the current store.

    body: {store_id}

    stores.selectShipper
  • GET/stores/shopify/products

    The products live in your connected Shopify store.

    query: search?, cursor?, limit?

    stores.shopify_productsPro + Shipper
  • GET/stores/shopify/products/{product_id}

    One Shopify product.

    path: product_id (numeric)

    stores.shopify_productPro + Shipper
  • GET/stores/insights

    Store insights: traffic and conversion.

    No inputs

    stores.insightsPro + ShipperEarly access
  • GET/stores/sales

    Store sales over time.

    query: range?

    stores.salesPro + ShipperEarly access
  • GET/themes

    Store themes you can install.

    No inputs

    themes.listPro + Shipper
  • GET/store-products

    Products you have saved in Flypify (drafts and published).

    No inputs

    store_products.listPro + Shipper
  • GET/store-products/drafts

    Your draft products.

    No inputs

    store_products.draftsPro + Shipper
  • GET/store-products/published

    Your published products.

    No inputs

    store_products.publishedPro + Shipper
  • POST/store-products/draft

    Save a winner as a draft product with your title, price and copy.

    body: {opportunity_id, title, price, description?}

    store_products.draftShipper
  • POST/store-products/push

    Push a winner to your Shopify store as a draft product.

    body: {opportunity_id, title, price, description?}

    store_products.pushPro + Shipper
  • POST/store-products/publish

    Publish a product live in your Shopify store.

    body: {product_id}

    store_products.publishShipper
  • POST/store-products/archive

    Archive a product.

    body: {product_id}

    store_products.archiveShipper

Storefront, pages and domains · 19

Create and edit a hosted store, its brand and landing pages, list products on Whop, attach a custom domain.

  • GET/storefront

    Your Flypify storefront: brand, products, slug.

    No inputs

    storefront.getShipper
  • PUT/storefront

    Create or edit your storefront.

    body: {name, slug?, tagline?, support_email?, shipping_note?, returns_note?}

    storefront.updateShipper
  • PUT/storefront/brand

    Edit the storefront brand: name, colours, logo, tagline.

    body: {auto: true} or {palette, fonts}

    storefront.brandShipper
  • PUT/storefront/products/{row_id}

    Edit one storefront product: title, price, copy, images.

    path: row_id; body: {listed: bool}

    storefront.productShipper
  • GET/pages/{row_id}

    A product's landing page.

    path: row_id

    pages.getShipperEarly access
  • PUT/pages/{row_id}

    Edit a product landing page.

    path: row_id; body: {version, sections: [...]}

    pages.updateShipperEarly access
  • PUT/pages/{row_id}/bundles

    Set a landing page's bundle offers.

    path: row_id; body: {prices: {1, 2, 3}}

    pages.bundlesShipperEarly access
  • POST/pages/{row_id}/build

    Generate a full product landing page (copy + images, about 80 credits).

    path: row_id

    pages.buildShipperCreditsApp only for nowEarly access
  • POST/pages/{row_id}/sections/{kind}/regenerate

    Rewrite one landing-page section.

    path: row_id, kind

    pages.regenerate_sectionShipper60/dayEarly access
  • POST/pages/{row_id}/images/{slot}/regenerate

    Regenerate one landing-page image.

    path: row_id, slot; body: {note?}

    pages.regenerate_imageShipperCreditsApp only for nowEarly access
  • GET/whop-store/status

    Whether your Whop store is connected and ready.

    No inputs

    whop_store.statusPro + Shipper
  • GET/whop-store/draft

    The draft Whop store Flypify prepared for you.

    query: opportunity_id

    whop_store.draftShipper
  • GET/whop-store/products

    Products listed in your Whop store.

    No inputs

    whop_store.productsShipper
  • POST/whop-store/products

    List a winner as a real Whop product with checkout. build_page=true also builds its page (credits).

    body: {opportunity_id, price, stock?, text?, image_urls?, build_page?}

    whop_store.add_productShipper
  • GET/whop-store/products/{row_id}

    One Whop store product.

    path: row_id

    whop_store.productShipper
  • GET/whop-store/site

    Your store website.

    No inputs

    whop_store.siteShipperEarly access
  • POST/whop-store/site

    Create or edit your store website.

    no body: creates or adopts your Whop website

    whop_store.update_siteShipperEarly access
  • POST/domains/check

    Check a custom domain's DNS for your store.

    no body: verifies the attached domain's DNS

    domains.checkShipperEarly access
  • POST/domains

    Attach a custom domain you own to your store.

    body: {hostname}

    domains.attachShipperEarly access

Ads and campaigns · 16

Ad copy, creatives, reach estimates, campaign drafts, launch, pause and results.

  • GET/campaigns/status

    Whether your ad account is connected and ready to launch.

    No inputs

    campaigns.statusPro + Shipper
  • GET/campaigns/setup

    Setup checklist: ad account, page, pixel, payment.

    No inputs

    campaigns.setupShipper
  • POST/campaigns/pixel-check

    Check your store's Meta pixel is firing.

    body: {url} (https)

    campaigns.pixel_checkShipper
  • POST/campaigns/branding

    Set the ad account's brand name and logo.

    multipart: logo?, banner?, description?

    campaigns.brandingShipper
  • POST/ads/copy

    Draft ad copy (headlines, primary text) for a product.

    body: {product_title?, destination_url?}

    ads.copyShipper50/day
  • POST/ads/creatives

    Upload a finished ad video (MP4/MOV) as a creative for campaigns.

    body: {render_id}

    ads.create_creativeShipper
  • GET/ads/creatives/{render_id}

    Poll a creative upload until it is ready.

    path: render_id

    ads.get_creativeShipper
  • POST/campaigns/reach

    Estimate audience reach for a budget and targeting.

    body: {countries, age_min?, age_max?, gender?}

    campaigns.reachShipper
  • POST/campaigns

    Create a campaign draft (product, creative, budget, targeting). Nothing spends until launch.

    body: {client_request_id, render_id, file_id, title, goal, copy, cta, url, budget, schedule, audience, social accounts}

    campaigns.createShipper
  • GET/campaigns

    Your campaigns with status and results.

    query: range?, after?

    campaigns.listShipper
  • GET/campaigns/{campaign_id}

    One campaign: status, spend, results.

    path: campaign_id; query: range?

    campaigns.getShipper
  • GET/campaigns/{campaign_id}/launch-preview

    Exactly what launching will charge and publish, plus the preview token launch needs.

    path: campaign_id; query: action? (launch|resume)

    campaigns.launch_previewShipper
  • POST/campaigns/{campaign_id}/launch

    Launch the campaign: it goes live and spends your ad budget.

    path: campaign_id; body: {confirm_token (from launch_preview), acknowledged: true}

    campaigns.launchShipperSpends ad budgetApp only for now
  • POST/campaigns/{campaign_id}/pause

    Pause a live campaign.

    path: campaign_id

    campaigns.pauseShipper
  • POST/campaigns/{campaign_id}/resume

    Resume a paused campaign (it spends again).

    path: campaign_id; body: {confirm_token, acknowledged: true}

    campaigns.resumeShipperSpends ad budgetApp only for now
  • DELETE/campaigns/{campaign_id}

    Delete a campaign draft.

    path: campaign_id (drafts only)

    campaigns.deleteShipper

Use it over MCP

The same capabilities are MCP tools at https://api.flypify.com/mcp/ (streamable HTTP, keep the trailing slash). Paste this into your MCP client and replace the key:

flypify.mcp.json
{
  "mcpServers": {
    "flypify": {
      "url": "https://api.flypify.com/mcp/",
      "headers": {
        "Authorization": "Bearer flypify_live_YOUR_API_KEY"
      }
    }
  }
}

Typed tools cover the most common steps; flypify_capabilities lists everything and flypify_call runs any capability by name.

  • find_winners

    Search proven winning products by niche, price and trend.

  • get_winner

    Full sourcing detail for one winner: supplier, costs, ads (uses 1 reveal).

  • push_to_shopify

    Add a winner to your Shopify store as a draft product.

  • account_status

    Your plan, Shopify connection and today's reveal budget.

  • list_niches

    The product niches Flypify covers.

  • search_products

    Keyword search over the winners you have revealed.

  • winner_from_url

    Turn a TikTok Shop, AliExpress or store URL into a Flypify winner.

  • search_ads

    Search scaling Meta and TikTok ads in a niche.

  • search_brands

    Brands running winning ads, with their stores and traffic.

  • find_suppliers

    Ranked AliExpress candidates for any product title.

  • search_aliexpress

    AliExpress listings with price, orders and rating.

  • list_campaigns

    Your ad campaigns with status and results.

  • create_campaign

    Create an ad campaign draft. Nothing spends until launch.

  • launch_campaign

    Launch a campaign after showing you its launch preview.

  • attach_domain

    Attach a custom domain you own to your store.

  • flypify_capabilities

    Everything else your agent can do, and what your plan allows.

  • flypify_call

    Run any capability: stores, storefront edits, pages, creatives and more.

Errors

Gateway errors share one shape: {"error": {"code": "…", "message": "…"}}. Errors from a capability itself (for example a price under the margin floor) come back as that capability returns them.

  • 401missing_api_keyNo key on the request.
  • 401invalid_api_keyThe key is unknown or revoked.
  • 402subscription_requiredThe account is not on Pro or Shipper.
  • 403plan_upgrade_requiredA Shipper capability called on Pro.
  • 403agent_spend_disabledThe call charges credits or ad budget, which agents cannot do yet.
  • 404unknown_capabilityNo such route. GET /api/v1 lists them all.
  • 405method_not_allowedThe path exists under another method.
  • 413body_too_largeThe request body is over 16 MB.
  • 422missing_path_paramsA path parameter is empty.
  • 422invalid_path_paramsA path parameter is not one plain segment (no /, \, %, ? or #).
  • 429too_many_in_flightMore than 8 calls running at once on one account.
  • 429rate_limitedDaily limit reached: the account's (Pro 2,000, Shipper 20,000 calls) or one capability's. Resets 00:00 UTC.
  • 502upstream_errorThe capability failed inside Flypify. Safe to retry reads.
  • 503gateway_unboundThe API is restarting. Retry in a few seconds.
  • 503busyThe Agent API is at capacity. Retry in a few seconds.
  • 504upstream_timeoutTook over 120 s. It may still complete: check its status before retrying.

Questions? Contact support. API terms are in the terms.