---
title: "Submit Job"
method: POST
path: "/email_enrichment/jobs"
tags: ["email_enrichment"]
---

# Submit Job

`POST /email_enrichment/jobs`

## Request

- Base URL: `https://api.harmonic.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.harmonic.ai/email_enrichment/jobs`
- Auth: none declared
- TypeScript: <https://skmtc.dev/harmonic/apis/harmonic-ai-public-api/docs/email_enrichment/jobs/post.ts> (a function with typed inputs; its response is checked against the schema)

Submit a bulk email enrichment job.

Accepts exactly one of `person_linkedin_urls` or `person_urns`.
Returns 202 with the created job_id and a list of any people that
were dropped at submit time (with reasons). Returns 422 when no
submitted people are eligible for enrichment, and 429 when the
request requires more enrichment credits than remain in your monthly
quota.

With `allow_re_enrichment`, people who already have an email stay
eligible and enrichment re-runs for them, adding any newly found
addresses to the profile; the 30-day cooldown still applies.

## Request body

- JobRequest: Submit a bulk email enrichment job. Exactly one of `person_linkedin_urls` or `person_urns` must be set. LinkedIn URLs and URNs are peer alternatives — both resolve to the same internal person_id.
  - `person_linkedin_urls` string[], nullable
  - `person_urns` string[], nullable
  - `allow_re_enrichment` boolean: When true, people who already have an email are not dropped as ALREADY_HAS_EMAIL; enrichment re-runs for them and any newly found addresses are added to the profile. The 30-day RECENTLY_ATTEMPTED cooldown still applies.

## Response `202`

Successful Response

- JobSubmitResponse
  - `job_id` string, uuid, required
  - `status` 'PENDING' | 'IN_PROGRESS' | 'COMPLETED' | 'FAILED', required
  - `accepted_count` integer, required
  - `dropped` DroppedPerson[]
    - `submitted_identifier` string, required
    - `reason` 'NOT_FOUND' | 'INVALID_URL' | 'ALREADY_HAS_EMAIL' | 'RECENTLY_ATTEMPTED', required
  - `monthly_remaining` integer, required
  - `created_at` string, required

## Other responses

- `422`: None of the submitted people are eligible for enrichment. See `dropped` for the reason each was excluded.
- `429`: The request requires more enrichment credits than remain in your monthly quota. Submit fewer people or wait until your quota resets.

## Changes

- **2026-09-11** `0e45fbf63024`: 1 info
  - added the new optional request property `allow_re_enrichment`

[Operation history](https://skmtc.dev/harmonic/apis/harmonic-ai-public-api/changes/email_enrichment/jobs/post.md)

---

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