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

Access control

The list, all, get, categories, stats, and trending actions are publicly accessible. The create, update, and delete actions require internal admin authentication. The clone, reviews, favorites, collections, and submissions actions require user 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",
});

Clone a marketplace genie

Clones a marketplace genie into the authenticated user’s account. Delegates to handle-agent for the actual agent clone, tracks the clone in user_marketplace_clones, and increments the listing’s clone_count.
resource
string
required
Must be "marketplace"
action
string
required
Must be "clone"
id
string
required
The marketplace genie listing ID. Can also be passed as marketplace_genie_id in the data object.
data
object

Response

success
boolean
data
object
const response = await ApiService.invoke({
  resource: "marketplace",
  action: "clone",
  id: "marketplace-genie-uuid",
  data: {
    cloneName: "My Custom Sales Bot",
    customizations: { industry: "retail" },
  },
});

Reviews

Manages reviews for marketplace genies. Uses a mode parameter inside data to select the operation. When mode is omitted, lists reviews.
resource
string
required
Must be "marketplace"
action
string
required
Must be "reviews"
id
string
The marketplace genie ID. Can also be passed as marketplace_genie_id in data.

Create a review

data
object
required
Returns { review: {...} } with status 201.

Update a review

Set mode: "update". Requires review_id, plus optional rating and review_text. Only the review owner can update.

Delete a review

Set mode: "delete". Requires review_id. Only the review owner can delete.

List reviews (default)

When mode is omitted, lists reviews for the given genie with pagination.
data
object
Returns { items: [...], count, limit, offset }.

Favorites

Manages a user’s marketplace favorites. Uses a mode parameter inside data.
resource
string
required
Must be "marketplace"
action
string
required
Must be "favorites"

Add a favorite

data
object
required
Returns { favorite: {...} } with status 201.

Remove a favorite

Set mode: "remove" with marketplace_genie_id.

List favorites (default)

When mode is omitted, lists all favorites for the authenticated user with pagination.
data
object
Returns { items: [...], count, limit, offset }. Each item includes the full marketplace_genie object.
Returns trending marketplace genies from the trending_marketplace_genies view, ordered by trending score. No authentication required.
resource
string
required
Must be "marketplace"
action
string
required
Must be "trending"
data
object

Response

success
boolean
data
object
const response = await ApiService.invoke({
  resource: "marketplace",
  action: "trending",
  data: { limit: 10, risingOnly: true },
});

Collections

Manages user-curated collections of marketplace genies. Uses a mode parameter inside data.
resource
string
required
Must be "marketplace"
action
string
required
Must be "collections"

Create a collection

data
object
required
Returns { collection: {...} } with status 201.

Update a collection

Set mode: "update" with collection_id and any of name, description, is_public.

Delete a collection

Set mode: "delete" with collection_id.

Add genie to collection

Set mode: "add-genie" with collection_id and marketplace_genie_id.

Remove genie from collection

Set mode: "remove-genie" with collection_id and marketplace_genie_id.

Get a single collection

Pass collection_id (or id) without a mode. Returns the collection and its genies.

List collections (default)

When no mode and no collection_id are provided, lists all collections for the authenticated user.
data
object
Returns { items: [...], count, limit, offset }.

Submissions

Manages marketplace submission requests. Users submit their genies for marketplace listing; admins moderate them. Uses a mode parameter inside data.
resource
string
required
Must be "marketplace"
action
string
required
Must be "submissions"

Create a submission

data
object
required
Returns { submission: {...} } with status 201. Initial status is "pending".

Moderate a submission (admin only)

Set mode to "approve", "reject", or "under-review". Requires submission_id. Optional admin_notes.

Delete a submission

Set mode: "delete" with submission_id. Admins can delete any submission; regular users can only delete their own.

List submissions (default)

When mode is omitted, lists submissions with pagination. Admins see all submissions; regular users see only their own.
data
object
Returns { items: [...], count, limit, offset }.

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