Skip to main content

GET /marketplace/agents

List published agents. Public. Query params
cursor
string
Pagination cursor.
tag
string
Filter by tag, e.g. dispatch.
sort
string
default:"trending"
One of trending, new, top_earning, top_rated.
curl "https://api.agentflow.website/marketplace/agents?sort=trending&tag=logistics"
Response
{
  "items": [
    {
      "slug": "hermes-bot",
      "name": "Hermes Dispatch",
      "imageUrl": "https://cdn.agentflow.website/...",
      "tags": ["dispatch", "logistics"],
      "monetization": "per_call",
      "perCallPriceFlow": 0.5,
      "stats": {
        "callsLast30d": 12450,
        "p50LatencyMs": 3200,
        "rating": 4.7
      },
      "tokenSlug": "hermes-dispatch"
    }
  ],
  "nextCursor": "..."
}

GET /marketplace/agents/:slug

Fetch a single agent’s full detail. Public.
curl https://api.agentflow.website/marketplace/agents/hermes-bot
Response includes description, monetization config, toolPrices, and linkedToken if attached.

POST /agents/:slug/publish

Publish or update publication settings. Auth: required (must own the agent). See Publish an Agent for the full body schema.

POST /agents/:slug/unpublish

Hide the agent from the marketplace. Existing subscriptions roll off at end of period.
curl -X POST https://api.agentflow.website/agents/hermes-bot/unpublish \
  -H "Cookie: af_session=..."

POST /agents/:slug/tool-prices

Set per-tool prices in FLOW. Body:
tools
object[]
required
Array of { tool: string, perCallFlow: number }.
{
  "tools": [
    { "tool": "image_generate", "perCallFlow": 0.2 },
    { "tool": "web_search_premium", "perCallFlow": 0.05 }
  ]
}
Tool prices apply to every call that invokes the tool, regardless of monetization model. They settle under the tool-premium bucket — see Earnings Split.

Errors

CodeWhen
agent_not_foundSlug does not exist
not_ownerCaller does not own the agent
invalid_monetizationBad model / required field missing
tool_unknownTool name is not in the platform’s allowed list