{"format":"madewithstack-lightweight-schema/v1","version":"1","base_url":"https://www.madewithstack.com/api/v1","openapi_url":"https://www.madewithstack.com/api/v1/openapi","llms_url":"https://www.madewithstack.com/llms.txt","docs_url":"https://www.madewithstack.com/docs","polling":{"review_status_template":"https://www.madewithstack.com/api/v1/products/%7Bslug%7D?email={email}","recommended_interval_seconds":300,"guidance":"Poll no more than once every 300 seconds. Respect Retry-After on 429 responses and use longer backoff when review state is unchanged."},"endpoints":{"GET /api/v1/tools":{"description":"List every currently known tool slug, name, category, and description.","response":{"tools":[{"slug":"string","name":"string","category":"string","description":"string | null"}]}},"GET /api/v1/products":{"description":"Browse approved listings with pagination, sorting, and composable filters.","query_params":{"offset":"Number (default 0)","limit":"Number, 1-48 (default 24)","sort":"\"newest\" or \"popular\" (default \"newest\")","category":"Tool category slug to filter by","audience":"\"for-developers\", \"for-founders\", \"b2b\", \"consumer\", or \"all\"","tool":"Tool slug to filter by (for example ?tool=supabase)","is_agent":"\"true\" to return only agent-native products; can be combined with the other filters"},"response":{"products":[{"id":"string","name":"string","slug":"string","description":"string","url":"string","favicon_url":"string | null","founder_name":"string | null","founder_twitter":"string | null","founder_profile_slug":"string | null","launch_date":"string | null","status":"\"approved\"","created_at":"string","approved_at":"string | null","view_count":"number","is_featured":"boolean","featured_rank":"number","screenshot_url":"string | null","submission_tier":"\"free\" | \"paid_fast_track\"","review_priority":"number","audience_tags":["\"for-developers\" | \"for-founders\" | \"b2b\" | \"consumer\""],"badge_verified":"boolean","is_agent_product":"boolean","qualification_type":"\"agent_native\" | \"agent_built\" | \"agentic_workflow\" | null","agent_use_case":"\"support\" | \"research\" | \"operations\" | \"sales\" | \"voice\" | \"browser_automation\" | null","qualification_statement":"string | null","workflow_summary":"string | null","agent_tools_used":"string[]","supporting_links":"string[]","claim_review_status":"\"submitted\" | \"verified\" | \"not_verified\" | \"needs_revision\" | null","claim_reviewed_at":"string | null","claim_review_notes":"string | null","claim_verified_by":"string | null","claim_evidence_summary":"string | null","tools":[{"id":"string","name":"string","slug":"string","description":"string | null","icon_url":"string | null","category":"string","product_count":"number","created_at":"string"}]}],"total":"number","offset":"number","limit":"number","hasMore":"boolean"}},"GET /api/v1/products/:slug":{"description":"Fetch an approved listing by slug or check the status of a pending submission with email verification.","query_params":{"email":"Submitter email (optional). Required to check status of pending submissions."},"polling_guidance":{"recommended_interval_seconds":300,"strategy":"Respect Retry-After on 429 responses and back off when state is unchanged."},"response_approved":{"product":{"id":"string","name":"string","slug":"string","description":"string","url":"string","favicon_url":"string | null","founder_name":"string | null","founder_twitter":"string | null","founder_profile_slug":"string | null","launch_date":"string | null","status":"\"approved\"","created_at":"string","approved_at":"string | null","view_count":"number","is_featured":"boolean","featured_rank":"number","screenshot_url":"string | null","submission_tier":"\"free\" | \"paid_fast_track\"","review_priority":"number","audience_tags":["\"for-developers\" | \"for-founders\" | \"b2b\" | \"consumer\""],"badge_verified":"boolean","is_agent_product":"boolean","qualification_type":"\"agent_native\" | \"agent_built\" | \"agentic_workflow\" | null","agent_use_case":"\"support\" | \"research\" | \"operations\" | \"sales\" | \"voice\" | \"browser_automation\" | null","qualification_statement":"string | null","workflow_summary":"string | null","agent_tools_used":"string[]","supporting_links":"string[]","claim_review_status":"\"submitted\" | \"verified\" | \"not_verified\" | \"needs_revision\" | null","claim_reviewed_at":"string | null","claim_review_notes":"string | null","claim_verified_by":"string | null","claim_evidence_summary":"string | null","tools":[{"id":"string","name":"string","slug":"string","description":"string | null","icon_url":"string | null","category":"string","product_count":"number","created_at":"string"}],"overview":"string | null","editorial_summary":"string | null","trust":{"review_model":"\"manual\"","source_kind":"\"curated\" | \"user_submission\" | \"other\"","source_quality":"\"curated_evidence\" | \"reviewed_with_evidence\" | \"manual_review_only\"","source_url":"string","verified_at":"string | null","public_note":"string | null","evidence":[{"type":"string","url":"string"}]},"compatibility_matrix":[{"tool":{"id":"string","name":"string","slug":"string","description":"string | null","icon_url":"string | null","category":"string","product_count":"number","created_at":"string"},"status":"\"core_stack\" | \"has_integration\" | \"supports_deployment\" | \"works_with\"","note":"string | null"}]},"badge":{"available":"boolean","image_url":"string","verification":{"status":"\"pending_approval\" | \"awaiting_verification\" | \"verified\" | \"paid_dofollow\"","is_dofollow":"boolean","requires_badge_install":"boolean","requires_manual_review":"boolean","detail":"string"}}},"response_pending":{"product":{"slug":"string","name":"string","status":"\"pending\"","created_at":"string"},"badge":{"available":"boolean","image_url":"string","verification":{"status":"\"pending_approval\" | \"awaiting_verification\" | \"verified\" | \"paid_dofollow\"","is_dofollow":"boolean","requires_badge_install":"boolean","requires_manual_review":"boolean","detail":"string"}}},"error_codes":{"VALIDATION_ERROR":"404 - Product not found","INTERNAL_ERROR":"500 - Server error"}},"GET /api/v1/search":{"description":"Search tools and approved products by keyword and receive absolute URLs.","query_params":{"q":"Search query string (required)"},"response":{"results":[{"type":"\"tool\" or \"product\"","slug":"string","name":"string","description":"string | null","href":"Absolute URL (for example https://www.madewithstack.com/product/example)","icon_url":"string | null","favicon_url":"string | null","screenshot_url":"string | null"}],"query":"string"}},"GET /api/v1/recommend":{"description":"Return ranked approved products for a task and optional stack combination.","query_params":{"task":"Free-text task or canonical use case such as \"support\" or \"customer-support\"","stack":"Comma-separated tool slugs or names such as \"nextjs,supabase\"","limit":"Number, 1-24 (default 10)"},"response":{"query":{"task":"string | null","normalized_task":"\"support\" | \"research\" | \"operations\" | \"sales\" | \"voice\" | \"browser_automation\" | null","stack":["string"],"resolved_tools":[{"slug":"string","name":"string","category":"string"}],"unresolved_stack_terms":["string"]},"recommendations":[{"rank":"number","score":"number","product":{"id":"string","name":"string","slug":"string","description":"string","url":"string","favicon_url":"string | null","founder_name":"string | null","founder_twitter":"string | null","founder_profile_slug":"string | null","launch_date":"string | null","status":"\"approved\"","created_at":"string","approved_at":"string | null","view_count":"number","is_featured":"boolean","featured_rank":"number","screenshot_url":"string | null","submission_tier":"\"free\" | \"paid_fast_track\"","review_priority":"number","audience_tags":["\"for-developers\" | \"for-founders\" | \"b2b\" | \"consumer\""],"badge_verified":"boolean","is_agent_product":"boolean","qualification_type":"\"agent_native\" | \"agent_built\" | \"agentic_workflow\" | null","agent_use_case":"\"support\" | \"research\" | \"operations\" | \"sales\" | \"voice\" | \"browser_automation\" | null","qualification_statement":"string | null","workflow_summary":"string | null","agent_tools_used":"string[]","supporting_links":"string[]","claim_review_status":"\"submitted\" | \"verified\" | \"not_verified\" | \"needs_revision\" | null","claim_reviewed_at":"string | null","claim_review_notes":"string | null","claim_verified_by":"string | null","claim_evidence_summary":"string | null","tools":[{"id":"string","name":"string","slug":"string","description":"string | null","icon_url":"string | null","category":"string","product_count":"number","created_at":"string"}]},"match":{"task_match":"\"exact\" | \"text\" | \"none\"","matched_tool_slugs":["string"],"matched_tool_count":"number","reasons":["string"]}}]}},"GET /api/v1/compare":{"description":"Return a structured side-by-side comparison of exactly two approved products.","query_params":{"slugs":"Exactly two comma-separated approved product slugs"},"response":{"slugs":["string","string"],"products":[{"id":"string","name":"string","slug":"string","description":"string","url":"string","favicon_url":"string | null","founder_name":"string | null","founder_twitter":"string | null","founder_profile_slug":"string | null","launch_date":"string | null","status":"\"approved\"","created_at":"string","approved_at":"string | null","view_count":"number","is_featured":"boolean","featured_rank":"number","screenshot_url":"string | null","submission_tier":"\"free\" | \"paid_fast_track\"","review_priority":"number","audience_tags":["\"for-developers\" | \"for-founders\" | \"b2b\" | \"consumer\""],"badge_verified":"boolean","is_agent_product":"boolean","qualification_type":"\"agent_native\" | \"agent_built\" | \"agentic_workflow\" | null","agent_use_case":"\"support\" | \"research\" | \"operations\" | \"sales\" | \"voice\" | \"browser_automation\" | null","qualification_statement":"string | null","workflow_summary":"string | null","agent_tools_used":"string[]","supporting_links":"string[]","claim_review_status":"\"submitted\" | \"verified\" | \"not_verified\" | \"needs_revision\" | null","claim_reviewed_at":"string | null","claim_review_notes":"string | null","claim_verified_by":"string | null","claim_evidence_summary":"string | null","tools":[{"id":"string","name":"string","slug":"string","description":"string | null","icon_url":"string | null","category":"string","product_count":"number","created_at":"string"}],"overview":"string | null","editorial_summary":"string | null","trust":{"review_model":"\"manual\"","source_kind":"\"curated\" | \"user_submission\" | \"other\"","source_quality":"\"curated_evidence\" | \"reviewed_with_evidence\" | \"manual_review_only\"","source_url":"string","verified_at":"string | null","public_note":"string | null","evidence":[{"type":"string","url":"string"}]},"compatibility_matrix":[{"tool":{"id":"string","name":"string","slug":"string","description":"string | null","icon_url":"string | null","category":"string","product_count":"number","created_at":"string"},"status":"\"core_stack\" | \"has_integration\" | \"supports_deployment\" | \"works_with\"","note":"string | null"}]},{"id":"string","name":"string","slug":"string","description":"string","url":"string","favicon_url":"string | null","founder_name":"string | null","founder_twitter":"string | null","founder_profile_slug":"string | null","launch_date":"string | null","status":"\"approved\"","created_at":"string","approved_at":"string | null","view_count":"number","is_featured":"boolean","featured_rank":"number","screenshot_url":"string | null","submission_tier":"\"free\" | \"paid_fast_track\"","review_priority":"number","audience_tags":["\"for-developers\" | \"for-founders\" | \"b2b\" | \"consumer\""],"badge_verified":"boolean","is_agent_product":"boolean","qualification_type":"\"agent_native\" | \"agent_built\" | \"agentic_workflow\" | null","agent_use_case":"\"support\" | \"research\" | \"operations\" | \"sales\" | \"voice\" | \"browser_automation\" | null","qualification_statement":"string | null","workflow_summary":"string | null","agent_tools_used":"string[]","supporting_links":"string[]","claim_review_status":"\"submitted\" | \"verified\" | \"not_verified\" | \"needs_revision\" | null","claim_reviewed_at":"string | null","claim_review_notes":"string | null","claim_verified_by":"string | null","claim_evidence_summary":"string | null","tools":[{"id":"string","name":"string","slug":"string","description":"string | null","icon_url":"string | null","category":"string","product_count":"number","created_at":"string"}],"overview":"string | null","editorial_summary":"string | null","trust":{"review_model":"\"manual\"","source_kind":"\"curated\" | \"user_submission\" | \"other\"","source_quality":"\"curated_evidence\" | \"reviewed_with_evidence\" | \"manual_review_only\"","source_url":"string","verified_at":"string | null","public_note":"string | null","evidence":[{"type":"string","url":"string"}]},"compatibility_matrix":[{"tool":{"id":"string","name":"string","slug":"string","description":"string | null","icon_url":"string | null","category":"string","product_count":"number","created_at":"string"},"status":"\"core_stack\" | \"has_integration\" | \"supports_deployment\" | \"works_with\"","note":"string | null"}]}],"comparison":{"shared_tools":[{"id":"string","name":"string","slug":"string","description":"string | null","icon_url":"string | null","category":"string","product_count":"number","created_at":"string"}],"unique_tools":{"<left-slug>":[{"id":"string","name":"string","slug":"string","description":"string | null","icon_url":"string | null","category":"string","product_count":"number","created_at":"string"}],"<right-slug>":[{"id":"string","name":"string","slug":"string","description":"string | null","icon_url":"string | null","category":"string","product_count":"number","created_at":"string"}]},"shared_audience_tags":["\"for-developers\" | \"for-founders\" | \"b2b\" | \"consumer\""],"agent_use_case":{"left":"\"support\" | \"research\" | \"operations\" | \"sales\" | \"voice\" | \"browser_automation\" | null","right":"\"support\" | \"research\" | \"operations\" | \"sales\" | \"voice\" | \"browser_automation\" | null","same":"boolean"},"qualification_type":{"left":"\"agent_native\" | \"agent_built\" | \"agentic_workflow\" | null","right":"\"agent_native\" | \"agent_built\" | \"agentic_workflow\" | null","same":"boolean"},"claim_review_status":{"left":"\"submitted\" | \"verified\" | \"not_verified\" | \"needs_revision\" | null","right":"\"submitted\" | \"verified\" | \"not_verified\" | \"needs_revision\" | null","same":"boolean"},"trust":{"<left-slug>":{"claim_review_status":"\"submitted\" | \"verified\" | \"not_verified\" | \"needs_revision\" | null","badge_verified":"boolean","is_featured":"boolean","approved_at":"string | null","source_quality":"\"curated_evidence\" | \"reviewed_with_evidence\" | \"manual_review_only\" | null"},"<right-slug>":{"claim_review_status":"\"submitted\" | \"verified\" | \"not_verified\" | \"needs_revision\" | null","badge_verified":"boolean","is_featured":"boolean","approved_at":"string | null","source_quality":"\"curated_evidence\" | \"reviewed_with_evidence\" | \"manual_review_only\" | null"}},"summary":["string"]}},"error_codes":{"VALIDATION_ERROR":"400/404 - Invalid slug list or one or more products not found","INTERNAL_ERROR":"500 - Server error"}},"GET /api/v1/changelog":{"description":"Feed of approvals, claim-review updates, and published weekly catalog issues.","query_params":{"since":"Optional ISO-8601 timestamp cursor","limit":"Number, 1-100 (default 50)"},"response":{"items":[{"id":"string","type":"\"product_approved\" | \"claim_review_updated\" | \"weekly_issue_published\"","timestamp":"string","product":{"slug":"string","name":"string","listing_url":"string","website_url":"string"}}],"total":"number","limit":"number","since":"string | null","latest_timestamp":"string | null"},"error_codes":{"VALIDATION_ERROR":"400 - Invalid since timestamp","INTERNAL_ERROR":"500 - Server error"}},"POST /api/v1/submit":{"description":"Submit a product programmatically into the manual review queue.","required_fields":{"name":"Product name (string)","url":"Product URL (absolute http/https)","description":"Short description, 240 characters max (string)","email":"Submitter email for review updates (string)"},"optional_fields":{"tool_slugs":"Array of tool slug strings from GET /api/v1/tools (preferred)","tool_ids":"Array of tool UUID strings (alternative to tool_slugs)","custom_tools":"Array of custom tool name strings (max 5, max 40 chars each)","founder_name":"Founder or team name (string)","founder_twitter":"X/Twitter handle (string)","favicon_url":"Logo image URL (absolute http/https)","screenshot_url":"Screenshot image URL (absolute http/https)","audience_tags":"Array of: \"for-developers\", \"for-founders\", \"b2b\", \"consumer\"","referral_code":"Referral code from an existing listed product (string)"},"notes":["At least one of tool_slugs, tool_ids, or custom_tools must be non-empty.","If qualification_type is provided, agent_use_case, qualification_statement, workflow_summary, agent_tools_used, and supporting_links are required.","tool_slugs is preferred over tool_ids.","API submissions are free-tier only. paid_fast_track is not exposed through the API.","Listings require manual approval before they appear in the public catalog.","Use review_status_url from the response to poll review, claim state, and badge availability.","Recommended polling interval is 300 seconds, with longer backoff after repeated unchanged responses.","429 responses include a Retry-After header in seconds."],"success_response":{"status":201,"body":{"success":true,"slug":"string","receiptSent":"boolean","badge_opt_in":"boolean","review_status_url":"string","owner_claim":{"email":"string","status":"\"unverified\" | \"email_verified\" | \"domain_verified\" | \"editor_verified\"","verification_email_sent":"boolean"}}},"polling_guidance":{"recommended_interval_seconds":300,"status_endpoint":"GET /api/v1/products/:slug?email=...","strategy":"Poll conservatively until review status changes. Respect Retry-After when present."},"error_codes":{"VALIDATION_ERROR":"400 - Missing or invalid field","INVALID_TOOL_SLUGS":"400 - One or more tool slugs not found","DUPLICATE_DOMAIN":"409 - A product for this domain already exists","RATE_LIMITED":"429 - Too many requests (check Retry-After header)","INTERNAL_ERROR":"500 - Server error"}},"GET /api/v1/openapi":{"description":"Return the OpenAPI 3.1 specification for the public API."},"GET /api/v1/schema":{"description":"Return the machine-readable specification for the public API."}}}