---
title: "Upload a file and receive a reusable suppression list ID"
method: POST
path: "/lists/suppressions"
tags: ["Lists"]
---

# Upload a file and receive a reusable suppression list ID

`POST /lists/suppressions`

## Request

- Base URL: `https://api.wappalyzer.com/v2`
- URL: `https://api.wappalyzer.com/v2/lists/suppressions`
- Auth: API key in header `x-api-key`
- TypeScript: <https://skmtc.dev/wappalyzer/apis/wappalyzer-public-api/docs/lists/suppressions/post.ts> (a function with typed inputs; its response is checked against the schema)

Send an uncompressed UTF-8 text file as the request body, one domain or HTTP(S) URL per line with no header. No name, sizeBytes, reservation or completion request is required. A 202 Accepted response contains the reusable ID after the file has been stored. Validation runs asynchronously: fetch the ID every two seconds while Pending or Validating, and use it only when Ready. Invalid status includes an error explaining rejected content or account storage quota. Validation may finish before the upload response arrives.
No credits are spent. All API keys share account limits of 20 uploads per UTC day, two simultaneous uploads, 20 MiB per file, 250,000 unique domains per list, and 100 MiB validated storage, including retained snapshots.
Storage is checked after validation. Rejected files and temporary uploads are removed; interrupted uploads are scheduled for cleanup after 15 minutes, with cleanup retries every five minutes. The upload deadline is 60 seconds; validation happens afterwards. Processing has a one-hour deadline including retries; expired jobs are rejected and cleaned up.
Every upload creates a new ID. After a lost response, inspect existing IDs before uploading again. Errors may include an id whose status can be fetched.

## Query parameters

- `name` string

## Request body `text/plain`

- string, binary: Uncompressed UTF-8 file, from 1 to 20,971,520 bytes.

## Response `202`

File stored and queued for validation. Fetch the returned ID until Ready or Invalid.

- SuppressionList
  - `id` string, required
  - `name` string, required
  - `status` 'Pending' | 'Validating' | 'Ready' | 'Invalid' | 'Retired' | 'Deleted', required
  - `createdAt` integer, required: UNIX timestamp in seconds.
  - `domainCount` integer
  - `sizeBytes` integer: Validated snapshot size in bytes.
  - `error` string
  - `retiredAt` integer

## Other responses

- `400`: The request payload or query string was invalid.
- `403`: Authorization failed, the resource or method is invalid, or the account lacks sufficient credits.
- `408`: Upload interrupted or timed out. Inspect the ID if returned before uploading again.
- `409`: Concurrent update or invalid upload state. Storage quota failures appear asynchronously as Invalid status.
- `413`: File exceeds 20 MiB.
- `415`: Unsupported content type or compressed file.
- `429`: Rate limit exceeded.
- `503`: Upload service unavailable. Inspect the ID if returned before uploading again.
- `504`: Upload timed out. Inspect existing IDs before starting another upload.

---

[API](https://skmtc.dev/wappalyzer/apis/wappalyzer-public-api.md) - [All operations](https://skmtc.dev/wappalyzer/apis/wappalyzer-public-api/llms.txt) - [OpenAPI document](https://skmtc.dev/wappalyzer/apis/wappalyzer-public-api/revisions/a67fcb00b7c5?raw)
