---
title: "Submit an APK for static teardown analysis"
method: POST
path: "/apk-teardown/jobs"
tags: ["AppInsights"]
---

# Submit an APK for static teardown analysis

`POST /apk-teardown/jobs`

## Request

- Base URL: `https://api.crawlora.net/api/v1`
- URL: `https://api.crawlora.net/api/v1/apk-teardown/jobs`
- Auth: API key in header `x-api-key`

Uploads a single .apk/.xapk file (up to 400MB), or set file_url to have the server fetch it from an https:// URL instead -- exactly one of "file" or "file_url" must be given, not both. Enqueues a Tier 1 static-analysis job -- manifest, permissions, signing, SDK detection, tech stack, locales, and more. Poll the returned poll_path for the result, or set webhook_url for push delivery. Identical uploads (by sha256) within 48h return the existing job instead of re-running analysis. file_url is validated (https only, must resolve to a public address -- no loopback/private/link-local targets) and every redirect hop is re-validated the same way before being followed.

## Headers

- `x-api-key` string, required

## Response `200`

OK

- ApkteardownJobSubmitResponseDoc
  - `code` integer
  - `data` ApkteardownJobSubmitResponse
    - `file_name` string
    - `job_id` string
    - `poll_path` string
    - `status` string
    - `submitted_at` string
  - `msg` string

## Other responses

- `400`: Missing/invalid file or file_url, oversized upload, or not a valid APK/ZIP
- `429`: Too many apk-teardown jobs already in flight for this caller
- `500`: Internal error submitting the job
- `502`: file_url could not be fetched

---

[API](https://skmtc.dev/crawlora/apis/crawlora-api.md) · [All operations](https://skmtc.dev/crawlora/apis/crawlora-api/llms.txt) · [OpenAPI document](https://skmtc.dev/crawlora/apis/crawlora-api/revisions/028417aa35bb?raw)
