{
  "openapi": "3.1.0",
  "info": {
    "title": "Cartroute API",
    "version": "2026-09-01",
    "summary": "Unified retail search API for AI agents: offers, landed prices, price history and verified coupons from 12 US retailers in one call.",
    "description": "Cartroute is a unified retail search API for AI agents. One request returns matched offers, landed prices, 90-day price history and verified coupon codes from 12 major US retailers as normalized JSON. Free to start with 200 credits.\n\n**Authentication.** Send `Authorization: Bearer cr_live_...`. Keys are created in the dashboard or with `POST /api/v1/accounts`.\n\n**Credits.** Metered endpoints cost 1 credit per successful call. Validation errors are never charged. New accounts get 100 credits; verifying the email adds 100.\n\n**Errors.** RFC 9457 `application/problem+json` with a stable `code`.\n\n**Retries.** Send an `Idempotency-Key` header; a repeat within 24 hours replays the first response without charging.\n\n**Data.** Every response states `data_source`. This deployment serves the `sandbox` catalog.",
    "contact": {
      "name": "Cartroute support",
      "email": "support@cart-route.com",
      "url": "https://cart-route.com/docs"
    },
    "termsOfService": "https://cart-route.com/legal/terms"
  },
  "servers": [
    {
      "url": "https://cart-route.com/api/v1",
      "description": "Production"
    }
  ],
  "externalDocs": {
    "url": "https://cart-route.com/docs",
    "description": "Guides, examples and the MCP server"
  },
  "security": [
    {
      "bearerAuth": []
    }
  ],
  "tags": [
    {
      "name": "Search",
      "description": "Cross-retailer product search"
    },
    {
      "name": "Catalog",
      "description": "Products, price history and coupons"
    },
    {
      "name": "Reference",
      "description": "Free reference data"
    },
    {
      "name": "Account",
      "description": "Credits, usage and self-registration"
    }
  ],
  "paths": {
    "/search": {
      "get": {
        "tags": [
          "Search"
        ],
        "operationId": "searchProducts",
        "summary": "Search products across every retailer",
        "description": "Returns matched products with every retailer offer, landed price, best coupon and effective price. Natural-language price bounds in `q` (\"under $400\", \"between 200 and 500\") are applied as filters. Costs 1 credit.",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "schema": {
              "type": "string",
              "maxLength": 200
            },
            "description": "Free-text query. Required unless `category` or `brand` is set.",
            "example": "noise cancelling headphones under $400"
          },
          {
            "name": "category",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "Exact category from /categories.",
            "example": "Audio"
          },
          {
            "name": "brand",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "example": "Sony"
          },
          {
            "name": "retailers",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "Comma-separated retailer ids.",
            "example": "amazon,bestbuy,walmart"
          },
          {
            "name": "min_price",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 0
            },
            "description": "Minimum effective price, USD."
          },
          {
            "name": "max_price",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 0
            },
            "description": "Maximum effective price, USD."
          },
          {
            "name": "in_stock",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "include_membership",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": true
            },
            "description": "Include Costco and Sam's Club offers, which need a paid membership."
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "relevance",
                "price_asc",
                "price_desc",
                "savings",
                "rating"
              ],
              "default": "relevance"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 25,
              "default": 10
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "`next_cursor` from the previous page."
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "description": "Search result",
            "headers": {
              "X-Credits-Charged": {
                "$ref": "#/components/headers/XCreditsCharged"
              },
              "X-Credits-Remaining": {
                "$ref": "#/components/headers/XCreditsRemaining"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResult"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "429": {
            "$ref": "#/components/responses/Problem"
          }
        }
      },
      "post": {
        "tags": [
          "Search"
        ],
        "operationId": "searchProductsPost",
        "summary": "Search products (JSON body)",
        "description": "Same as GET /search with the parameters in a JSON body. `retailers` may be an array.",
        "parameters": [
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Search result",
            "headers": {
              "X-Credits-Charged": {
                "$ref": "#/components/headers/XCreditsCharged"
              },
              "X-Credits-Remaining": {
                "$ref": "#/components/headers/XCreditsRemaining"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResult"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "429": {
            "$ref": "#/components/responses/Problem"
          }
        }
      }
    },
    "/products/{id}": {
      "get": {
        "tags": [
          "Catalog"
        ],
        "operationId": "getProduct",
        "summary": "Get one product with all offers and specs",
        "description": "Costs 1 credit.",
        "parameters": [
          {
            "$ref": "#/components/parameters/ProductId"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "description": "Product",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "object": {
                      "const": "product"
                    },
                    "product": {
                      "$ref": "#/components/schemas/Product"
                    },
                    "credits": {
                      "$ref": "#/components/schemas/Credits"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          }
        }
      }
    },
    "/products/{id}/price-history": {
      "get": {
        "tags": [
          "Catalog"
        ],
        "operationId": "getPriceHistory",
        "summary": "Daily price history for one product",
        "description": "Costs 1 credit.",
        "parameters": [
          {
            "$ref": "#/components/parameters/ProductId"
          },
          {
            "name": "days",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 7,
              "maximum": 180,
              "default": 90
            }
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "description": "Price history",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "history": {
                      "$ref": "#/components/schemas/PriceHistory"
                    },
                    "credits": {
                      "$ref": "#/components/schemas/Credits"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          }
        }
      }
    },
    "/coupons": {
      "get": {
        "tags": [
          "Catalog"
        ],
        "operationId": "findCoupons",
        "summary": "Find active coupons and promotions",
        "description": "Costs 1 credit.",
        "parameters": [
          {
            "name": "retailer",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "example": "target"
          },
          {
            "name": "category",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "example": "Kitchen"
          },
          {
            "name": "product",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "Product id, slug, GTIN or MPN."
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 50
            }
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "description": "Coupons",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "count": {
                      "type": "integer"
                    },
                    "coupons": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Coupon"
                      }
                    },
                    "credits": {
                      "$ref": "#/components/schemas/Credits"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          }
        }
      }
    },
    "/retailers": {
      "get": {
        "tags": [
          "Reference"
        ],
        "operationId": "listRetailers",
        "summary": "List covered retailers (free)",
        "security": [],
        "responses": {
          "200": {
            "description": "Retailers",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "retailers": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Retailer"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/categories": {
      "get": {
        "tags": [
          "Reference"
        ],
        "operationId": "listCategories",
        "summary": "List categories and brands (free)",
        "security": [],
        "responses": {
          "200": {
            "description": "Categories",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/account": {
      "get": {
        "tags": [
          "Account"
        ],
        "operationId": "getAccount",
        "summary": "Balance and key details (free)",
        "responses": {
          "200": {
            "description": "Account",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Account"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          }
        }
      }
    },
    "/usage": {
      "get": {
        "tags": [
          "Account"
        ],
        "operationId": "getUsage",
        "summary": "Credit ledger (free)",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 200,
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Ledger",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          }
        }
      }
    },
    "/accounts": {
      "post": {
        "tags": [
          "Account"
        ],
        "operationId": "createAccount",
        "summary": "Create an account and API key",
        "description": "Lets an agent register on behalf of a person. Returns an API key with 100 credits. A verification email goes to the address; when the person clicks it the account gets 100 more. Limited to 5 per IP per hour.",
        "security": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateAccount"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "api_key": {
                      "type": "string"
                    },
                    "credits_remaining": {
                      "type": "integer"
                    },
                    "next_step": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "429": {
            "$ref": "#/components/responses/Problem"
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "cr_live_*",
        "description": "API key from the dashboard."
      }
    },
    "parameters": {
      "ProductId": {
        "name": "id",
        "in": "path",
        "required": true,
        "schema": {
          "type": "string"
        },
        "description": "Product id (prd_...), slug, GTIN or MPN.",
        "example": "sony-wh-1000xm6"
      },
      "IdempotencyKey": {
        "name": "Idempotency-Key",
        "in": "header",
        "required": false,
        "schema": {
          "type": "string",
          "maxLength": 200
        },
        "description": "Replays the first response for 24h without charging again."
      }
    },
    "headers": {
      "XCreditsCharged": {
        "description": "Credits charged for this call.",
        "schema": {
          "type": "integer"
        }
      },
      "XCreditsRemaining": {
        "description": "Balance after this call.",
        "schema": {
          "type": "integer"
        }
      },
      "RateLimitLimit": {
        "description": "Requests allowed per window.",
        "schema": {
          "type": "integer"
        }
      },
      "RateLimitRemaining": {
        "description": "Requests left in the window.",
        "schema": {
          "type": "integer"
        }
      },
      "RateLimitReset": {
        "description": "Seconds until the window resets.",
        "schema": {
          "type": "integer"
        }
      }
    },
    "responses": {
      "Problem": {
        "description": "Error (RFC 9457)",
        "content": {
          "application/problem+json": {
            "schema": {
              "$ref": "#/components/schemas/Problem"
            }
          }
        }
      }
    },
    "schemas": {
      "Problem": {
        "type": "object",
        "required": [
          "type",
          "title",
          "status",
          "code"
        ],
        "properties": {
          "type": {
            "type": "string",
            "format": "uri"
          },
          "title": {
            "type": "string"
          },
          "status": {
            "type": "integer"
          },
          "detail": {
            "type": "string"
          },
          "code": {
            "type": "string",
            "enum": [
              "unauthorized",
              "forbidden",
              "insufficient_credits",
              "not_found",
              "validation_error",
              "rate_limited",
              "method_not_allowed",
              "account_suspended",
              "internal_error"
            ]
          },
          "request_id": {
            "type": "string"
          },
          "param": {
            "type": "string",
            "description": "Offending parameter, for validation errors."
          },
          "credits_remaining": {
            "type": "integer"
          },
          "top_up_url": {
            "type": "string",
            "format": "uri"
          },
          "retry_after_seconds": {
            "type": "integer"
          }
        }
      },
      "Credits": {
        "type": "object",
        "properties": {
          "charged": {
            "type": "integer"
          },
          "remaining": {
            "type": "integer"
          }
        }
      },
      "SearchRequest": {
        "type": "object",
        "properties": {
          "q": {
            "type": "string",
            "maxLength": 200
          },
          "category": {
            "type": "string"
          },
          "brand": {
            "type": "string"
          },
          "retailers": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "min_price": {
            "type": "number",
            "minimum": 0
          },
          "max_price": {
            "type": "number",
            "minimum": 0
          },
          "in_stock": {
            "type": "boolean"
          },
          "include_membership": {
            "type": "boolean"
          },
          "sort": {
            "type": "string",
            "enum": [
              "relevance",
              "price_asc",
              "price_desc",
              "savings",
              "rating"
            ]
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 25
          },
          "cursor": {
            "type": "string"
          }
        }
      },
      "SearchResult": {
        "type": "object",
        "properties": {
          "object": {
            "const": "search_result"
          },
          "api_version": {
            "type": "string"
          },
          "data_source": {
            "type": "string",
            "enum": [
              "live",
              "sandbox"
            ]
          },
          "request_id": {
            "type": "string"
          },
          "query": {
            "type": "string"
          },
          "interpreted": {
            "type": "object",
            "description": "How the query was understood: keywords and extracted price bounds."
          },
          "total_results": {
            "type": "integer"
          },
          "returned": {
            "type": "integer"
          },
          "next_cursor": {
            "type": [
              "string",
              "null"
            ]
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Product"
            }
          },
          "credits": {
            "$ref": "#/components/schemas/Credits"
          }
        }
      },
      "Product": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "prd_0a1b2c3"
          },
          "slug": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "brand": {
            "type": "string"
          },
          "category": {
            "type": "string"
          },
          "identifiers": {
            "type": "object",
            "properties": {
              "gtin": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "mpn": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "model": {
                "type": [
                  "string",
                  "null"
                ]
              }
            }
          },
          "rating": {
            "type": [
              "number",
              "null"
            ]
          },
          "review_count": {
            "type": [
              "integer",
              "null"
            ]
          },
          "summary": {
            "type": "string"
          },
          "specs": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "url": {
            "type": "string",
            "format": "uri"
          },
          "price_summary": {
            "type": "object",
            "properties": {
              "best_offer_id": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "best_retailer": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "best_effective_price_usd": {
                "type": [
                  "number",
                  "null"
                ],
                "description": "Lowest effective price among in-stock offers. In USD."
              },
              "lowest_price_usd": {
                "type": [
                  "number",
                  "null"
                ],
                "description": "Lowest listed price. In USD."
              },
              "highest_price_usd": {
                "type": [
                  "number",
                  "null"
                ],
                "description": "Highest listed price. In USD."
              },
              "spread_usd": {
                "type": [
                  "number",
                  "null"
                ],
                "description": "Highest minus lowest listed price. In USD."
              },
              "offers_count": {
                "type": "integer"
              },
              "in_stock_count": {
                "type": "integer"
              },
              "coupons_count": {
                "type": "integer"
              }
            }
          },
          "price_insight": {
            "type": "object",
            "properties": {
              "verdict": {
                "type": "string",
                "enum": [
                  "good_time_to_buy",
                  "typical_price",
                  "above_recent_average",
                  "insufficient_history"
                ]
              },
              "reason": {
                "type": "string"
              },
              "low_90d_usd": {
                "type": [
                  "number",
                  "null"
                ],
                "description": "90-day low. In USD."
              },
              "avg_30d_usd": {
                "type": [
                  "number",
                  "null"
                ],
                "description": "30-day average of the daily low. In USD."
              },
              "is_at_90d_low": {
                "type": "boolean"
              }
            }
          },
          "offers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Offer"
            }
          }
        }
      },
      "Offer": {
        "type": "object",
        "properties": {
          "offer_id": {
            "type": "string"
          },
          "retailer": {
            "$ref": "#/components/schemas/RetailerRef"
          },
          "sku": {
            "type": "string"
          },
          "condition": {
            "type": "string",
            "enum": [
              "new",
              "open_box"
            ]
          },
          "price_usd": {
            "type": [
              "number",
              "null"
            ],
            "description": "Listed price. In USD."
          },
          "list_price_usd": {
            "type": [
              "number",
              "null"
            ],
            "description": "Manufacturer list price. In USD."
          },
          "shipping_usd": {
            "type": [
              "number",
              "null"
            ],
            "description": "Standard shipping. In USD."
          },
          "landed_price_usd": {
            "type": [
              "number",
              "null"
            ],
            "description": "Price plus shipping, before tax. In USD."
          },
          "best_coupon": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/Coupon"
              },
              {
                "type": "null"
              }
            ]
          },
          "effective_price_usd": {
            "type": [
              "number",
              "null"
            ],
            "description": "Landed price minus the best coupon that needs no special eligibility. In USD."
          },
          "coupons": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Coupon"
            }
          },
          "availability": {
            "type": "object",
            "properties": {
              "in_stock": {
                "type": "boolean"
              },
              "stock_level": {
                "type": "string",
                "enum": [
                  "in_stock",
                  "low_stock",
                  "out_of_stock",
                  "preorder"
                ]
              },
              "delivery_days_min": {
                "type": [
                  "integer",
                  "null"
                ]
              },
              "delivery_days_max": {
                "type": [
                  "integer",
                  "null"
                ]
              },
              "store_pickup": {
                "type": "boolean"
              }
            }
          },
          "retailer_url": {
            "type": "string",
            "format": "uri"
          },
          "buy_url": {
            "type": "string",
            "format": "uri",
            "description": "Tracked redirect to the retailer."
          },
          "last_checked_at": {
            "type": "string",
            "format": "date-time"
          },
          "freshness_seconds": {
            "type": "integer"
          }
        }
      },
      "Coupon": {
        "type": "object",
        "properties": {
          "coupon_id": {
            "type": "string"
          },
          "retailer_id": {
            "type": "string"
          },
          "code": {
            "type": [
              "string",
              "null"
            ],
            "description": "Null when the promotion applies automatically."
          },
          "requires_code": {
            "type": "boolean"
          },
          "kind": {
            "type": "string",
            "enum": [
              "percent",
              "amount",
              "shipping",
              "gift_card"
            ]
          },
          "value": {
            "type": "number"
          },
          "value_unit": {
            "type": "string",
            "enum": [
              "percent",
              "usd"
            ]
          },
          "title": {
            "type": "string"
          },
          "terms": {
            "type": "string"
          },
          "min_spend_usd": {
            "type": [
              "number",
              "null"
            ],
            "description": "Minimum spend. In USD."
          },
          "applies_to": {
            "type": "string"
          },
          "stacks_with_sale": {
            "type": "boolean"
          },
          "requires_eligibility": {
            "type": "boolean",
            "description": "Student or similar; never assumed in effective price."
          },
          "estimated_savings_usd": {
            "type": [
              "number",
              "null"
            ],
            "description": "Savings on this offer. In USD."
          },
          "success_rate": {
            "type": "number",
            "minimum": 0,
            "maximum": 1
          },
          "sample_size": {
            "type": "integer"
          },
          "last_verified_at": {
            "type": "string",
            "format": "date-time"
          },
          "expires_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "source": {
            "type": "string"
          }
        }
      },
      "RetailerRef": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "domain": {
            "type": "string"
          },
          "membership_required": {
            "type": "boolean"
          },
          "returns_window_days": {
            "type": "integer"
          }
        }
      },
      "Retailer": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "domain": {
            "type": "string"
          },
          "membership_required": {
            "type": "boolean"
          },
          "free_shipping_over_usd": {
            "type": [
              "number",
              "null"
            ]
          },
          "returns_window_days": {
            "type": "integer"
          },
          "refresh_interval_seconds": {
            "type": "integer"
          },
          "coverage_note": {
            "type": "string"
          }
        }
      },
      "PriceHistory": {
        "type": "object",
        "properties": {
          "product_id": {
            "type": "string"
          },
          "days": {
            "type": "integer"
          },
          "lowest_by_day": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "date": {
                  "type": "string",
                  "format": "date"
                },
                "price_usd": {
                  "type": "number"
                }
              }
            }
          },
          "by_retailer": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "retailer_id": {
                  "type": "string"
                },
                "points": {
                  "type": "array",
                  "items": {
                    "type": "object"
                  }
                }
              }
            }
          }
        }
      },
      "Account": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "email_verified": {
            "type": "boolean"
          },
          "credits_remaining": {
            "type": "integer"
          },
          "low_balance": {
            "type": "boolean"
          },
          "verification_bonus_available": {
            "type": "integer"
          }
        }
      },
      "CreateAccount": {
        "type": "object",
        "required": [
          "email",
          "full_name",
          "password",
          "accept_terms"
        ],
        "properties": {
          "email": {
            "type": "string",
            "format": "email"
          },
          "full_name": {
            "type": "string",
            "minLength": 2
          },
          "password": {
            "type": "string",
            "minLength": 10,
            "description": "At least one letter and one number."
          },
          "company": {
            "type": "string"
          },
          "use_case": {
            "type": "string"
          },
          "agent_framework": {
            "type": "string",
            "enum": [
              "mcp",
              "openai-agents",
              "langchain",
              "llamaindex",
              "crewai",
              "n8n",
              "custom",
              "none"
            ]
          },
          "key_name": {
            "type": "string"
          },
          "accept_terms": {
            "type": "boolean",
            "const": true,
            "description": "Must be true: the person the account is for has agreed to the Terms of Service."
          }
        }
      }
    }
  }
}