Store

Browse approved apps and skills from the public Grid and skill registry.

These endpoints power Apps and the skill registry. They return store listings (metadata, category, rank, tags) — not full app manifests or skill instructions.

No API key is required. Send X-API-Version: 2 for bare JSON responses (recommended). See REST overview — API version.

Search API — semantic discovery across apps, skills, and knowledge
Skills API — skill content, versions, and management
Apps API — your team's apps and deploy workflows


List approved apps

GET /store/apps or POST /store/apps/list

Returns apps with an approved store version, sorted by rank (descending) when you omit sort. Apps with status retired are excluded. Other statuses (active, maintenance, deprecated) may appear when the underlying app is public — see Apps API — App lifecycle status.

Query parameters (GET)

ParameterDescription
cursorPagination cursor
limitPage size (default 10)
directionforward or backward (default forward)
filtersJSON array of { "field", "value", "operator" } filters
sortJSON array of { "field", "dir" } sort orders
searchJSON object { "term", "fields", "exact" } for text search (term is the query string)

POST accepts the same fields in the JSON body.

Response (PublicAppStoreDTO)

FieldDescription
idApp / listing ID (same as app ID)
namespace, nameApp ref (namespace/name)
descriptionShort description
category, subcategoryGrid grouping
tagsStore tags
imagesApp card images
is_featuredFeatured in the Grid
rankSort rank (higher = more prominent)
has_approved_versionAlways true for this endpoint
page_idOptional docs page link
bash
1curl "https://api.inference.sh/store/apps?limit=20" \2  -H "X-API-Version: 2"
bash
1curl -X POST https://api.inference.sh/store/apps/list \2  -H "Content-Type: application/json" \3  -H "X-API-Version: 2" \4  -d '{"limit": 20, "search": {"term": "whisper", "fields": ["name", "description"]}}'

Pagination matches other cursor list endpoints (items, next_cursor, has_next, total_items, …).


Get app store listing

GET /store/apps/{appId}

Returns store metadata for one approved app (AppStoreListingDTO). Use this when you already have an app ID from a list response.

FieldDescription
allows_private_workersWhether the app can run on private engines
allows_cloud_workersWhether the app can run on cloud workers
max_concurrencyGlobal cap on concurrent runs for this app across the platform (0 = no cap)
max_concurrency_per_teamPer-team cap on concurrent runs (0 = no cap)
min_concurrencyMinimum number of cloud workers that must keep this app loaded (0 = no floor). See Reserved cloud capacity below.
required_featureOptional entitlement resource (for example feature:seedance) your team must have explicitly granted (enabled: true) to run this app — a missing entitlement row is denied, not treated as unrestricted. When blocked, task dispatch returns feature_not_available (403) with addon plan metadata when an addon unlocks the feature. See Entitlements API.
category, subcategory, tags, rank, is_featuredStore presentation metadata
bash
1curl "https://api.inference.sh/store/apps/app_abc123" \2  -H "X-API-Version: 2"

Reserved cloud capacity (min_concurrency)

When min_concurrency is greater than zero, the scheduler keeps at least that many cloud workers loaded with the app. Other apps cannot displace those workers if doing so would drop the app below its floor.

BehaviorDetail
Cloud workers onlyPrivate workers are not protected by min_concurrency
Same-app tasksWorkers already running the app can still accept new tasks for that app
DisplacementA worker can be reclaimed only when more than min_concurrency workers currently have the app loaded
Task failureIf matching cloud workers exist but are all reserved, a queued task may fail after ~10 minutes with no available workers — capacity reserved for higher-priority apps

This is a platform scheduling guarantee for store apps — not a setting you configure per team. See Workers concept and Task failure messages.


Get app pricing

GET /store/apps/{appId}/pricing

Returns the published pricing config for the app's current store version (AppPricing — CEL expressions, price variables, rendered description). Used by public app pages.

bash
1curl "https://api.inference.sh/store/apps/app_abc123/pricing" \2  -H "X-API-Version: 2"

