Complete a Service Appointment
Transitions an in-progress appointment to COMPLETED. The optional body accepts completedAt and notes.
Transitions an in-progress appointment to COMPLETED. The optional body accepts completedAt and notes.
Complete a Service Appointment. Use an organization API key with service_appointments:complete. Check the response envelope and meta.requestId before triggering dependent workflow steps.
Required scopes
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| idrequired | path | string | Service Appointment identifier returned by the Organization API. |
Request body
| Field | Type | Description |
|---|---|---|
| completedAt | string | null | Optional unless marked required. |
| notes | string | null | Optional unless marked required. |
| reason | CUSTOMER_REQUEST | TECH_UNAVAILABLE | WEATHER | RESCHEDULED | NO_SHOW | OTHER | Optional unless marked required. |
{
"completedAt": "2026-08-13T20:05:00Z",
"notes": "Work completed."
}Responses
Complete action envelope
#/components/schemas/OrgApiActionEnvelope
Missing or invalid organization API key
#/components/schemas/OrgApiError
Organization billing access or an endpoint-specific business quota denied the request
#/components/schemas/OrgApiError
Missing required scope: service_appointments:complete
#/components/schemas/OrgApiError
Rate limit exceeded
#/components/schemas/OrgApiError
Errors
Static examples
curl -X POST "$SOLAROS_BASE_URL/api/v1/service-appointments/$SOLAROS_SERVICE_APPOINTMENT/complete" \
-H "Authorization: Bearer $SOLAROS_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $SOLAROS_IDEMPOTENCY_KEY" \
--data '{"completedAt":"2026-08-13T20:05:00Z","notes":"Work completed."}'