---
title: "Create an export"
method: POST
path: "/api/v1/exports"
tags: ["Exports"]
---

# Create an export

`POST /api/v1/exports`

## Request

- Base URL: `https://app.argorant.com`
- URL: `https://app.argorant.com/api/v1/exports`
- Auth: HTTP bearer

Builds a CSV of the people who match your filters. Every email is checked when the file is built and you pay only for the ones that pass. Up to 50,000 rows make one file; more become a batch of files. People you exported before are left out by default. Poll the export, then download the CSV.

Every people filter applies, include and exclude alike. A search that leaves people out, limits where keywords look or uses a title match mode, or uses the newer filters (size and revenue ranges, radius, gender or income) is exported up to 50,000 people at a time; for more, save it as a list (it has no limit) and export the list.

| Cost | What it does | Key scopes |
| --- | --- | --- |
| 1 credit per contact whose email passes the check, plus 10 per phone number with include_phones | Spends credits | `argorant:create_exports` |

## Headers

- `Idempotency-Key` string
- `X-Request-Id` string

## Request body

- object
  - `filters` object, required: The people filters, same names as search.
    - `q` string: Plain text across name, title, company and description. A request like "software companies selling to restaurants" is understood as the vendors, not the restaurants.
    - `title` string: Job title. Knows abbreviations (CFO matches Chief Financial Officer). Comma means or.
    - `exclude_title` string: Leave out people with these titles. Comma means or.
    - `seniority` string: Comma-separated seniority levels.
    - `departments` string: Comma-separated departments.
    - `industries` string: Pipe-separated industries from GET /api/v1/lookups/industries.
    - `industry` string: One industry in plain words; industries is more exact.
    - `keywords` string: Comma-separated words that describe what the company does, such as fintech or freight forwarding. They match the company's name, tags, industry and description. They do not match a person's own skills unless keyword_scope is people or any. The widest filter for niches without their own industry.
    - `technologies` string: Pipe-separated technologies the company uses, from GET /api/v1/lookups/technologies.
    - `employee_range` string: Comma-separated company sizes.
    - `company_name` string: Company name, matched as written (Deutsche Bank finds Deutsche Bank AG). Several companies: join the names with |, for example Stripe|Notion.
    - `company_domain` string: Company website domains. Comma means or.
    - `country` string: Comma-separated countries or regions (Europe, DACH, Nordics, APAC, LATAM). Names from GET /api/v1/lookups/countries.
    - `state` string: States or provinces, by name or code. Comma means or.
    - `city` string: Cities. Comma means or.
    - `sells_to` string: Who the company sells to, for example restaurants or dentists.
    - `company_category` string: What the company itself is, used with sells_to.
    - `has_phone` boolean: Only people with a phone number on record.
    - `has_linkedin` boolean: Only people with a profile URL.
    - `exclude_keywords` string: Leave out people that keywords would find for these words. Same matching and the same keyword_scope as keywords. Comma means or.
    - `keyword_scope` string: company (default): only what the company does, that is its name, tags, industry and description. people: only the person's own skills and profile; use it when the user wants people who have a skill themselves, such as people who know Python. any: both, plus job titles.
    - `title_match` string: words (default): every word must appear as a whole word, so Data does not match Database. exact: the whole job title must be one of the values, ignoring case, so CEO does not match Founder & CEO. contains: the text may appear anywhere, also inside a word; slower, for special cases.
    - `exclude_title_match` string: Like title_match, for exclude_title only. When it is not set, title_match is used.
    - `exclude_seniority` string: Leave out these seniority levels. Comma means or.
    - `exclude_departments` string: Leave out these departments. Comma means or.
    - `exclude_industries` string: Leave out these industries (pipe-separated, like industries).
    - `exclude_industry` string: Leave out industries in plain words, like industry. Comma means or.
    - `exclude_company_domain` string: Leave out people at these company website domains. Comma means or.
    - `exclude_country` string: Leave out these countries or regions (Europe, DACH, Nordics, APAC, LATAM). Comma means or.
    - `exclude_state` string: Leave out these states or provinces, by name or code. Comma means or.
    - `exclude_city` string: Leave out these cities. Comma means or.
    - `employees_min` string: Smallest number of employees, such as 50 and 500. A company counts when its size range overlaps yours. Accepts 100 or 1k.
    - `employees_max` string: Largest number of employees (same overlap rule).
    - `revenue_band` string: Yearly company revenue in US dollars, as bands. A comma means any of them.
    - `revenue_min` string: Smallest yearly revenue in US dollars; a company counts when its revenue range overlaps yours. Accepts 250k, 1.5M or 2B.
    - `revenue_max` string: Largest yearly revenue in US dollars (same overlap rule).
    - `near_place` string: People within a distance of a place. Give the place (near_place) as a city or postal code, such as Denver, Colorado, or as a latitude and longitude, plus a distance (radius) and a unit. radius_target says whether the person's own location or their company's location counts. Answers 422 with the header X-Argorant-Filter-Not-Ready while this filter is still being added to every record (GET /api/v1/people/filters says which filters are ready).
    - `near_lat` string: Latitude of the center, with near_lon and radius, instead of near_place.
    - `near_lon` string: Longitude of the center.
    - `radius` string: Distance around the place, 0.5 to 500.
    - `radius_unit` string: mi (default) or km.
    - `radius_target` string: person: where the person is based (default). company: where their company is based.
    - `gender` string: female or male, based on first name and country. Names used for both women and men are left out, so a gender filter finds fewer people than the same search without it. Not available for lending audiences. Answers 422 with the header X-Argorant-Filter-Not-Ready while this filter is still being added to every record (GET /api/v1/people/filters says which filters are ready).
    - `income_band` string: Typical yearly pay in US dollars for the person's job, seniority and country, from public salary statistics. It is the usual pay for that role, not the person's own salary. People whose job title does not tell the role are left out. Not available for lending audiences. Comma means or. Answers 422 with the header X-Argorant-Filter-Not-Ready while this filter is still being added to every record (GET /api/v1/people/filters says which filters are ready).
  - `limit` integer: Most rows (default 1,000). Above 50,000 the export becomes a batch of files, up to 500,000 rows.
  - `exclude_previously_exported` boolean: Leave out people you exported before (default true).
  - `include_phones` boolean: Add phone numbers, 10 credits each (default false, from the Pro plan).
  - `grades` string[]: The results to include, valid and catch_all (default both).
  - `email_when_done` boolean: Email you when the file is ready.

