This integration applies to licensed clinicians and healthcare contractors scheduled for shifts via Nursa. Employee or staff nurse engagements are out of scope.
1. Overview
Connect Nursa’s shift-based staffing marketplace to 1099Policy so that every posted shift for a contractor is insured or has a validated Certificate of Insurance (COI) before the engagement begins.
You can:
- Bind fractional, on-demand coverage for each Nursa shift.
- Automatically validate or upload COIs.
- Sync compliance states using 1099Policy webhooks (
policy.*,certificate.*). - Map shift pay to 1099Policy
job.wage(in cents) andwage_type. - Store Nursa IDs (e.g.,
facilityId,shiftId,clinicianId) incustom_metadatafor reconciliation.
2. Integration Timing & Trigger
Coverage should activate when a shift is created or a clinician is scheduled, ensuring the policy binds before any work begins.
- Primary trigger:
shift.createdorrequest.submitted(clinician scheduled) - Alternative triggers:
shift.reported,shift.completed - Delivery method: Nursa Webhooks
- Required data:
facilityId,shiftId,licenseType,from,to,description,bonus
3. Core Concepts
This table shows how Nursa shift, clinician, and report objects map to 1099Policy resources to maintain coverage and COI validation through each scheduled shift.
| Nursa Object | 1099Policy Resource | Description |
|---|---|---|
| Shift (job offer) | Job + Assignment | Represents the work scope, compensation, and coverage window |
| Clinician (contractor) | Contractor | Represents the insured individual |
| Shift Report / Invoice | Certificate or Invoice | Used for COI validation or actual remuneration |
| Identifiers (shiftId, facilityId, clinicianId) | custom_metadata.* | Used for reconciliation only |
4. End-to-End Implementation
Follow these steps to automate Nursa → 1099Policy integration.
4.1 Create Contractor
Each clinician must exist in 1099Policy before quoting or assigning coverage. Every Contractor must include a unique contact.email. Generate a proxy email if Nursa does not expose one (e.g., <clinicianId>@relay.yourdomain.com).
| Nursa Field | 1099Policy Contractor | Notes |
|---|---|---|
clinicianId | custom_metadata.nursa_clinician_id | Reconciliation key |
first_name, last_name | contact.first_name, contact.last_name | Required |
email | contact.email | Required; use proxy if hidden |
country | address.country | Optional |
region | address.region | Optional |
Source: Nursa (REST)
GET https://api.nursa.com/v2/clinicians/{clinicianId}
Authorization: Bearer YOUR_NURSA_TOKEN
Destination: 1099Policy (POST /contractors)
POST https://api.1099policy.com/api/v1/contractors
Authorization: Bearer YOUR_1099POLICY_TOKEN
Content-Type: application/json
{
"contact": {
"first_name": "Jane",
"last_name": "Doe",
"email": "cl_123456@relay.yourdomain.com"
},
"address": {
"country": "US",
"region": "CA"
},
"custom_metadata": {
"nursa_clinician_id": "cl_123456"
}
}
4.2 Create Job
Create a Job for each posted shift to capture the scope, compensation, and jurisdiction, and store Nursa identifiers in custom_metadata for reconciliation.
| 1099Policy Job Field | Nursa Source | Notes |
|---|---|---|
name | Shift description | Descriptive title |
description | Shift details | Optional |
entity | Your internal client/account ID | Must exist in 1099Policy |
category_code | "HEALTHCARE_CONTRACTOR" | Fixed category |
wage (cents) | Shift pay × 100 | Required |
wage_type | "flatfee" | Fixed |
region | Shift location | Defaults to facility region |
custom_metadata.nursa_shift_id | Shift ID | Required |
custom_metadata.nursa_facility_id | Facility ID | Optional |
custom_metadata.nursa_license_type | License Type | Optional |
Destination: 1099Policy (POST /jobs)
POST https://api.1099policy.com/api/v1/jobs
Authorization: Bearer YOUR_1099POLICY_TOKEN
Content-Type: application/json
{
"name": "RN Shift – Facility P-123456",
"description": "3-hour RN shift with 15m break",
"entity": "en_12AbC3",
"category_code": "HEALTHCARE_CONTRACTOR",
"wage": 30000,
"wage_type": "flatfee",
"region": "US",
"custom_metadata": {
"nursa_shift_id": "sh_987654",
"nursa_facility_id": "P-123456",
"nursa_license_type": "RN"
}
}
4.3 Create Quote
Quotes define the coverage window and insurance requirements for each shift.
Destination: 1099Policy (POST /quotes)
POST https://api.1099policy.com/api/v1/quotes
Authorization: Bearer YOUR_1099POLICY_TOKEN
Content-Type: application/json
{
"contractor": "cn_abcdefgh",
"job": "jb_xyz123",
"coverage_type": ["general","professional"],
"effective_date": 1700000000,
"end_date": 1700003600,
"custom_metadata": {
"nursa_shift_id": "sh_987654"
}
}
4.4 Create Application Session
Use an Apply Session once per clinician to complete the opt-in flow. Contractors will confirm coverage binding before their first shift.
Destination: 1099Policy (POST /apply/sessions)
POST https://api.1099policy.com/api/v1/apply/sessions
Authorization: Bearer YOUR_1099POLICY_TOKEN
Content-Type: application/json
{
"quote": "qt_ijkl456",
"success_url": "https://dashboard.yourapp.com/shifts/sh_987654?status=active",
"cancel_url": "https://dashboard.yourapp.com/shifts/sh_987654?status=canceled",
"custom_metadata": {
"nursa_shift_id": "sh_987654"
}
}
4.5 Create Assignment
Create Assignments for returning contractors who already opted in to automatically activate coverage for new shifts.
Destination: 1099Policy (POST /assignments)
POST https://api.1099policy.com/api/v1/assignments
Authorization: Bearer YOUR_1099POLICY_TOKEN
Content-Type: application/json
{
"contractor": "cn_abcdefgh",
"job": "jb_xyz123",
"effective_date": 1700000000,
"end_date": 1700003600,
"coverage_type": ["general","professional"],
"custom_metadata": {
"nursa_shift_id": "sh_987654"
}
}
4.6 Upload Certificate (BYO-COI)
This independent flow supports contractors who provide their own coverage. Upload the COI for validation and compliance tracking.
Destination: 1099Policy (POST /files/certificates)
(multipart upload)
Fields:
certificate=@file.pdfcontractor=cn_abcdefghcustom_metadata[nursa_shift_id]=sh_987654
4.7 Record Invoice (Optional)
If the final pay differs from the shift estimate, record it for reconciliation and audit.
Destination: 1099Policy (POST /invoices)
POST https://api.1099policy.com/api/v1/invoices
Authorization: Bearer YOUR_1099POLICY_TOKEN
Content-Type: application/json
{
"contractor": "cn_abcdefgh",
"job": "jb_xyz123",
"gross_pay": 35000,
"paycycle_startdate": 1700000000,
"paycycle_enddate": 1700003600
}
5. Webhooks
Use Nursa and 1099Policy webhooks to sync shift creation, completion, and coverage events.
| Source | Event | Action |
|---|---|---|
| Nursa | shift.created | Create Job + Quote in 1099Policy |
| Nursa | shift.reported | Record invoice |
| 1099Policy | policy.active | Mark shift insured |
| 1099Policy | policy.canceled / policy.expired | Flag coverage issue |
| 1099Policy | certificate.validated | Mark COI valid |
| 1099Policy | certificate.flagged | Manual review required |
6. Testing Checklist
- Clinician (contractor) exists in 1099Policy with valid or proxy email
- Job created with accurate wage and identifiers
- Quote created with coverage window
- Application Session completes and binds coverage
- Assignment aligns to shift duration
- Optional COI upload validated
- Optional invoice recorded
- Webhooks idempotent and verified
7. References
- Nursa API: https://docs.nursa.com
- Shifts Guide: Integration Guideline / Shifts
- Shift Reports: Integration Guideline / Shift Reports

