Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.
get_api_artifactsOne API's artifacts, grouped by type.
get_openapiThe primary OpenAPI for this API.
find_similar_apisAPIs that look like this one.
apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
resolveTurn a domain, URL or GitHub org into the provider it belongs to.
find_cohortsEvery scored population of providers in the catalog.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/appskyline-com:appskyline-com-sandbox-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Appskyline Com Sandbox API
version: 1.0.0
x-api-versioning:
currentVersion: '1'
requestHeader: API-Version
responseHeader: API-Version
compatibilityPolicy: Omitting API-Version selects version 1. Unsupported versions return HTTP 400 with supportedVersions.
deprecationPolicy: AppSkyline announces incompatible versions at least 180 days before removal. Deprecated responses include Deprecation, Sunset, and a Link relation named deprecation.
deprecationHeaders:
- Deprecation
- Sunset
- Link
policyUrl: https://www.appskyline.com/api.md#compatibility-version
description: 'Operations tagged Sandbox across 2 of this provider''s published API definitions: appskyline-api.swagger.json, appskyline-com-openapi.json. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.appskyline.com
tags:
- name: Sandbox
paths:
/api/sandbox/keywords:
get:
tags:
- Sandbox
summary: Read sandbox keyword ranks without authentication
description: Returns a fixed set of demonstration keyword-rank rows in the same `{searchTerms, store, country, rank}` shape as authenticated keyword reads. No account, credential, or key is required, so agents can evaluate the API before onboarding. Responses carry the standard `RateLimit` response headers and the anonymous pacing limit applies.
security: []
responses:
'200':
description: Demonstration keyword-rank rows.
content:
application/json:
schema:
type: array
items:
type: object
properties:
_id:
type: string
searchTerms:
type: string
store:
type: string
enum:
- ios-app-store
- macos-app-store
- google-play
- microsoft-store
country:
type: string
rank:
type: integer
'429':
description: Anonymous rate limit exceeded; retry after `Retry-After` seconds.
operationId: getApiSandboxKeywords
x-codeSamples:
- lang: Node + Request
source: "const request = require('request');\n\nconst options = {method: 'GET', url: 'https://api.appskyline.com/api/sandbox/keywords'};\n\nrequest(options, function (error, response, body) {\n if (error) throw new Error(error);\n\n console.log(body);\n});\n"
- lang: Shell + Curl
source: "curl --request GET \\\n --url https://api.appskyline.com/api/sandbox/keywords"
- lang: Shell + Httpie
source: http GET https://api.appskyline.com/api/sandbox/keywords
- lang: Python + Python3
source: 'import http.client
conn = http.client.HTTPSConnection("api.appskyline.com")
conn.request("GET", "/api/sandbox/keywords")
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))'
- lang: Php + Curl
source: "<?php\n\n$curl = curl_init();\n\ncurl_setopt_array($curl, [\n CURLOPT_URL => \"https://api.appskyline.com/api/sandbox/keywords\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_ENCODING => \"\",\n CURLOPT_MAXREDIRS => 10,\n CURLOPT_TIMEOUT => 30,\n CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,\n CURLOPT_CUSTOMREQUEST => \"GET\",\n]);\n\n$response = curl_exec($curl);\n$err = curl_error($curl);\n\ncurl_close($curl);\n\nif ($err) {\n echo \"cURL Error #:\" . $err;\n} else {\n echo $response;\n}"
- lang: Php + Http1
source: "<?php\n\n$request = new HttpRequest();\n$request->setUrl('https://api.appskyline.com/api/sandbox/keywords');\n$request->setMethod(HTTP_METH_GET);\n\ntry {\n $response = $request->send();\n\n echo $response->getBody();\n} catch (HttpException $ex) {\n echo $ex;\n}"
- lang: Php + Http2
source: '<?php
$client = new http\Client;
$request = new http\Client\Request;
$request->setRequestUrl(''https://api.appskyline.com/api/sandbox/keywords'');
$request->setRequestMethod(''GET'');
$client->enqueue($request)->send();
$response = $client->getResponse();
echo $response->getBody();'
servers:
- url: https://api.appskyline.com
/api/sandbox/rankchecks:
post:
tags:
- Sandbox
summary: Start a demonstration asynchronous rank check
description: Demonstrates the API's asynchronous-job pattern without authentication. The response is `202 Accepted` with a `Location` header pointing at the job resource and a body carrying the job `_id` and `status`. Poll the `Location` URL until the status is `succeeded`, then read the ranks from the job body. The job is deterministic fixture work that completes about two seconds after creation.
security: []
responses:
'202':
description: Job accepted; poll the `Location` URL for the result.
headers:
Location:
description: URL of the created job resource.
schema:
type: string
example: /api/sandbox/rankchecks/c2FuZGJveGpvYnwxNzU2NTAwMDAwMDAw
content:
application/json:
schema:
type: object
properties:
_id:
type: string
status:
type: string
enum:
- pending
- running
- succeeded
creationTime:
type: string
format: date-time
'429':
description: Anonymous rate limit exceeded; retry after `Retry-After` seconds.
operationId: postApiSandboxRankchecks
x-codeSamples:
- lang: Node + Request
source: "const request = require('request');\n\nconst options = {method: 'POST', url: 'https://api.appskyline.com/api/sandbox/rankchecks'};\n\nrequest(options, function (error, response, body) {\n if (error) throw new Error(error);\n\n console.log(body);\n});\n"
- lang: Shell + Curl
source: "curl --request POST \\\n --url https://api.appskyline.com/api/sandbox/rankchecks"
- lang: Shell + Httpie
source: http POST https://api.appskyline.com/api/sandbox/rankchecks
- lang: Python + Python3
source: 'import http.client
conn = http.client.HTTPSConnection("api.appskyline.com")
conn.request("POST", "/api/sandbox/rankchecks")
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))'
- lang: Php + Curl
source: "<?php\n\n$curl = curl_init();\n\ncurl_setopt_array($curl, [\n CURLOPT_URL => \"https://api.appskyline.com/api/sandbox/rankchecks\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_ENCODING => \"\",\n CURLOPT_MAXREDIRS => 10,\n CURLOPT_TIMEOUT => 30,\n CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,\n CURLOPT_CUSTOMREQUEST => \"POST\",\n]);\n\n$response = curl_exec($curl);\n$err = curl_error($curl);\n\ncurl_close($curl);\n\nif ($err) {\n echo \"cURL Error #:\" . $err;\n} else {\n echo $response;\n}"
- lang: Php + Http1
source: "<?php\n\n$request = new HttpRequest();\n$request->setUrl('https://api.appskyline.com/api/sandbox/rankchecks');\n$request->setMethod(HTTP_METH_POST);\n\ntry {\n $response = $request->send();\n\n echo $response->getBody();\n} catch (HttpException $ex) {\n echo $ex;\n}"
- lang: Php + Http2
source: '<?php
$client = new http\Client;
$request = new http\Client\Request;
$request->setRequestUrl(''https://api.appskyline.com/api/sandbox/rankchecks'');
$request->setRequestMethod(''POST'');
$client->enqueue($request)->send();
$response = $client->getResponse();
echo $response->getBody();'
servers:
- url: https://api.appskyline.com
/api/sandbox/rankchecks/{jobId}:
get:
tags:
- Sandbox
summary: Poll a demonstration rank check
description: Reads the status of a demonstration job started at `POST /api/sandbox/rankchecks`. While the job runs the status is `running`; afterwards it is `succeeded` and the body carries the checked term's rank in every store carrying it. No authentication is required.
security: []
parameters:
- in: path
name: jobId
required: true
schema:
type: string
responses:
'200':
description: Current job state.
content:
application/json:
schema:
type: object
properties:
_id:
type: string
status:
type: string
enum:
- pending
- running
- succeeded
creationTime:
type: string
format: date-time
completionTime:
type: string
format: date-time
ranks:
type: array
items:
type: object
properties:
searchTerms:
type: string
store:
type: string
country:
type: string
rank:
type: integer
'404':
description: Unknown job id.
operationId: getApiSandboxRankchecksJobId
x-codeSamples:
- lang: Node + Request
source: "const request = require('request');\n\nconst options = {\n method: 'GET',\n url: 'https://api.appskyline.com/api/sandbox/rankchecks/%7BjobId%7D'\n};\n\nrequest(options, function (error, response, body) {\n if (error) throw new Error(error);\n\n console.log(body);\n});\n"
- lang: Shell + Curl
source: "curl --request GET \\\n --url https://api.appskyline.com/api/sandbox/rankchecks/%7BjobId%7D"
- lang: Shell + Httpie
source: http GET https://api.appskyline.com/api/sandbox/rankchecks/%7BjobId%7D
- lang: Python + Python3
source: 'import http.client
conn = http.client.HTTPSConnection("api.appskyline.com")
conn.request("GET", "/api/sandbox/rankchecks/%7BjobId%7D")
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))'
- lang: Php + Curl
source: "<?php\n\n$curl = curl_init();\n\ncurl_setopt_array($curl, [\n CURLOPT_URL => \"https://api.appskyline.com/api/sandbox/rankchecks/%7BjobId%7D\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_ENCODING => \"\",\n CURLOPT_MAXREDIRS => 10,\n CURLOPT_TIMEOUT => 30,\n CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,\n CURLOPT_CUSTOMREQUEST => \"GET\",\n]);\n\n$response = curl_exec($curl);\n$err = curl_error($curl);\n\ncurl_close($curl);\n\nif ($err) {\n echo \"cURL Error #:\" . $err;\n} else {\n echo $response;\n}"
- lang: Php + Http1
source: "<?php\n\n$request = new HttpRequest();\n$request->setUrl('https://api.appskyline.com/api/sandbox/rankchecks/%7BjobId%7D');\n$request->setMethod(HTTP_METH_GET);\n\ntry {\n $response = $request->send();\n\n echo $response->getBody();\n} catch (HttpException $ex) {\n echo $ex;\n}"
- lang: Php + Http2
source: '<?php
$client = new http\Client;
$request = new http\Client\Request;
$request->setRequestUrl(''https://api.appskyline.com/api/sandbox/rankchecks/%7BjobId%7D'');
$request->setRequestMethod(''GET'');
$client->enqueue($request)->send();
$response = $client->getResponse();
echo $response->getBody();'
servers:
- url: https://api.appskyline.com
components:
schemas:
Error:
type: object
description: Structured JSON API error.
required:
- name
- message
- status
properties:
name:
type: string
message:
type: string
status:
type: integer
details:
type: object
additionalProperties: true
headers:
Deprecation:
description: Present only when this API operation or version is deprecated. The value is an RFC 9745 Structured Field Date.
schema:
type: string
example: '@1893456000'
DeprecationLink:
description: Present on deprecated responses and points to the applicable migration or deprecation policy with rel="deprecation".
schema:
type: string
example: <https://www.appskyline.com/api.md#compatibility-version>; rel="deprecation"
Sunset:
description: Present on deprecated responses when a retirement date is scheduled. The value is an HTTP-date.
schema:
type: string
example: Tue, 01 Jan 2030 00:00:00 GMT
securitySchemes:
apiKey:
type: http
scheme: basic
description: 'HTTP Basic auth carrying only the API key secret: `Authorization: Basic base64(<key secret>)`.'
accessToken:
type: apiKey
in: header
name: Authorization
description: 'Operator session token issued by the Appskyline dashboard: `Authorization: Token <access token>`.'
x-refined-from:
- appskyline-api.swagger.json
- appskyline-com-openapi.json