API Reference
The marketplace exposes a small REST API. Public endpoints need no authentication. Publishing endpoints authenticate with the X-API-Key header — get a key on the Developer page.
Browse & download
/api/appsList published apps. Query params: q (search), category, sort (popular | newest | top-rated | name), page, limit (max 50).
curl "https://YOUR-MARKETPLACE/api/apps?q=dashboard&sort=popular&page=1"
/api/apps/featuredFeatured apps, in curated order.
/api/apps/{slug}/reviewsReviews for an app. Params: page, limit, sort (newest | helpful | highest | lowest).
/api/apps/{slug}/downloadDownload an app's package (.zip). Optional params: version (defaults to the current version), client_id (opaque installer id for analytics). Each call records an install.
curl -L -o app.zip "https://YOUR-MARKETPLACE/api/apps/hello-world/download"
Publishing
Publishing is a three-step flow: request an upload URL, PUT your package to it, then create the listing.
/api/publish/upload-urlX-API-KeyGet a time-limited URL to upload a file directly to storage. Body: kind (package | media), filename, slug. Returns uploadUrl (PUT target), blobUrl (store this), and required headers.
curl -X POST https://YOUR-MARKETPLACE/api/publish/upload-url \
-H "X-API-Key: aihub_..." -H "Content-Type: application/json" \
-d '{"kind":"package","filename":"my-app-v1.zip","slug":"my-app"}'
# then upload the file itself:
curl -X PUT "<uploadUrl>" \
-H "x-ms-blob-type: BlockBlob" \
--data-binary @my-app-v1.zip/api/publishX-API-KeyCreate or update an app listing and add a version. Required: name, shortDescription, description (markdown), category, version (semver). Recommended: packageUrl / packageSize / packageChecksum (SHA-256) from the upload step, plus tags, license, releaseNotes, iconUrl, setupWizard.
Publishing the same slug again with a new version updates the listing; re-using an existing version number is rejected with 409.
/api/publishX-API-KeyList the authenticated developer's published apps.
Account (session-based)
Used by this site's UI; listed for completeness. These require a signed-in browser session.
/api/developer/upgradeSessionUpgrade the account to developer and receive an API key (shown once). Idempotent — if you're already a developer it returns your profile without generating a new key.
/api/developer/api-keySessionRegenerate the API key. The old key stops working immediately; the new key is returned once.
/api/download/builderLatest EveriApp Builder release metadata (proxied from GitHub Releases). Returns 404 when no public release exists yet.
Errors are JSON: {"error": "..."} with conventional status codes (400 validation, 401/403 auth, 404 not found, 409 conflict).