# campaign_outcome_unknown

- HTTP status: 409
- Retry: After Retry-After
- Execution: may have started
- Admin needed: no

**Campaign start or resume not confirmed.** A start or resume of this campaign was sent and its confirmation did not arrive, or it failed after it was sent. Dialling may have begun. The API never sends it again on a guess. If you sent an Idempotency-Key, this answer is stored under it and a retry with the same key returns it again; without a key, a retry is a new start or resume request, so check the campaign first.

## What it means

The API returns HTTP 409 with `error.code` set to `campaign_outcome_unknown`. The default message is: "The request was sent but its outcome is not confirmed yet. Check the campaign before trying again."

## Common causes

- A start or resume timed out or failed after it was sent.

## How to identify it

Check the response status (`409`) and `error.code` (`campaign_outcome_unknown`). Branch on `error.code`, not on the message text: messages can be reworded, codes do not change within v1. Log `error.request_id` (also sent as the `X-Request-Id` header) so support can find the request.

## How to fix it

- Wait `Retry-After` seconds, then retrieve the campaign: a `running` status means it started. Do not start or resume it again before you have checked.
- If it is not running and you want to try again, send the action again (with a NEW Idempotency-Key if you use keys): the campaign refuses a second dial of the same run, so recipients are not dialled twice.
- If `details.needs_support` is true, the outcome cannot be resolved automatically; contact support before acting.

## Retry guidance

Wait for the number of seconds in the `Retry-After` header. For a write, read the resource first to find out whether the change was applied before you send anything again.

## Did anything happen?

The work may have started before this error was returned. Do not assume nothing happened: read the resource (for a call, list calls filtered by `to` and `created_after`; for a campaign, retrieve it) before you send anything again. A charge may have been recorded for work that started; check the call or campaign before you act.

## Idempotency

With a key: stored under it, so a retry with the same key returns this answer again and sends nothing. Without a key nothing is stored and a retry is a new attempt. Either way, read the campaign state first; a new attempt is refused by the campaign if the run already dialled.

## Who can fix it

The developer who sends the request can fix it; no administrator action is normally needed.

## When to contact support

When `details.needs_support` is true, write to [support@relationsai.com](mailto:support@relationsai.com) with the request_id. See [Support](/resources/support) for what to include (the `request_id`, the time in UTC, the operation, and whether you used a test or live key) and what never to send (API keys, Authorization headers, webhook signing secrets, recording links, transcripts or customer data).

## Example error response

```json
{
  "error": {
    "code": "campaign_outcome_unknown",
    "message": "The request was sent but its outcome is not confirmed yet. Check the campaign before trying again.",
    "details": {
      "action": "start",
      "needs_support": false
    },
    "request_id": "req_hsbfd6flzkbvvuhxjb7repju",
    "retry": "after",
    "doc_url": "https://docs.relationsai.com/errors/campaign_outcome_unknown"
  }
}
```

## Operations that can return this error

- [`POST /campaigns/{campaign_id}/start`](/api/campaigns#start-a-campaign): Start a campaign
- [`POST /campaigns/{campaign_id}/resume`](/api/campaigns#resume-a-campaign): Resume a campaign

See all codes in the [error-code reference](/fundamentals/error-codes).
