← Blog

How to Let ChatGPT Buy Things for You

June 11, 2026 · Victor Young

ChatGPT can find products, compare specs, and write a buying recommendation — but it cannot natively complete a purchase. To let ChatGPT actually buy things on your behalf, you need to connect it to a purchasing backend via GPT Actions. This guide shows you how to do that safely using the Firestarter commerce execution API, including the approval checkpoint that keeps a human in the loop before money moves.

Why ChatGPT Can't Buy Things Out of the Box

ChatGPT's browsing tool fetches pages and reads content. It has no mechanism to authenticate with a payment processor, store a card on file, or generate a shipping label. Even if you gave it a card number in the system prompt (please don't), there's no structured way for it to call a checkout API.

GPT Actions change this. A custom GPT can be configured with an OpenAPI spec, and any POST endpoint in that spec becomes a callable tool. The GPT can collect intent from the user, form a structured request body, call the endpoint, and present the result — all within a conversation.

The missing piece is a purchasing backend designed for this pattern: one that accepts natural-language requests, handles supplier search and checkout internally, and surfaces a human-reviewable approval step before charging anything.

What Firestarter Provides

Firestarter is a commerce execution API built for AI agents. You send a single POST request describing what you want to buy, and the API handles supplier search, price comparison, checkout, payment (via Stripe in escrow), shipping (via EasyPost), and tracking. The full execution lifecycle looks like:

  1. Parse intent — your natural-language request is structured into product requirements
  2. Search suppliers — the Firestarter seller network is queried for matching listings
  3. Score and compare — options are ranked by price, availability, and seller rating
  4. Present options — top matches surface for review
  5. Human approval checkpoint — on by default; nothing is charged until approved
  6. Checkout — payment held in escrow, shipping label generated
  7. Tracking and delivery confirmation
  8. Exception handling — returns, refunds, re-sourcing if delivery fails

The approval step is what makes this safe to connect to a language model. The GPT can run the entire research and comparison flow autonomously, then hand off to you for a single yes/no before any money moves.

See the full API reference and OpenAPI spec for endpoint details.

Setting Up GPT Actions with the Firestarter OpenAPI Spec

Step 1: Get an API key

Sign up at firestarter.network. Free tier includes 100 tokens to start plus a 14-day Pro trial, no credit card required.

Your key will look like fs_live_.... Keep it out of your system prompt — you'll pass it via the Action's authentication settings.

Step 2: Create a Custom GPT

In ChatGPT, go to Explore GPTs → Create. Give your GPT a name and a system prompt that sets its purchasing scope. Example:

You are a purchasing assistant. When the user asks you to buy something, 
use the firestarter_execute action to create an execution. Always show 
the user the returned options and get explicit confirmation before calling 
firestarter_approve. Never approve autonomously.

The last sentence matters. Even though Firestarter has a server-side approval checkpoint, you want the GPT's behavior to also require explicit user confirmation. Defense in depth.

Step 3: Add the Firestarter Action

In the GPT editor, click Add actions and paste the Firestarter OpenAPI spec URL:

https://api.firestarter.network/.well-known/openapi.json

ChatGPT will import the spec and list the available operations. You'll see:

  • POST /v1/executions — create a new purchase execution
  • GET /v1/executions/{id} — poll status
  • POST /v1/executions/{id}/approve — approve and trigger checkout
  • POST /v1/executions/{id}/cancel — cancel an execution
  • POST /v1/executions/{id}/message — send a follow-up message to refine the execution

Step 4: Configure Authentication

Set the authentication type to API Key, header name Authorization, and value Bearer fs_live_YOUR_KEY. This is injected server-side; the GPT never sees your key in the conversation.

The purchase endpoints in the Firestarter spec are marked x-openai-isConsequential: true. This causes ChatGPT to display a confirmation dialog before calling them — a second layer of friction on top of Firestarter's own approval checkpoint.

A Sample Purchase Conversation

Here's what a real interaction looks like once the Action is configured.

User: Find me noise-cancelling headphones under $80 and buy the best option.

GPT → calls POST /v1/executions:

{
  "request": "noise cancelling headphones under $80",
  "budget": {
    "max_total": 80
  }
}

Firestarter response (execution created, status: awaiting_approval):

{
  "id": "exec_01j9x...",
  "status": "awaiting_approval",
  "options": [
    {
      "title": "Anker Soundcore Q20i",
      "price": 35.99,
      "seller_rating": 4.7,
      "estimated_delivery": "2–4 days"
    },
    {
      "title": "Sony ZX310AP",
      "price": 49.95,
      "seller_rating": 4.5,
      "estimated_delivery": "1–3 days"
    }
  ],
  "approval_required": true
}

GPT presents options to user, asks for confirmation.

User: Go with the Anker.

GPT → calls POST /v1/executions/exec_01j9x.../approve (ChatGPT shows its own consequential-action confirmation dialog first).

Firestarter response:

{
  "id": "exec_01j9x...",
  "status": "processing",
  "estimated_delivery": "2026-06-14",
  "tracking_url": "https://track.easypost.com/..."
}

GPT: Your Anker Soundcore Q20i has been ordered. Estimated delivery June 14. Tracking: [link].

Safety Model

Three things prevent runaway spending:

  1. x-openai-isConsequential: true — ChatGPT prompts before calling approve
  2. System prompt instruction — GPT is told never to approve autonomously
  3. Firestarter server-side approval checkpoint — approval is required by default; even if a buggy GPT called approve without user consent, you can still cancel via POST /v1/executions/:id/cancel before checkout completes

Per-execution spend limits are configurable in the API request. Set budget.max_total on every execution, and the API will reject approvals that exceed it — useful if you're building multi-agent pipelines where individual agent spending should be bounded.

Comparing this to Browser Automation

The alternative is a ChatGPT agent that drives a headless browser, logs in to a retailer, and completes checkout. This works for one-off demos but breaks in production: bot detection blocks it, selectors change, and there's no audit trail. The Firestarter approach gives you structured, auditable executions with receipts and tracking numbers attached to every transaction. See browser automation vs commerce API for a longer comparison.

For other integration patterns — including the Claude MCP approach — see /mcp and /scenarios.

FAQ

Does ChatGPT store my payment information?

No. Payment is handled entirely by Firestarter via Stripe. ChatGPT only sees the natural-language request and the structured response from the Firestarter API. Your card details never pass through the GPT context window.

What happens if I want to cancel after approving?

Call POST /v1/executions/:id/cancel. If the order hasn't shipped yet, Firestarter will cancel with the supplier and release the escrow hold. If it has shipped, normal return flow applies.

Can I use this with the regular ChatGPT app or only custom GPTs?

GPT Actions are available in custom GPTs (requires ChatGPT Plus or Team plan from OpenAI). The regular ChatGPT chat interface doesn't support custom Actions, though you can use the Firestarter API directly from any environment that supports HTTP calls.

Is there a spend limit I can set?

Yes. Include "budget": {"max_total": N} in the execution request body. The API will reject any approval attempt that would exceed that amount.

How do I see a full audit trail of purchases?

Every execution has a step-by-step audit trail accessible via GET /v1/executions/:id. Firestarter also stores proof of action — receipts, tracking numbers, delivery confirmations — attached to each execution record. See /use-cases/agent-approval-audit-api for details.