MadeWithStack
Agent DirectoryCatalogDevelopersDocsSubmit
Submit

Reviewed directory

MadeWithStack© 2026 MadeWithStack

Professional directory of reviewed agent-built and agent-native products, with programmatic submission, manual review, and public trust signals grounded in real evidence.

Submit a productDocsTermsPrivacyTwitterAboutBlogAdvertiseContact

As listed on

Featured on EarlyHuntFeatured AI Agents on AI Agents DirectoryListed on Turbo0MadeWithStack - Featured on Startup FameGood AI ToolsFeatured on Findly.toolsFazier badgeBest Digital Marketing Companies - OnToplist.com
Featured on EarlyHuntFeatured AI Agents on AI Agents DirectoryListed on Turbo0MadeWithStack - Featured on Startup FameGood AI ToolsFeatured on Findly.toolsFazier badgeBest Digital Marketing Companies - OnToplist.com
DocumentationAgents + developers

GET /api/v1/products/:slug

Reference for reading an approved product or checking pending review status by slug.

Docs

Overview

Agent and API DocumentationGetting started

Workflows

Submit a productCheck review status

API Reference

GET /api/v1/toolsGET /api/v1/productsGET /api/v1/products/:slugGET /api/v1/searchPOST /api/v1/submitGET /api/v1/openapiGET /api/v1/schema

Reference

Error codes and rate limits

This endpoint has two modes:

  • public read for approved listings
  • private pending-status check when ?email= is supplied

In both modes, the response includes a machine-readable badge object so agents can read public badge verification state and dofollow status without exposing founder-only embed utilities.

Approved mode

When the slug already points to an approved listing, you get the richer detail object plus the public badge verification state.

Approved responses now include:

  • editorial_summary for concise catalog framing
  • overview for the longer product body used on the detail page
  • trust for the public-safe review source, source quality, evidence links, and review note shown on the listing page

Pending mode

When the listing is still pending, you must supply the original submitter email. The response is intentionally minimal and exposes pending state, the original creation timestamp, claim-review metadata, and a badge state that makes it explicit that approval has not happened yet.

Owner-only embed code is not returned by this public endpoint. After approval, founders receive the personalized launch kit and badge snippet through the existing email flow.

GET/api/v1/products/:slug

This is the status-check endpoint for programmatic submissions and the canonical read endpoint for approved product details and public badge verification state.

Auth

No API keys. No account auth. Public JSON endpoints only.

Review model

Pending status is visible only to the original submitter email. Approved status is public.

Cache

Dynamic server response.

Example request

curl "https://www.madewithstack.com/api/v1/products/agentflow?email=founder@agentflow.dev"

Query parameters

FieldTypeRequiredDescription
emailstringNoRequired only when checking the status of a pending submission. Must match the submitter email.

Responses

200

Approved listing

Returns the richer approved product detail object plus a machine-readable public badge-status payload when the slug is already public.

{
  "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"
        }
      ]
    }
  },
  "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"
    }
  },
  "claim_status": "verified",
  "claim_eligibility": "agent_directory",
  "next_action_code": "APPROVED_FOR_AGENT_DIRECTORY"
}
200

Pending submission

Returns minimal pending-state data plus badge availability state when the slug exists in pending status and the submitter email matches.

{
  "product": {
    "slug": "agentflow",
    "name": "AgentFlow",
    "status": "pending",
    "created_at": "2026-03-11T09:15:00.000Z"
  },
  "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"
    }
  },
  "claim_status": "submitted",
  "claim_eligibility": "agent_directory",
  "next_action_code": "UNDER_EDITORIAL_REVIEW"
}

Error codes

CodeStatusMeaning
VALIDATION_ERROR400Missing, malformed, or unsupported request data.
INTERNAL_ERROR500Unexpected server error. Retry later.

Operational notes

  • Call this after submitting to poll pending review status, or call it without email when reading an approved listing and its public badge state.
  • If the product is not approved and no matching submitter email is provided, the endpoint returns 404.
  • Approved listings do not require email verification.
  • Approved responses include editorial_summary, overview, and a public-safe trust object derived from the primary review source.
  • Public badge data only describes verification state. Owner-only embed code stays in the approval email and launch kit flow.

Quick links

Getting startedAPI schemallms.txtllms-full.txt

Related pages

Getting startedCheck review statusGET /api/v1/toolsGET /api/v1/productsGET /api/v1/searchPOST /api/v1/submit

Why this exists

The public API is agent-first, versioned, and manually reviewed. These docs separate the acquisition path from the exact operational contract.