## Response `201`

Created

- Export
  - `job_id` integer: Export id.
  - `name` string, nullable: Your name for the file.
  - `status` 'queued' | 'processing' | 'done' | 'failed' | 'cancelled': Where the export is.
  - `progress_pct` integer, nullable: Percent done.
  - `limit` integer, nullable: Rows asked for.
  - `total_rows` integer, nullable: Rows in the file.
  - `verified_rows` integer, nullable: Rows whose email passed the check.
  - `no_email_rows` integer, nullable: Rows without an email.
  - `grade_counts` object, nullable: How many rows got each check result.
  - `downloadable` boolean: true when the CSV can be downloaded.
  - `include_phones` boolean: Whether phone numbers were asked for.
  - `exclude_previously_exported` boolean: Whether people exported before were left out.
  - `credits_charged` integer, nullable: Credits charged for this file.
  - `emails_billed` integer, nullable: Emails charged.
  - `phones_billed` integer, nullable: Phone numbers charged.
  - `error_message` string, nullable: Why it failed, in plain words.
  - `billing_note` string, nullable: How the file was charged, in one plain sentence.
  - `batch_id` integer, nullable: The batch this file belongs to, for exports above 50,000 rows.
  - `chunk_index` integer, nullable: Its place in the batch.
  - `filters` object: The filters of the export.
  - `created_at` string, date-time, nullable: When it was created.
  - `started_at` string, date-time, nullable: When it started.
  - `completed_at` string, date-time, nullable: When it finished.
  - `status_url` string, nullable: Path to check the export.
  - `download_url` string, nullable: Path of the CSV download once done.

## Other responses

- `400`: 400 Bad request. `invalid_request` when no filter was given.
- `401`: 401 Unauthorized. `unauthorized` when the API key is missing, wrong or revoked.
- `402`: 402 Payment required. `insufficient_credits` when the balance does not cover the file.
- `403`: 403 Forbidden. `scope_missing` when the key lacks argorant:create_exports; `permission_missing` when your workspace role may not export.
- `409`: 409 Conflict. `idempotency_conflict` when the Idempotency-Key was used with another body.
- `422`: 422 Validation error. `validation_error` when a field has the wrong type or is missing.
- `429`: 429 Too many requests. `daily_limit_reached` when 50,000 export rows a day per key are used up; `rate_limited` when too many requests this minute.

---

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