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.

application/json

Body

  • end_date integer(int64) Required

    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 Required

    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.

    Default value is true.

Responses

  • 200 application/json

    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.

    One of:
  • 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.

POST /api/v1/assignments/extend
curl \
 --request POST 'https://api.1099policy.com/api/v1/assignments/extend' \
 --header "Content-Type: application/json" \
 --data '{"job_id":"jb_jsb9KEcTpc","end_date":1735689600,"send_email":true}'
Request example
{
  "job_id": "jb_jsb9KEcTpc",
  "end_date": 1735689600,
  "send_email": true
}
Response examples (200)
{
  "bind": true,
  "certificates": {
    "gl_coi_pdf_url": "/bound-policies/prod/gl_coi_pl_wv23Q3lMc1_1691450123.pdf",
    "wc_coi_pdf_url": "/bound-policies/prod/wc_coi_pl_wv23Q3lMc1_1691420903.pdf"
  },
  "contractor": "cn_Ehb3bYa",
  "coverage_type": [
    "general",
    "workers-comp"
  ],
  "created": 1646818364,
  "effective_date": 1646818364,
  "eligible": {
    "message": "Contractor is pre-approved for insurance coverage.",
    "result": true
  },
  "end_date": 1678334737,
  "id": "string",
  "job": "jb_jsb9KEcTpc",
  "net_rate": 65,
  "policy": "pl_WzFRszJhoY"
}
{
  "contractor": "cn_Ehb3bYa",
  "coverage_type": [
    "general",
    "workers-comp"
  ],
  "created": 1646818364,
  "effective_date": 1646818364,
  "eligible": true,
  "end_date": 1678334737,
  "gl_net_rate": 20,
  "id": "string",
  "job": "jb_jsb9KEcTpc",
  "net_rate": 65,
  "quote_json": {
    "gl": {
      "net_rate": 20,
      "stamping_fee": null,
      "risk_purchasing_group_fee": null
    },
    "wc": {
      "net_rate": 45
    }
  },
  "wc_net_rate": 45
}