Marketplace API
Add listings to the marketplace from your own tools, automations, or agent workflows. The API is intentionally small: authenticate with a bearer token and send one JSON request.
Authentication
Every request needs the private listing token in an Authorization header. Keep the token in your automation's secret manager—never commit it to source code or publish it in a listing.
Authorization: Bearer YOUR_LISTINGS_API_TOKENCreate a listing
Send a POST request to /api/skills/create. The endpoint accepts all five marketplace types: apps, agents,brains, prompts, and skills.
curl -X POST 'https://YOUR-MARKETPLACE-DOMAIN/api/skills/create' \
-H 'Authorization: Bearer YOUR_LISTINGS_API_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"title": "Quote Follow-Up Writer",
"kind": "skills",
"blurb": "Drafts follow-ups on open quotes",
"tags": ["sales", "email"],
"repo": "https://github.com/your-org/your-repo"
}'Custom DRO content
Custom DR Outsourcing content should live in a repository owned by the droutsourcing organization. Put shared or general marketplace content in the marketplace content repository. Use a standalone repository when the content is a complete tool, needs its own release cycle, or should be maintained separately.
Submit the GitHub repository, folder, or file URL in the repo field. The marketplace stores that source as the listing's delivery source.
"repo": "https://github.com/droutsourcing/your-marketplace-content-repo"Request fields
| Field | Required | Description |
|---|---|---|
title | Yes | Listing name. |
kind | Yes | apps, agents, brains, prompts, or skills. |
blurb | No | Short card description. Defaults to the title. |
long | No | Long description. Defaults to a placeholder. |
tags | No | An array of tags, normalized by the marketplace. |
repo | No | GitHub repository, file, or folder URL used as the delivery source. |
priceLabel | No | Optional display label for pricing. |
deliveryMode | No | DOWNLOAD (default) or REQUEST. |
audience | No | CLIENT (default) or EMPLOYEE. |
Responses
A successful request returns 201 Created:
{
"ok": true,
"slug": "quote-follow-up-writer",
"title": "Quote Follow-Up Writer",
"url": "/listing/quote-follow-up-writer"
}400— invalid JSON, missing title, unsupported kind, or invalid GitHub URL.401— missing or incorrect bearer token.409— that repository is already listed.503— the production API token has not been configured.