Usage-based pricing · Get task cost


Estimate app cost

POST /store/apps/{appId}/estimate

Preview run cost before dispatch. Evaluates pricing expressions that only depend on task inputs (task_inputs, prices, fees, task_function). When fee expressions need post-execution data (outputs, elapsed_seconds, resource_fee, and so on), the API falls back to the app's estimate CEL expression if one is configured in AppPricing.

No authentication required.

Request body

FieldTypeDescription
inputobjectTask input map (same shape as POST /run)
functionstringOptional function name for multi-function apps

Response (EstimateCostResponse)

FieldTypeDescription
confidencestringexact (all fees input-based), range (estimate returned min/max), or unknown (post-execution data required)
microcentsint64Set when confidence is exact
min, maxint64Set when confidence is range
depends_onstring[]Post-execution variables needed when confidence is unknown
estimate_errorstringPresent when an estimate expression exists but failed to evaluate; confidence is unknown and depends_on is still populated
pricing_descriptionstringRendered human-readable pricing string

Example (exact estimate):

bash
1curl -X POST "https://api.inference.sh/store/apps/app_abc123/estimate" \2  -H "Content-Type: application/json" \3  -H "X-API-Version: 2" \4  -d '{"input": {"n": 4}}'
json
1{2  "confidence": "exact",3  "microcents": 2000000,4  "pricing_description": "$0.02 per image"5}

Example (range estimate via estimate expression):

json
1{2  "confidence": "range",3  "min": 150000,4  "max": 1500000,5  "pricing_description": "About $0.0015–$0.015 per run"6}

Example (unknown — output-dependent pricing, no estimate expression):

json
1{2  "confidence": "unknown",3  "depends_on": ["outputs"]4}

Example (estimate_error — estimate expression failed):

json
1{2  "confidence": "unknown",3  "estimate_error": "no such key: max_tokens",4  "depends_on": ["outputs"]5}

Usage-based pricing — authoring estimate expressions
Evaluate CEL pricing — preview draft formulas with sample output_meta


List approved skills

GET /store/skills or POST /store/skills/list

Returns skills with an approved store listing. Same cursor, filter, sort, and search parameters as List approved apps.

Response (PublicSkillStoreDTO)

FieldDescription
idSkill / listing ID
namespace, nameSkill ref (namespace/name)
descriptionShort description
categoryRegistry grouping
tagsStore tags
is_featuredFeatured in the registry
rankSort rank
has_approved_versionAlways true for this endpoint
bash
1curl "https://api.inference.sh/store/skills?limit=20&filters=%5B%7B%22field%22%3A%22namespace%22%2C%22value%22%3A%22inferencesh%22%2C%22operator%22%3A%22eq%22%7D%5D" \2  -H "X-API-Version: 2"

Example filters value (URL-encoded above):

json
1[{"field": "namespace", "value": "inferencesh", "operator": "eq"}]

Get skill store listing

GET /store/skills/{skillId}

Returns store metadata for one skill (SkillStoreListingDTO), including installs and uses counts.

bash
1curl "https://api.inference.sh/store/skills/skill_abc123" \2  -H "X-API-Version: 2"

To fetch skill content (instructions and files), use Skills API (GET /skills/{namespace}/{name}/content).


Store vs search vs resource APIs

NeedEndpoint
Browse approved Grid apps with category/rankGET /store/apps
Browse approved registry skillsGET /store/skills
Autocomplete / unified discoveryGET /suggest
Full-text search with scoresGET /search
Run an appPOST /run (Tasks)
Read skill instructionsGET /skills/{namespace}/{name}/content
Manage your team's apps or skillsApps / Skills (authenticated)

GuideTopic
Browsing the GridWorkspace app discovery
Skill registryWorkspace skill discovery
Search conceptSuggest vs search

we use cookies

we use cookies to ensure you get the best experience on our website. for more information on how we use cookies, please see our cookie policy.

by clicking "accept", you agree to our use of cookies.
learn more.