---
title: "Retry a contact import"
description: "Re-run a failed import from the rows stored on the job, without uploading them again. `POST /api/v1/contacts/imports/{id}/retry`"
url: https://www.unitpost.com/docs/platform/post-contacts-imports-id-retry
section: "Platform API reference"
updated: 2026-10-13
---
# Retry a contact import

`POST /api/v1/contacts/imports/{id}/retry`

Re-run a `failed` import from the rows stored on the job, without uploading them again. Rows that landed in the failed run are skipped as duplicates, so a retry only adds what is missing. Any other state is a `409` (a second retry while the first runs finds the job `pending`), and so is a job whose rows are no longer kept: start a new import. Same rate limit as starting an import. No body; track it with [Retrieve a contact import](https://www.unitpost.com/docs/platform/get-contacts-imports-id). Requires the `contacts:write` capability.

## Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `id` | path | string | yes | — |

## Response fields (202)

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `object` | string | yes | — |
| `id` | string | yes | — |
| `status` | enum | yes | One of: `pending`, `processing`, `completed`, `failed`, `canceled`. |
| `total` | number | yes | — |
| `imported` | number | yes | — |
| `skipped` | number | yes | — |
| `failed` | number | yes | — |
| `invalid` | object[] | yes | — |
| `error` | string \| null | yes | — |
| `created_at` | string | yes | — |
| `updated_at` | string | yes | — |

## Responses

| Status | Description |
| --- | --- |
| 202 | Accepted; the import job runs again. |
| 400 | The body isn't JSON. |
| 401 | Missing or invalid API key. |
| 403 | Insufficient scope. |
| 404 | Import job not found. |
| 409 | The import isn't `failed`, or its rows are no longer kept. |
| 422 | A body key (this operation takes none). |
| 429 | Too many imports started this hour (`Retry-After`). |
| 502 | The importer could not be reached; the job is `failed` again. |

## Example request

```bash
curl -X POST 'https://www.unitpost.com/api/v1/contacts/imports/imp_123/retry' \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -H 'User-Agent: my-app/1.0'
```

## Example response (202)

```json
{
  "object": "contact_import",
  "id": "id_123",
  "status": "pending",
  "total": 1,
  "imported": 0,
  "skipped": 0,
  "failed": 0,
  "invalid": [
    {
      "row": 0,
      "reason": "string"
    }
  ],
  "error": "string",
  "created_at": "2026-01-01T00:00:00.000Z",
  "updated_at": "2026-01-01T00:00:00.000Z"
}
```

## Links

- HTML reference (with Node.js, Python, Ruby, PHP, Laravel, Go, Java, Rust, .NET and CLI examples): https://www.unitpost.com/docs/platform/post-contacts-imports-id-retry
- OpenAPI 3.1 (full schemas): https://www.unitpost.com/api/v1/openapi.json
