Skip to main content
All requests use a single endpoint: POST /functions/v1/api with resource: "marketplace".

Access control

The list, all, get, categories, and stats actions are publicly accessible. The create, update, and delete actions require internal admin authentication.
The create, update, and delete actions are admin-only operations. Only users with the internal_admin role can perform these actions. Non-admin users will receive a 403 Forbidden response.

sortBy values

ValueDescription
"popular"Sort by view count (most viewed first)
"newest"Sort by creation date (most recent first) — default
"rating"Sort by rating (highest rated first)
"clones"Sort by clone count (most cloned first)

List genies (slim)

Retrieves a simplified list of marketplace genies optimized for dropdowns and compact listings. Returns only essential fields without nested relations.
resource
string
required
Must be "marketplace"
action
string
required
Must be "list"
data
object

Response

success
boolean
data
object
const response = await ApiService.invoke<{
  genies: MarketplaceGenie[];
  count: number;
}>({
  resource: "marketplace",
  action: "list",
  data: {
    limit: 20,
    query: {
      category: "customer-service",
      sortBy: "popular",
    },
  },
});

List genies (complete)

Retrieves the full marketplace genie listing with all fields and nested relations (category, brand, and creator in admin mode).
resource
string
required
Must be "marketplace"
action
string
required
Must be "all"
data
object

Response

success
boolean
data
object
const response = await ApiService.invoke<{
  genies: MarketplaceGenie[];
  count: number;
}>({
  resource: "marketplace",
  action: "all",
  data: {
    limit: 50,
    query: {
      search: "sales",
      minRating: "4",
    },
  },
});

Get a genie

Retrieves a specific marketplace genie by slug or ID. Automatically increments the view count and includes related genies from the same category.
resource
string
required
Must be "marketplace"
action
string
required
Must be "get"
id
string
required
The genie slug (preferred) or UUID.
data
object

Response

success
boolean
data
object
All fields from the genie object, plus:
const response = await ApiService.invoke<MarketplaceGenie>({
  resource: "marketplace",
  action: "get",
  id: "sales-assistant",
});

Create a listing

Creates a new marketplace listing. Automatically marks the agent as a marketplace template and links the listing back to the agent.
Only internal admins can create marketplace listings.
resource
string
required
Must be "marketplace"
action
string
required
Must be "create"
data
object
required

Response (status 201)

success
boolean
data
object
The created marketplace genie with all fields. See genie object.
const response = await ApiService.invoke<MarketplaceGenie>(
  {
    resource: "marketplace",
    action: "create",
    data: {
      agent_id: "agent-123",
      slug: "sales-assistant",
      display_name: "Sales Assistant",
      category_id: "category-456",
      tagline: "Close more deals with voice AI",
      is_featured: true,
      metadata: { difficulty: "beginner", industry: "sales" },
    },
  },
  201
);

Update a listing

Updates an existing marketplace listing.
Only internal admins can update marketplace listings.
resource
string
required
Must be "marketplace"
action
string
required
Must be "update"
id
string
required
The listing ID.
data
object
required

Response

success
boolean
data
object
The updated marketplace genie with all fields.
const response = await ApiService.invoke<MarketplaceGenie>({
  resource: "marketplace",
  action: "update",
  id: "genie-uuid",
  data: {
    display_name: "Updated Sales Assistant",
    is_featured: false,
  },
});

Delete a listing

Permanently deletes a marketplace listing and unlinks the agent from the marketplace.
Only internal admins can delete marketplace listings.
resource
string
required
Must be "marketplace"
action
string
required
Must be "delete"
id
string
required
The listing ID.

Response

success
boolean
data
object
const response = await ApiService.invoke<{
  success: boolean;
  id: string;
}>({
  resource: "marketplace",
  action: "delete",
  id: "genie-uuid",
});

List categories

Retrieves all marketplace categories ordered by display order. No authentication required.
resource
string
required
Must be "marketplace"
action
string
required
Must be "categories"

Response

success
boolean
data
object
const response = await ApiService.invoke<{
  categories: MarketplaceCategory[];
  count: number;
}>({
  resource: "marketplace",
  action: "categories",
});

Get statistics

Retrieves aggregate statistics about the marketplace. No authentication required.
resource
string
required
Must be "marketplace"
action
string
required
Must be "stats"

Response

success
boolean
data
object
const response = await ApiService.invoke<{
  total_genies: number;
  total_views: number;
  total_clones: number;
  featured_count: number;
  categories_count: number;
}>({
  resource: "marketplace",
  action: "stats",
});

Genie object

The full genie object returned by all, get, create, and update actions.
id
string
agent_id
string
slug
string
display_name
string
tagline
string
description
string
category_id
string
category
object
brand_id
string
brand
object
is_public
boolean
thumbnail_url
string
demo_video_url
string
rating
number
view_count
number
clone_count
number
metadata
object
created_at
string
updated_at
string
creator
object

Error responses

StatusCodeDescription
400VALIDATION_ERRORMissing required parameters
401UNAUTHORIZEDMissing or invalid authentication token
403FORBIDDENNon-admin attempting a write operation
404NOT_FOUNDMarketplace genie not found
500INTERNAL_ERRORServer error