solarOS Organization API

Organization API

Create a project-contained Work Order

Creates a Work Order inside a required Project using an active Work Type. The Work Order Property is derived from the Project and submitted mismatches fail validation. Requires linking an existing unlinked WORK_ORDER Project Item or creating a limited inline Project Item in the same transaction. Scheduling fields are not writable. Requires Idempotency-Key and work_orders:write. notes is rejected: Work Order Notes was retired on 2026-10-27; send job instructions in description.

/api/v1/work-orders

Creates a Work Order inside a required Project using an active Work Type. The Work Order Property is derived from the Project and submitted mismatches fail validation. Requires linking an existing unlinked WORK_ORDER Project Item or creating a limited inline Project Item in the same transaction. Scheduling fields are not writable. Requires Idempotency-Key and work_orders:write. notes is rejected: Work Order Notes was retired on 2026-10-27; send job instructions in description.

Create a project-contained Work Order. Use an organization API key with work_orders:write. Check the response envelope and meta.requestId before triggering dependent workflow steps.

Required scopes

work_orders:writeIdempotency-Key required

Parameters

No path or query parameters.

Request body

objectrequired
FieldTypeDescription
projectIdrequiredstringOptional unless marked required.
workTypeIdrequiredstringOptional unless marked required.
titlerequiredstringOptional unless marked required.
descriptionstring | nullOptional unless marked required.
priorityLOW | MEDIUM | HIGH | URGENTOptional unless marked required.
statusNOT_READY_TO_SCHEDULE | READY_TO_SCHEDULE | BLOCKED | SCHEDULED | IN_PROGRESSOptional unless marked required.
estimatedHoursstring | number | nullOptional unless marked required.
propertyIdstring | nullOptional unless marked required.
projectItemIdstring | nullOptional unless marked required.
projectItemobjectOptional unless marked required.
projectItem.stageIdstring | nullOptional unless marked required.
projectItem.namestringOptional unless marked required.
projectItem.descriptionstring | nullOptional unless marked required.
projectItem.sortOrderintegerOptional unless marked required.
projectItem.isRequiredbooleanOptional unless marked required.
projectItem.isCustomerVisiblebooleanOptional unless marked required.
projectItem.customerFacingNamestring | nullOptional unless marked required.
customFieldsobjectField Values keyed by savedIdentity from GET /api/v1/schema.
externalReferences[]array<object>Optional unless marked required.
externalReferences[].externalSystemrequiredstringOptional unless marked required.
externalReferences[].externalObjectrequiredstringOptional unless marked required.
externalReferences[].externalIdrequiredstringOptional unless marked required.
externalReferences[].metadataobjectOptional unless marked required.
workOrderNumberstringOptional unless marked required.
createworkorderRequest
{
  "projectId": "project_123",
  "workTypeId": "work_type_123",
  "title": "Install PV array",
  "description": "Roof work and inverter installation.",
  "priority": "MEDIUM",
  "projectItem": {
    "name": "Install PV array",
    "isRequired": true
  }
}

Responses

201

Created Work Order envelope

#/components/schemas/OrgApiResourceEnvelope

400

Validation, Project Item, stage, or idempotency error

#/components/schemas/OrgApiError

401

Missing or invalid organization API key

#/components/schemas/OrgApiError

402

Organization billing access or an endpoint-specific business quota denied the request

#/components/schemas/OrgApiError

403

Missing required scope: work_orders:write

#/components/schemas/OrgApiError

404

Project, Work Type, Project Item, or Stage not found

#/components/schemas/OrgApiError

409

Idempotency or External Reference conflict

#/components/schemas/OrgApiError

429

Rate limit exceeded

#/components/schemas/OrgApiError

Errors

400 Validation, Project Item, stage, or idempotency error401 Missing or invalid organization API key402 Organization billing access or an endpoint-specific business quota denied the request403 Missing required scope: work_orders:write404 Project, Work Type, Project Item, or Stage not found409 Idempotency or External Reference conflict429 Rate limit exceeded

Static examples

curl -X POST "$SOLAROS_BASE_URL/api/v1/work-orders" \
  -H "Authorization: Bearer $SOLAROS_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $SOLAROS_IDEMPOTENCY_KEY" \
  --data '{"projectId":"project_123","workTypeId":"work_type_123","title":"Install PV array","description":"Roof work and inverter installation.","priority":"MEDIUM","projectItem":{"name":"Install PV array","isRequired":true}}'