Post and update your Developer Marketplace listings from your own scripts or an AI agent. Same rules as the web form: every new listing is screened and then approved by a human before it goes public.
Open the Creator dashboard → API keys → Create key. The key (duk_…) is shown once, so copy it somewhere safe. You can revoke it anytime. A new key starts working within about a minute, and a revoked key stops within about a minute.
curl -X POST https://digitalundergroundstore.com/api/v1/listings \
-H "Authorization: Bearer $DU_KEY" -H "Content-Type: application/json" \
-d '{
"name": "My App",
"projectUrl": "https://example.com/my-app",
"category": "apps",
"pitchShort": "One sentence: what it does and who it is for.",
"descriptionLong": "A few short paragraphs about features and how to get it.",
"imageUrl": "https://example.com/cover.png",
"tags": ["productivity", "mac"],
"priceLabel": "$9",
"terms": true
}'
Response 201 with listing.status = pending (or rejected if screening blocks it, with reasons).
curl https://digitalundergroundstore.com/api/v1/listings/LISTING_ID -H "Authorization: Bearer $DU_KEY"
curl -X PATCH https://digitalundergroundstore.com/api/v1/listings/LISTING_ID \
-H "Authorization: Bearer $DU_KEY" -H "Content-Type: application/json" \
-d '{"pitchShort": "A sharper tagline."}'
Updates are re-screened. If the listing is already approved, your edit is saved as a revision pending owner approval (HTTP 202): the approved version stays live unchanged until the owner approves it, or the owner rejects and discards it. Check pendingRevision on GET /api/v1/listings/{id}. A newer edit replaces an older one waiting for review.
| Method | Path | What |
|---|---|---|
GET | /api/v1/listings | Your listings |
POST | /api/v1/listings | Submit a new listing (review queue) |
GET | /api/v1/listings/{id} | One listing + status |
PATCH | /api/v1/listings/{id} | Change fields |
Full spec: /api/v1/openapi.json · For AI agents: /llms.txt · /openapi.json (incl. public browse) · ai-plugin.json
AI agents can connect to https://digitalundergroundstore.com/mcp (Streamable HTTP, no auth for reads). Tools: search_listings, get_listing, submit_listing (needs your API key) and get_my_listing_status. Submissions go to the same review queue. Manifest: /server.json.
429 + Retry-After). Reads are not counted.