AppSkyline API reference

Every endpoint of the AppSkyline REST API, generated from the API itself.

All endpoints are relative to https://api.appskyline.com. Create an API key in your AppSkyline dashboard, then authenticate every request with it.

apiKeyHTTP Basic auth carrying only the API key secret: Authorization: Basic base64(<key secret>).

accessTokenOperator session token issued by the AppSkyline dashboard: Authorization: Token <access token>.

Download the OpenAPI specification for use with your own tooling.

Stats

GET/api/apple-app-store-engagement

Apple App Store engagement rows

Downloads/sessions engagement rows for your organization, optionally filtered by appId and a days cutoff. Requires the stats:read scope.

stats:readapiKeyaccessToken
Parameters
NameInTypeDescription
appIdquerystring
daysqueryinteger
Responses
StatusMeaning
200Array of engagement rows
403API key is missing the stats:read scope
429API key rate limit exceeded

Apps

GET/api/apps

List apps

Lists the apps of your organization. Requires the apps:read scope.

apps:readapiKeyaccessToken
Responses
StatusMeaning
200Array of apps
401Missing or invalid credentials
403API key is missing the apps:read scope
429API key rate limit exceeded
POST/api/apps

Create an app

Requires the apps:write scope.

apps:writeapiKeyaccessToken
Responses
StatusMeaning
200The created app
403API key is missing the apps:write scope
409Domain is already taken
GET/api/apps/{appId}

Get an app by id

Requires the apps:read scope.

apps:readapiKeyaccessToken
Parameters
NameInTypeDescription
appIdrequiredpathstring
Responses
StatusMeaning
200The app
403API key is missing the apps:read scope
404No such app in your organization
PUT/api/apps/{appId}

Update an app

Requires the apps:write scope.

apps:writeapiKeyaccessToken
Parameters
NameInTypeDescription
appIdrequiredpathstring
Responses
StatusMeaning
200The updated app
404No such app in your organization
409Domain is already taken

Keywords

GET/api/keywords

List keywords

Lists the tracked keywords of your organization, optionally filtered by appId. Requires the keywords:read scope.

keywords:readapiKeyaccessToken
Parameters
NameInTypeDescription
appIdquerystring
limitqueryinteger
skipqueryinteger
sortFieldquerystring
sortDirectionquerystring (ASC | DESC)
fieldsquerystringComma-separated projection of fields to return
Responses
StatusMeaning
200Array of keywords
401Missing or invalid credentials
403API key is missing the keywords:read scope
429API key rate limit exceeded
POST/api/keywords

Create a keyword

Requires the keywords:write scope.

keywords:writeapiKeyaccessToken
Responses
StatusMeaning
200The created keyword
403API key is missing the keywords:write scope
GET/api/keywords/{keywordId}

Get a keyword by id

Requires the keywords:read scope.

keywords:readapiKeyaccessToken
Parameters
NameInTypeDescription
keywordIdrequiredpathstring
Responses
StatusMeaning
200The keyword
403API key is missing the keywords:read scope
404No such keyword in your organization
PUT/api/keywords/{keywordId}

Update a keyword

Requires the keywords:write scope.

keywords:writeapiKeyaccessToken
Parameters
NameInTypeDescription
keywordIdrequiredpathstring
Responses
StatusMeaning
200The updated keyword
404No such keyword in your organization
DELETE/api/keywords/{keywordId}

Delete a keyword

Requires the keywords:write scope.

keywords:writeapiKeyaccessToken
Parameters
NameInTypeDescription
keywordIdrequiredpathstring
Responses
StatusMeaning
200Deleted
404No such keyword in your organization

Webhook subscriptions

GET/api/webhooksubscriptions

List webhook subscriptions

Webhook subscriptions deliver app.created, app.updated, keyword.created, keyword.updated and keyword.deleted events to your server as signed POST requests (X-Appskyline-Signature: t=<timestamp>,v1=<hex HMAC-SHA256 of "timestamp.body">). An endpoint failing 20 times in a row is disabled automatically. Subscriptions are managed with an operator access token; the secret is only returned once, on create.

accessToken
Responses
StatusMeaning
200Array of webhook subscriptions (without secrets)
POST/api/webhooksubscriptions

Create a webhook subscription

The response includes the signing secret exactly once — store it; it cannot be retrieved again.

accessToken
Request body
FieldTypeDescription
urlrequiredstring
eventsarray (app.created | app.updated | keyword.created | keyword.updated | keyword.deleted)Empty array subscribes to all events
Responses
StatusMeaning
200The created subscription, including its secret
PUT/api/webhooksubscriptions/{webhookSubscriptionId}

Update a webhook subscription

url, events and active are editable; the secret and organization are immutable. Re-enabling an auto-disabled endpoint is done by setting active back to true.

accessToken
Parameters
NameInTypeDescription
webhookSubscriptionIdrequiredpathstring
Responses
StatusMeaning
200The updated subscription (without secret)
DELETE/api/webhooksubscriptions/{webhookSubscriptionId}

Delete a webhook subscription

accessToken
Parameters
NameInTypeDescription
webhookSubscriptionIdrequiredpathstring
Responses
StatusMeaning
200Deleted