# Documentation

## Getting Started

The simplest API call you can make is ***/analyze*** endpoint providing APK URL. The URL should be publicly accessible.

If you don't have an API key yet, you can get it from here, <https://appdetonator.run/>

```
curl https://api.appdetonator.run/analyze?key=<api_key>&url=https://storage.googleapis.com/detonator-samples/jack2.apk
```

## Analyze APK

<mark style="color:blue;">`GET`</mark> `https://api.appdetonator.run/analyze?key=<api_key>&url=https://storage.googleapis.com/detonator-samples/jack2.apk`

Submit application for analysis. The response might take somewhere between \~ 30 sec to 2min depending on the size of APK sample.

#### Path Parameters

| Name | Type   | Description                 |
| ---- | ------ | --------------------------- |
| url  | string | Publicly accessable APK URL |
| key  | string | API Key                     |

{% tabs %}
{% tab title="200 Analysis Result" %}

```
{
  "entryNameToEntry": {
    "classes.dex": {
      "name": "classes.dex",
      "xdostime": 1224180776,
      "crc": 1232565471,
      "size": 545008,
      "csize": 224195,
      "method": 8,
      "flag": 2056
    }
  },
  "certificate": {
    "apkCertificates": [
      {
        "subjectPrincipal": "1.2.840.113549.1.9.1=#16146c6f72656e7a406c6f6e6461746967612e6e6574,CN=Lorensius W. L. T,OU=AndroidDev,O=Londatiga,L=Bandung,ST=Jawa Barat,C=ID",
        "issuerPrincipal": "1.2.840.113549.1.9.1=#16146c6f72656e7a406c6f6e6461746967612e6e6574,CN=Lorensius W. L. T,OU=AndroidDev,O=Londatiga,L=Bandung,ST=Jawa Barat,C=ID",
        "publicKeyHash": "74bd7b456d9e651fc84446f65041bef1207c408d",
        "signatureHash": "2c0bc272a22dd43b06e4350b1c8edf9bed359f40"
      }
    ]
  },
  "androidManifest": {
    "application": {
      "activities": [
        {
          "allowEmbedded": false,
          "allowTaskReparenting": false,
          "alwaysRetainTaskState": false,
          "autoRemoveFromRecents": false,
          "banner": "",
          "clearTaskOnLaunch": false,
          "configChanges": 0,
          "documentLaunchMode": 0,
          "excludeFromRecents": false,
          "finishOnTaskLaunch": false,
          "hardwareAccelerated": false,
          "launchMode": 0,
          "maxRecents": 16,
          "multiprocess": false,
          "noHistory": false,
          "parentActivityName": "",
          "persistableMode": 0,
          "relinquishTaskIdentity": false,
          "resizeableActivity": false,
          "screenOrientation": 0,
          "showForAllUsers": false,
          "stateNotNeeded": false,
          "supportsPictureInPicture": false,
          "taskAffinity": "",
          "theme": "",
          "uiOptions": 0,
          "windowSoftInputMode": 0,
          "intentFilters": [
            {
              "actions": [
                "android.intent.action.MAIN"
              ],
              "categories": [
                "android.intent.category.LAUNCHER"
              ],
              "data": [],
              "icon": "",
              "label": "",
              "priority": 0
            }
          ],
          "metaData": [],
          "directBootAware": false,
          "enabled": true,
          "exported": false,
          "icon": "",
          "label": "U[2130968576]",
          "name": "net.droidjack.server.MainActivity",
          "permission": "",
          "process": ""
        },
        {
          "allowEmbedded": false,
          "allowTaskReparenting": false,
          "alwaysRetainTaskState": false,
          "autoRemoveFromRecents": false,
          "banner": "",
          "clearTaskOnLaunch": false,
          "configChanges": 0,
          "documentLaunchMode": 0,
          "excludeFromRecents": false,
          "finishOnTaskLaunch": false,
          "hardwareAccelerated": false,
          "launchMode": 0,
          "maxRecents": 16,
          "multiprocess": false,
          "noHistory": false,
          "parentActivityName": "",
          "persistableMode": 0,
          "relinquishTaskIdentity": false,
          "resizeableActivity": false,
          "screenOrientation": 0,
          "showForAllUsers": false,
          "stateNotNeeded": false,
          "supportsPictureInPicture": false,
          "taskAffinity": "",
          "theme": "U[16973840]",
          "uiOptions": 0,
          "windowSoftInputMode": 0,
          "intentFilters": [
            {
              "actions": [
                "android.intent.action.CAMSNAPDJ"
              ],
              "categories": [
                "android.intent.category.DEFAULT"
              ],
              "data": [],
              "icon": "",
              "label": "",
              "priority": 0
            }
          ],
          "metaData": [],
          "directBootAware": false,
          "enabled": true,
          "exported": false,
          "icon": "",
          "label": "U[2130968576]",
          "name": "net.droidjack.server.CamSnapDJ",
          "permission": "",
          "process": ""
        },
        {
          "allowEmbedded": false,
          "allowTaskReparenting": false,
          "alwaysRetainTaskState": false,
          "autoRemoveFromRecents": false,
          "banner": "",
          "clearTaskOnLaunch": false,
          "configChanges": 0,
          "documentLaunchMode": 0,
          "excludeFromRecents": false,
          "finishOnTaskLaunch": false,
          "hardwareAccelerated": false,
          "launchMode": 0,
          "maxRecents": 16,
          "multiprocess": false,
          "noHistory": false,
          "parentActivityName": "",
          "persistableMode": 0,
          "relinquishTaskIdentity": false,
          "resizeableActivity": false,
          "screenOrientation": 0,
          "showForAllUsers": false,
          "stateNotNeeded": false,
          "supportsPictureInPicture": false,
          "taskAffinity": "",
          "theme": "U[16973840]",
          "uiOptions": 0,
          "windowSoftInputMode": 0,
          "intentFilters": [
            {
              "actions": [
                "android.intent.action.VIDEOCAPDJ"
              ],
              "categories": [
                "android.intent.category.DEFAULT"
              ],
              "data": [],
              "icon": "",
              "label": "",
              "priority": 0
            }
          ],
          "metaData": [],
          "directBootAware": false,
          "enabled": true,
          "exported": false,
          "icon": "",
          "label": "U[2130968576]",
          "name": "net.droidjack.server.VideoCapDJ",
          "permission": "",
          "process": ""
        },
        {
          "allowEmbedded": false,
          "allowTaskReparenting": false,
          "alwaysRetainTaskState": false,
          "autoRemoveFromRecents": false,
          "banner": "",
          "clearTaskOnLaunch": false,
          "configChanges": 0,
          "documentLaunchMode": 0,
          "excludeFromRecents": false,
          "finishOnTaskLaunch": false,
          "hardwareAccelerated": false,
          "launchMode": 0,
          "maxRecents": 16,
          "multiprocess": false,
          "noHistory": false,
          "parentActivityName": "",
          "persistableMode": 0,
          "relinquishTaskIdentity": false,
          "resizeableActivity": false,
          "screenOrientation": 0,
          "showForAllUsers": false,
          "stateNotNeeded": false,
          "supportsPictureInPicture": false,
          "taskAffinity": "",
          "theme": "U[16973840]",
          "uiOptions": 0,
          "windowSoftInputMode": 0,
          "intentFilters": [
            {
              "actions": [
                "android.intent.action.CAMSNAPDJ"
              ],
              "categories": [
                "android.intent.category.DEFAULT"
              ],
              "data": [],
              "icon": "",
              "label": "",
              "priority": 0
            }
          ],
          "metaData": [],
          "directBootAware": false,
          "enabled": true,
          "exported": false,
          "icon": "",
          "label": "U[2130968576]",
          "name": "net.droidjack.server.CamSnapDJ",
          "permission": "",
          "process": ""
        },
        {
          "allowEmbedded": false,
          "allowTaskReparenting": false,
          "alwaysRetainTaskState": false,
          "autoRemoveFromRecents": false,
          "banner": "",
          "clearTaskOnLaunch": false,
          "configChanges": 0,
          "documentLaunchMode": 0,
          "excludeFromRecents": false,
          "finishOnTaskLaunch": false,
          "hardwareAccelerated": false,
          "launchMode": 0,
          "maxRecents": 16,
          "multiprocess": false,
          "noHistory": false,
          "parentActivityName": "",
          "persistableMode": 0,
          "relinquishTaskIdentity": false,
          "resizeableActivity": false,
          "screenOrientation": 0,
          "showForAllUsers": false,
          "stateNotNeeded": false,
          "supportsPictureInPicture": false,
          "taskAffinity": "",
          "theme": "U[16973840]",
          "uiOptions": 0,
          "windowSoftInputMode": 0,
          "intentFilters": [
            {
              "actions": [
                "android.intent.action.VIDEOCAPDJ"
              ],
              "categories": [
                "android.intent.category.DEFAULT"
              ],
              "data": [],
              "icon": "",
              "label": "",
              "priority": 0
            }
          ],
          "metaData": [],
          "directBootAware": false,
          "enabled": true,
          "exported": false,
          "icon": "",
          "label": "U[2130968576]",
          "name": "net.droidjack.server.VideoCapDJ",
          "permission": "",
          "process": ""
        }
      ],
      "activityAliases": [],
      "allowTaskReparenting": false,
      "allowBackup": true,
      "backupAgent": "",
      "backupInForeground": false,
      "banner": "",
      "debuggable": false,
      "description": "",
      "directBootAware": false,
      "enabled": true,
      "extractNativeLibs": true,
      "fullBackupContent": "",
      "fullBackupOnly": false,
      "hardwareAccelerated": true,
      "hasCode": true,
      "icon": "U[2130837504]",
      "isGame": false,
      "killAfterRestore": true,
      "largeHeap": false,
      "label": "U[2130968576]",
      "logo": "",
      "manageSpaceActivity": "",
      "name": "",
      "networkSecurityConfig": "",
      "permission": "",
      "persistent": false,
      "process": "",
      "providers": [],
      "receivers": [
        {
          "intentFilters": [
            {
              "actions": [
                "android.net.conn.CONNECTIVITY_CHANGE",
                "android.intent.action.BOOT_COMPLETED"
              ],
              "categories": [],
              "data": [],
              "icon": "",
              "label": "",
              "priority": 0
            }
          ],
          "metaData": [],
          "directBootAware": false,
          "enabled": true,
          "exported": false,
          "icon": "",
          "label": "",
          "name": "net.droidjack.server.Connector",
          "permission": "",
          "process": ""
        },
        {
          "intentFilters": [
            {
              "actions": [
                "android.intent.action.PHONE_STATE"
              ],
              "categories": [],
              "data": [],
              "icon": "",
              "label": "",
              "priority": 0
            }
          ],
          "metaData": [],
          "directBootAware": false,
          "enabled": true,
          "exported": false,
          "icon": "",
          "label": "",
          "name": "net.droidjack.server.CallListener",
          "permission": "",
          "process": ""
        },
        {
          "intentFilters": [
            {
              "actions": [
                "android.net.conn.CONNECTIVITY_CHANGE",
                "android.intent.action.BOOT_COMPLETED"
              ],
              "categories": [],
              "data": [],
              "icon": "",
              "label": "",
              "priority": 0
            }
          ],
          "metaData": [],
          "directBootAware": false,
          "enabled": true,
          "exported": false,
          "icon": "",
          "label": "",
          "name": "net.droidjack.server.Connector",
          "permission": "",
          "process": ""
        },
        {
          "intentFilters": [
            {
              "actions": [
                "android.intent.action.PHONE_STATE"
              ],
              "categories": [],
              "data": [],
              "icon": "",
              "label": "",
              "priority": 0
            }
          ],
          "metaData": [],
          "directBootAware": false,
          "enabled": true,
          "exported": false,
          "icon": "",
          "label": "",
          "name": "net.droidjack.server.CallListener",
          "permission": "",
          "process": ""
        }
      ],
      "restoreAnyVersion": false,
      "requiredAccountType": "",
      "resizableActivity": false,
      "supportsRtl": false,
      "services": [
        {
          "isolatedProcess": false,
          "intentFilters": [],
          "metaData": [],
          "directBootAware": false,
          "enabled": true,
          "exported": false,
          "icon": "",
          "label": "",
          "name": "net.droidjack.server.Controller",
          "permission": "",
          "process": ""
        },
        {
          "isolatedProcess": false,
          "intentFilters": [],
          "metaData": [],
          "directBootAware": false,
          "enabled": true,
          "exported": false,
          "icon": "",
          "label": "",
          "name": "net.droidjack.server.GPSLocation",
          "permission": "",
          "process": ""
        },
        {
          "isolatedProcess": false,
          "intentFilters": [],
          "metaData": [],
          "directBootAware": false,
          "enabled": true,
          "exported": false,
          "icon": "",
          "label": "",
          "name": "net.droidjack.server.Toaster",
          "permission": "",
          "process": ""
        },
        {
          "isolatedProcess": false,
          "intentFilters": [],
          "metaData": [],
          "directBootAware": false,
          "enabled": true,
          "exported": false,
          "icon": "",
          "label": "",
          "name": "net.droidjack.server.Controller",
          "permission": "",
          "process": ""
        },
        {
          "isolatedProcess": false,
          "intentFilters": [],
          "metaData": [],
          "directBootAware": false,
          "enabled": true,
          "exported": false,
          "icon": "",
          "label": "",
          "name": "net.droidjack.server.GPSLocation",
          "permission": "",
          "process": ""
        },
        {
          "isolatedProcess": false,
          "intentFilters": [],
          "metaData": [],
          "directBootAware": false,
          "enabled": true,
          "exported": false,
          "icon": "",
          "label": "",
          "name": "net.droidjack.server.Toaster",
          "permission": "",
          "process": ""
        }
      ],
      "taskAffinity": "",
      "theme": "U[2131034113]",
      "uiOptions": 0,
      "usesCleartextTraffic": true,
      "vmSafeMode": false,
      "usesLibraries": []
    },
    "compatibleScreens": [],
    "hasResources": false,
    "installLocation": 0,
    "instrumentations": [],
    "maxSdkVersion": 0,
    "minSdkVersion": 8,
    "packageName": "net.droidjack.server",
    "permissionGroups": [],
    "permissionTrees": [],
    "permissions": [],
    "platformBuildVersionCode": 17,
    "platformBuildVersionName": "4.2.2-1425461",
    "sharedUserId": "",
    "sharedUserLabel": "",
    "supportsGlTextures": [],
    "targetSdkVersion": 17,
    "usesConfigurations": [],
    "usesFeatures": [
      {
        "glEsVersion": 0,
        "name": "android.hardware.camera",
        "required": true
      },
      {
        "glEsVersion": 0,
        "name": "android.hardware.camera.autofocus",
        "required": true
      },
      {
        "glEsVersion": 0,
        "name": "android.hardware.camera.flash",
        "required": true
      }
    ],
    "usesPermissions": [
      "android.permission.READ_SMS",
      "android.permission.RECEIVE_SMS",
      "android.permission.RECORD_AUDIO",
      "android.permission.READ_EXTERNAL_STORAGE",
      "android.permission.WRITE_EXTERNAL_STORAGE",
      "android.permission.ACCESS_WIFI_STATE",
      "android.permission.READ_PHONE_STATE",
      "android.permission.WRITE_SMS",
      "android.permission.ACCESS_FINE_LOCATION",
      "android.permission.ACCESS_NETWORK_STATE",
      "android.permission.CAMERA",
      "android.permission.WRITE_CONTACTS",
      "android.permission.READ_CONTACTS",
      "android.permission.SEND_SMS",
      "android.permission.READ_CALL_LOG",
      "android.permission.WRITE_CALL_LOG",
      "com.android.browser.permission.READ_HISTORY_BOOKMARKS",
      "android.permission.RECEIVE_BOOT_COMPLETED",
      "android.permission.WAKE_LOCK",
      "android.permission.CALL_PHONE",
      "android.permission.GET_TASKS",
      "android.permission.CHANGE_NETWORK_STATE",
      "android.permission.CHANGE_WIFI_STATE",
      "android.permission.INTERNET"
    ],
    "versionCode": 1,
    "versionName": "1.0"
  },
  "dexReport": {
    "status": "COMPLETED",
    "entryNameToDex": {},
    "result": "dex/49e76051827f37baff9e2b75f342a00227da4f89cb57ed1b2a3be469a9281b8d"
  },
  "fileSHA256": "49e76051827f37baff9e2b75f342a00227da4f89cb57ed1b2a3be469a9281b8d"
}
```

{% endtab %}
{% endtabs %}

## Analyze via multipart/form-data

<mark style="color:green;">`POST`</mark> `https://api.appdetonator.run/analyze?key=<api_key>`

Typically, RESTful APIs accept requests in JSON format. However, in order to upload the file, you must use the multipart/form-data format

#### Path Parameters

| Name | Type   | Description   |
| ---- | ------ | ------------- |
| file | object | \<file\_path> |

{% tabs %}
{% tab title="200 " %}

```
```

{% endtab %}
{% endtabs %}

## Dex Report

<mark style="color:blue;">`GET`</mark> `https://api.appdetonator.run/dex/<apk_hash>?key=<api_key>`

When submitting an APK for analysis, the Dalvik binaries will be analyzed asynchronously in the background and the result is not included on /analyze endpoint. To retrieve DEX report use this method by providing the APK SHA-256 hash as a parameter\
\
SHA-256 can be obtained with the following methods\
\
1\. /***analyze*** endpoint\
2\. /***analyze*** exposes ***dexReport*** block&#x20;

#### Path Parameters

| Name | Type   | Description |
| ---- | ------ | ----------- |
| key  | string | API Key     |

{% tabs %}
{% tab title="200 " %}

```
```

{% endtab %}
{% endtabs %}
