REST API reference
Everything in the AppApex dashboard is available over a JSON REST API. Read your apps, pull recommendations, trigger agent runs, and stream results into your own tools.
Base URL and auth
All requests go to the versioned base URL and authenticate with a bearer token. Create a token in Settings, then API tokens. Tokens are scoped to your workspace - rotate or revoke them any time.
curl https://app.appapex.io/api/v1/apps \
-H "Authorization: Bearer $APPAPEX_TOKEN"Core endpoints
GET /api/v1/appsList the apps in your workspace. Requires the read:apps scope.
GET /api/v1/recommendationsList recommendations. Filter by app_id, status (pending, viewed, applied, dismissed, expired), agent, and priority (critical, high, medium, low). Requires read:recommendations.
POST /api/v1/agents/{type}/runTrigger a run for an agent type (conversion, retention, aso, spy, review_intel, ...). Body: { "app_id": "..." }. Requires the admin scope - runs spend AI budget.
GET /api/v1/runs/{id}Fetch a run's status and the recommendations it produced. Requires read:apps.
Example: list recommendations
curl "https://app.appapex.io/api/v1/recommendations?status=pending&priority=high" \
-H "Authorization: Bearer $APPAPEX_TOKEN"{
"data": [
{
"id": "9c1f4e62-...",
"app_id": "5b2a81d0-...",
"agent": "conversion",
"priority": "high",
"status": "pending",
"title": "Lead screenshots with the streak feature",
"estimated_impact": {
"metric": "trial_conversion_rate",
"current": 0.041,
"estimated": 0.052,
"confidence": "medium"
},
"created_at": "2026-06-01T09:30:00.000Z"
}
],
"has_more": false
}Versioning and limits
- The API is versioned in the path (
/v1). Breaking changes ship under a new version. - Rate limit is 120 requests per minute per token; responses include
X-RateLimit-Remaining. - Responses are paginated with
has_moreand astarting_aftercursor.
Treat tokens like passwords. They carry full workspace scope - never ship one in a mobile or web client. Rotate immediately in Settings, then API tokens if one leaks.