# Extend an assignment

**POST /api/v1/assignments/extend**

Extends an existing assignment based on the provided job ID. Sets a new end date
for bound coverage. If you attempt to extend after coverage has ended, or the
end date is invalid, the request will fail. Updating ``end_date`` on a bound
assignment via ``PUT`` is not supported; use this endpoint instead.

**Certificate of Insurance (COI) regeneration**: When extending coverage, COI PDFs
are regenerated asynchronously to reflect the new end date. The response returns
immediately with ``certificate_refresh_pending: true``, indicating that:

- The ``certificate`` URLs in the response point to the old PDFs (pre-regeneration)
- Fresh certificate URLs will be included in the ``assignment.extended``
  webhook, which is published after COI regeneration completes
- Fresh URLs can also be fetched via the API after background processing finishes

This async design ensures the API responds quickly without blocking for PDF generation.

## Servers
- Production server: https://api.1099policy.com (Production server)

## Parameters

### Body: application/json (object)

- **end_date** (integer(int64))
  New end date for the assignment, measured in seconds since the Unix epoch. Must be on or after the current end date and within one year of the effective date.

- **job_id** (string)
  The ID of the job associated with the assignment

- **send_email** (boolean)
  When true, send a coverage-extension notification email to the contractor. COI regeneration and webhook publication happen regardless of this flag.

## Responses
### 200
Assignment end date updated, or unchanged (no-op) when ``end_date`` matches the current value. COIs are always regenerated asynchronously, so the response includes ``certificate_refresh_pending: true`` to indicate that certificate URLs are stale and fresh URLs will be available in the webhook.

#### Body: application/json (object)
- **bind** ()
  Indicates whether to start the process of binding coverage, which includes notifying and subsequently charging the independent contractor for the premium amount due. Defaults to `true`. When false, 1099Policy does not notify or schedule a charge. Note that the independent contractor will not be issued coverage if bind is set to `false`.

- **certificates** (object)

- **contractor** (string)
  ID of the contractor.

- **coverage_type** (array[string])
  An array of coverage types that can include one or more of the following insurance coverage values: `general`, `professional` and `workers-comp`. If provided, coverage type is factored into the eligibility determination (i.e., does contractor have an active `workers-comp` policy, etc). Defaults to the coverage types of the most recent active policy if `coverage_type` is not provided.

- **created** (integer(int64))

- **effective_date** (integer(int64))
  The job assignment start date, measured in seconds since the Unix epoch.

- **eligible** (object)

- **end_date** (integer(int64))
  The projected job assignment end date, measured in seconds since the Unix epoch.

- **id** (string)

- **job** (string)
  ID of the job that the contractor intends to accept.

- **net_rate** (integer)
  The amount of money the 1099 contractor pays in premium per every $100 earned.

A positive integer representing the premium owed per $100 earned. The `net_rate` is stored in cents (e.g., 48 represents $0.48).

- **policy** (string)
  ID of the policy that you want attached to the assignment. Defaults to the most recent active policy with a matching job category code, work state and contractor home state.

### 400
Invalid input, voided or cancelled record, expired coverage, attempted shortening, or same end date when no-op is not allowed.

### 404
Job not found, or no assignment found for the associated job id.
