Eligapris Store

For builders

Key. Skill. Live listing.

Build finished, still stuck waiting on people and paperwork? Create a key, install the skill, push the APK. It lands in the shared catalog in under a minute. Auth: egk_ or a developer-mode session. Base: https://store.eligapris.com

Overview

Your APK gets listed. Users can update it. Public reads need no auth. Writes use your key or session: CI, curl, or the Cursor skill. Public catalog or unlisted link-only.

Key

Create an egk_ key. Point the skill or curl at it.

Upload

POST the APK plus listing text. Goes live immediately.

Update

Push the next build. Users update from the catalog.

Install the Cursor skill

Paste this so your agent can publish with your key. Or download the file.

Install skill (terminal)
mkdir -p ~/.cursor/skills/eligapris-store-developer-api
curl -fsSL "https://store.eligapris.com/skills/eligapris-store-developer-api/SKILL.md" \
  -o ~/.cursor/skills/eligapris-store-developer-api/SKILL.md
echo "Installed: ~/.cursor/skills/eligapris-store-developer-api/SKILL.md"

Download SKILL.md · View file

Access

  1. 1Create an account and verify your email.
  2. 2Open Account and enable developer mode.
  3. 3Go to API keys and create a key instantly (copy once).
  4. 4Call the API with Authorization: Bearer egk_… or use your browser session on this site.

Authentication

Prefer API keys for automation. Keys are hashed at rest (max 3 active). Create at /account/developerwhen the key is shown, use the permanent terminal block to write ~/.config/eligapris/store.env. Never commit plaintext keys.

HTTP header
Authorization: Bearer egk_<your_secret>
Permanent env (after creating a key)
mkdir -p ~/.config/eligapris
# Paste the block from /account/developer when your key is shown,
# or manually:
cat > ~/.config/eligapris/store.env <<'EOF'
export ELIGAPRIS_STORE_BASE_URL="https://store.eligapris.com"
export ELIGAPRIS_STORE_API_KEY="egk_…"
EOF
grep -q 'eligapris/store.env' ~/.bashrc 2>/dev/null || \
  echo 'source ~/.config/eligapris/store.env' >> ~/.bashrc
source ~/.config/eligapris/store.env

Endpoints

All paths are relative to the store origin. JSON unless noted.

GET/api/v1/catalogAuth: None

List public catalog apps (lean DTOs)

Full public catalog for tools and integrations. The official Android Store app does not use this path — it uses /api/client/v1. Legacy /api/v1/apps only returns Eligapris Store for old clients updating themselves.

Query parameters

  • qSearch title, package, tags, id, publisher
  • categoryExact category filter (e.g. Tools)
  • sortdefault | downloads | rating | updated | name | hot
  • featuredtrue to only featured listings
  • limitMax results (default 100)
curl
curl -sS "$BASE/api/v1/catalog?sort=updated&limit=20" | jq .
GET/api/v1/catalog/:idAuth: None

Get one catalog item by id

Lean catalog item DTO ({ item }). For the official Android client use /api/client/v1 instead.

curl
curl -sS "$BASE/api/v1/catalog/eligapris-store" | jq .
GET/api/v1/appsAuth: None

Legacy Store client — Store app only

Backward-compat for pre–Client Channel Android installs. Returns only eligapris-store in the old apps/data field shape so users can update. Not for new clients or full catalog browsing.

curl
curl -sS "$BASE/api/v1/apps" | jq .
GET/api/v1/apps/mineAuth: Session or API key

List your own apps

Includes draft, pending, rejected, and published listings you own — with status and visibility.

curl
curl -sS -H "Authorization: Bearer $ELIGAPRIS_STORE_API_KEY" \
  "$BASE/api/v1/apps/mine" | jq .
POST/api/v1/publishAuth: Developer mode session or API key (apps:write)

Create or update a listing

multipart/form-data. New apps publish live (auto-confirm). Blocked listings stay blocked. Admins can still feature apps.

meta JSON (multipart field)

JSON
{
  "slug": "my-app",
  "name": "My App",
  "shortDescription": "At least ten characters…",
  "description": "Full markdown description…",
  "whatsNew": "Required when versionCode increases",
  "category": "Tools",
  "tags": ["offline"],
  "visibility": "public",
  "replaceScreenshots": false,
  "unpublish": false
}
curl
curl -sS -X POST "$BASE/api/v1/publish" \
  -H "Authorization: Bearer $ELIGAPRIS_STORE_API_KEY" \
  -F 'meta={"slug":"my-app","name":"My App","shortDescription":"Short description here","description":"Full description with enough length for review.","whatsNew":"Initial Store release","category":"Tools","tags":["tools"],"visibility":"public"}' \
  -F "apk=@./my-app.apk" \
  -F "icon=@./icon-512.png" \
  -F "featureGraphic=@./feature.png" \
  -F "screenshots=@./01.png" \
  -F "screenshots=@./02.png" \
  -F "screenshots=@./03.png"
GET/api/v1/auth/meAuth: Session or API key

Current account

Returns the signed-in developer profile, or { developer: null }.

curl
curl -sS -H "Authorization: Bearer $ELIGAPRIS_STORE_API_KEY" \
  "$BASE/api/v1/auth/me" | jq .
GET/api/v1/developer/api-keysAuth: Developer mode session

List your API keys & requests

Shows key prefixes, status, and whether a one-time reveal is still available. POST creates a key instantly (auto-confirm).

curl
curl -sS -b cookies.txt "$BASE/api/v1/developer/api-keys" | jq .

Publish details

Multipart fields

  • meta — required JSON string
  • apk — required for new apps; .apk only
  • icon — optional png/jpg/webp
  • featureGraphic — optional
  • screenshots — up to 10 images

Visibility & status

  • public — catalog, browse, sitemap
  • unlisted — link-only; GET by id still works
  • New and updated listings go published immediately (auto-confirm)
  • blocked listings stay blocked until an admin clears them
  • Set unpublish: true to draft your listing

Package name is taken from the APK and cannot change after the first upload. versionCodemust increase when shipping a new APK. What's New is required on version bumps.

Errors & limits

StatusMeaning
400Invalid meta, APK, or images
401Missing or invalid session / API key
403Blocked, no developer mode, or wrong ownership
409Package clash or too many active keys
429Publish rate limit (~20/hour per developer)

Default max APK size is 200MB (MAX_APK_BYTES). Legacy shared publish tokens are disabled unless explicitly enabled on the server.

Try the API

Checking session…