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

GET/api/apps

List 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"
GET/api/apps/featured

Featured apps, in curated order.

GET/api/apps/{slug}/reviews

Reviews for an app. Params: page, limit, sort (newest | helpful | highest | lowest).

GET/api/apps/{slug}/download

Download 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.

POST/api/publish/upload-urlX-API-Key

Get 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
POST/api/publishX-API-Key

Create 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.

GET/api/publishX-API-Key

List 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.

POST/api/developer/upgradeSession

Upgrade 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.

POST/api/developer/api-keySession

Regenerate the API key. The old key stops working immediately; the new key is returned once.

GET/api/download/builder

Latest 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).