> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://docs.usebridge.com/api/api-reference/services/v-2/update-service/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.usebridge.com/_mcp/server. # Update Service POST https://app.usebridge.com/api/services/v2/{id} Content-Type: application/json Updates an existing `Service` Reference: https://docs.usebridge.com/api/api-reference/services/v-2/update-service ## Authentication - `X-API-Key` header (required) — API Key authentication via header ## Servers - `https://app.usebridge.com` (Production, default) - `https://app.usebridge.xyz` (Sandbox) ## Request ### Path parameters - `id` (string, required) ### Body (application/json) This endpoint expects a ServiceUpdateV2Request. - `patientToken` (string, optional) - `dateOfService` (datetime, optional) — Full ISO8601 timestamp, including timezone - `serviceTypeId` (string, optional) - `location` (ServiceUpdateV2RequestLocation, optional) — Location of the Patient at the date of service, requires only the `state` value for telehealth - `externalId` (string, optional) - `providerId` (string, optional) - `priorAuthorizationNumber` (string, optional) - `responsibleParty` (enum, optional) - Allowed values: `PATIENT`, `INSURANCE` - `metadata` (ServiceUpdateV2RequestMetadata, optional) — Customizable object of string to string key-value dataAny modifications to this field will *overwrite* the previous value ## Response ### 200 - `id` (string, required) - `organizationId` (string, required) - `status` (enum, required) - Allowed values: `PENDING`, `BILLING`, `SETTLING`, `COMPLETE`, `TRIAGE`, `CANCELED`, `DENIED` - `createdAt` (datetime, required) - `serviceType` (ServiceUpdateV2ResponseServiceType, required) - `dateOfService` (datetime, required) - `patientId` (string, required) - `location` (ServiceUpdateV2ResponseLocation, required) — Location of the Patient at the date of service, requires only the `state` value for telehealth - `serviceEligibility` (ServiceUpdateV2ResponseServiceEligibility, required) - `coverageStatus` (enum, required) - Allowed values: `PENDING`, `REVALIDATING`, `VALID`, `INVALID_COVERAGE`, `INVALID_PROVIDER` - `provider` (ServiceUpdateV2ResponseProvider, required) - `payments` (list of ServiceUpdateV2ResponsePayment, required) - `responsibleParty` (enum, required) - Allowed values: `PATIENT`, `INSURANCE` - `patientResponsibility` (ServiceUpdateV2ResponsePatientResponsibility, required) - `tasks` (list of ServiceUpdateV2ResponseTask, required) - `externalId` (string, optional) - `noteId` (string, optional) - `claimStatus` (enum, optional) - Allowed values: `CREATED`, `IN_PROGRESS`, `PAID`, `DENIED` - `priorAuthorizationNumber` (string, optional) - `cancellationReason` (enum, optional) - Allowed values: `NO_SHOW` - `metadata` (ServiceUpdateV2ResponseMetadata, optional) — Customizable object of string to string key-value data ## Types ### ServiceUpdateV2RequestLocation - `state` (enum, required) — 2 letter US state code - Allowed values: `AL`, `AK`, `AZ`, `AR`, `CA`, `CO`, `CT`, `DE`, `DC`, `FL`, `GA`, `HI`, `ID`, `IL`, `IN`, `IA`, `KS`, `KY`, `LA`, `ME`, `MD`, `MA`, `MI`, `MN`, `MS`, `MO`, `MT`, `NE`, `NV`, `NH`, `NJ`, `NM`, `NY`, `NC`, `ND`, `OH`, `OK`, `OR`, `PA`, `RI`, `SC`, `SD`, `TN`, `TX`, `UT`, `VT`, `VA`, `WA`, `WV`, `WI`, `WY` - `line1` (string, optional) - `line2` (string, optional) - `city` (string, optional) - `postalCode` (string, optional) - `country` (enum, optional) - Allowed values: `US` ### ServiceUpdateV2RequestMetadata - `exampleKey` (string, optional) ### ServiceUpdateV2ResponseServiceType - `id` (string, required) - `name` (string, required) - `placeOfService` (enum, required) - Allowed values: `TELEHEALTH_HOME`, `TELEHEALTH_NOT_HOME`, `OFFICE` - `providerType` (enum, required) — [DEPRECATED] The first supported ProviderType, see new 'providerType' array - Allowed values: `MD`, `NP`, `DO`, `ND`, `AP`, `OT`, `LCSW`, `LMFT`, `LPC`, `PSYCH`, `RN`, `CN`, `CWC`, `CM`, `PA`, `RDN`, `PT` - `providerTypes` (list of enum, required) — All supported ProviderTypes - Allowed values: `MD`, `NP`, `DO`, `ND`, `AP`, `OT`, `LCSW`, `LMFT`, `LPC`, `PSYCH`, `RN`, `CN`, `CWC`, `CM`, `PA`, `RDN`, `PT` - `cost` (integer, required) - `noteFields` (list of string, required) - `conditionalPatientResponsibility` (boolean, required) - `selfPayCost` (integer, optional) ### ServiceUpdateV2ResponseLocation - `state` (enum, required) — 2 letter US state code - Allowed values: `AL`, `AK`, `AZ`, `AR`, `CA`, `CO`, `CT`, `DE`, `DC`, `FL`, `GA`, `HI`, `ID`, `IL`, `IN`, `IA`, `KS`, `KY`, `LA`, `ME`, `MD`, `MA`, `MI`, `MN`, `MS`, `MO`, `MT`, `NE`, `NV`, `NH`, `NJ`, `NM`, `NY`, `NC`, `ND`, `OH`, `OK`, `OR`, `PA`, `RI`, `SC`, `SD`, `TN`, `TX`, `UT`, `VT`, `VA`, `WA`, `WV`, `WI`, `WY` - `line1` (string, optional) - `line2` (string, optional) - `city` (string, optional) - `postalCode` (string, optional) - `country` (enum, optional) - Allowed values: `US` ### ServiceUpdateV2ResponseServiceEligibility - `id` (string, required) - `organizationId` (string, required) - `serviceTypeId` (string, required) - `dateOfService` (datetime, required) - `status` (enum, required) - Allowed values: `PENDING`, `UNINSURED`, `ELIGIBLE`, `INELIGIBLE`, `INEFFECTIVE` - `providers` (list of ServiceUpdateV2ResponseServiceEligibilityFieldProvider, required) - `policyIds` (list of string, required) - `state` (enum, required) — 2 letter US state code - Allowed values: `AL`, `AK`, `AZ`, `AR`, `CA`, `CO`, `CT`, `DE`, `DC`, `FL`, `GA`, `HI`, `ID`, `IL`, `IN`, `IA`, `KS`, `KY`, `LA`, `ME`, `MD`, `MA`, `MI`, `MN`, `MS`, `MO`, `MT`, `NE`, `NV`, `NH`, `NJ`, `NM`, `NY`, `NC`, `ND`, `OH`, `OK`, `OR`, `PA`, `RI`, `SC`, `SD`, `TN`, `TX`, `UT`, `VT`, `VA`, `WA`, `WV`, `WI`, `WY` - `validatedAt` (datetime, optional) — Timestamp this was executed - `patientResponsibility` (ServiceUpdateV2ResponseServiceEligibilityFieldPatientResponsibility, optional) — Describes the Patient Responsibility. All dollar values are in USD cents ($15 = 1500). The 'total' is the amount that the patient owes. The breakdown are in non-oop fields. The oop fields apply when the patient has hit (or will hit) their OOP limits. - `messages` (list of string, optional) - `clinicalInfo` (ServiceUpdateV2ResponseServiceEligibilityFieldClinicalInfo, optional) - `conditionalPatientResponsibilities` (list of ServiceUpdateV2ResponseServiceEligibilityFieldConditionalPatientResponsibility, optional) ### ServiceUpdateV2ResponseProvider - `id` (string, required) - `name` (string, required) - `type` (enum, required) - Allowed values: `MD`, `NP`, `DO`, `ND`, `AP`, `OT`, `LCSW`, `LMFT`, `LPC`, `PSYCH`, `RN`, `CN`, `CWC`, `CM`, `PA`, `RDN`, `PT` - `npi` (string, required) - `externalId` (string, optional) - `providerEligibilityEnabled` (boolean, optional) - `serviceEligibilityEnabled` (boolean, optional) ### ServiceUpdateV2ResponsePayment - `id` (string, required) - `createdAt` (datetime, required) - `serviceId` (string, required) - `paidAt` (datetime, required) - `transactionId` (string, required) - `type` (enum, required) - Allowed values: `PATIENT`, `ADJUSTMENT` - `amount` (integer, required) - `externalId` (string, optional) - `memo` (string, optional) ### ServiceUpdateV2ResponsePatientResponsibility - `amount` (ServiceUpdateV2ResponsePatientResponsibilityFieldAmount, optional) — The most-current patient responsibility, either estimate or finalized amounts - `status` (enum, optional) — The status of the `amount` value. `UNKNOWN` if this is not determinable, `ESTIMATE` until claims are settled, `FINALIZED` when the claims are settled. - Allowed values: `UNKNOWN`, `ESTIMATE`, `FINALIZED` - `paid` (integer, optional) — The amount (USD cents) of patient responsibility that has been paid, equal to the sum of all Payments. ### ServiceUpdateV2ResponseTask - `type` (enum, required) - Allowed values: `PATIENT_CONSENT`, `PATIENT_INSURANCE`, `PATIENT_ADDRESS`, `SERVICE_LOCATION`, `DATE_OF_SERVICE`, `DUPLICATE_SERVICE_TYPE`, `INVALID_INITIAL_SERVICE_TYPE`, `REPLACE_NOTE`, `UPDATE_NOTE`, `TRIAGE`, `COVERAGE`, `PRIOR_AUTHORIZATION`, `BILLING_TIME_LIMIT`, `PROVIDER_NOT_ENROLLED`, `NOTE_SIGNING_PROVIDER_MISMATCH`, `THERAPY_DURATION`, `MINIMUM_DURATION`, `MISSING_INITIATING_VISIT`, `MISSING_ASSESSMENT`, `MISSING_TIME_SPENT_MINUTES`, `PATIENT_CONSENT_EXPIRED`, `INVALID_DATE_RANGE`, `INSUFFICIENT_MONITORING_DATA`, `MISMATCHED_ICD10`, `BILLING_FREQUENCY_LIMIT`, `PATIENT_RECONSENT`, `PROVIDER_CHANGED` - `inReviewAt` (datetime, optional) - `ready` (boolean, optional) - `memo` (string, optional) ### ServiceUpdateV2ResponseMetadata - `exampleKey` (string, optional) ### ServiceUpdateV2ResponseServiceEligibilityFieldProvider - `id` (string, required) - `name` (string, required) - `type` (enum, required) - Allowed values: `MD`, `NP`, `DO`, `ND`, `AP`, `OT`, `LCSW`, `LMFT`, `LPC`, `PSYCH`, `RN`, `CN`, `CWC`, `CM`, `PA`, `RDN`, `PT` - `npi` (string, required) - `externalId` (string, optional) - `providerEligibilityEnabled` (boolean, optional) - `serviceEligibilityEnabled` (boolean, optional) ### ServiceUpdateV2ResponseServiceEligibilityFieldPatientResponsibility - `total` (integer, required) — The total amount owed by the Patient (sum of contributions and OOP-waived amounts), value is in USD cents ($15 = 1500) - `fallback` (integer, required) — The fallback amount - `deductible` (integer, required) — The deductible contribution - `coinsurance` (integer, required) — The coinsurance contribution - `coinsurancePercent` (double, required) — The coinsurance contribution as a percentage (15% = 0.15) - `copayment` (integer, required) — The copayment contribution - `oopFallback` (integer, required) — Amount of fallback waived due to OOP limits - `oopCopayment` (integer, required) — Amount of copayment waived due to OOP limits - `oopCoinsurance` (integer, required) — Amount of coinsurance waived due to OOP limits - `oopDeductible` (integer, required) — Amount of deductible waived due to OOP limits - `deductibleType` (enum, optional) - Allowed values: `INDIVIDUAL`, `FAMILY` ### ServiceUpdateV2ResponseServiceEligibilityFieldClinicalInfo - `diagnoses` (list of string, optional) ### ServiceUpdateV2ResponseServiceEligibilityFieldConditionalPatientResponsibility - `conditions` (list of ServiceUpdateV2ResponseServiceEligibilityFieldConditionalPatientResponsibilitiesElementCondition, required) - `limit` (ServiceUpdateV2ResponseServiceEligibilityFieldConditionalPatientResponsibilitiesElementLimit, required) - `patientResponsibility` (ServiceUpdateV2ResponseServiceEligibilityFieldConditionalPatientResponsibilitiesElementPatientResponsibility, required) — Describes the Patient Responsibility. All dollar values are in USD cents ($15 = 1500). The 'total' is the amount that the patient owes. The breakdown are in non-oop fields. The oop fields apply when the patient has hit (or will hit) their OOP limits. ### ServiceUpdateV2ResponsePatientResponsibilityFieldAmount - `total` (integer, required) — The total amount owed by the Patient (sum of contributions and OOP-waived amounts), value is in USD cents ($15 = 1500) - `fallback` (integer, required) — The fallback amount - `deductible` (integer, required) — The deductible contribution - `coinsurance` (integer, required) — The coinsurance contribution - `coinsurancePercent` (double, required) — The coinsurance contribution as a percentage (15% = 0.15) - `copayment` (integer, required) — The copayment contribution - `oopFallback` (integer, required) — Amount of fallback waived due to OOP limits - `oopCopayment` (integer, required) — Amount of copayment waived due to OOP limits - `oopCoinsurance` (integer, required) — Amount of coinsurance waived due to OOP limits - `oopDeductible` (integer, required) — Amount of deductible waived due to OOP limits - `deductibleType` (enum, optional) - Allowed values: `INDIVIDUAL`, `FAMILY` ### ServiceUpdateV2ResponseServiceEligibilityFieldConditionalPatientResponsibilitiesElementCondition - `diagnoses` (list of string, optional) ### ServiceUpdateV2ResponseServiceEligibilityFieldConditionalPatientResponsibilitiesElementLimit - `type` (enum, required) - Allowed values: `UNKNOWN`, `UNLIMITED`, `LIMITED` - `value` (integer, optional) - `metric` (enum, optional) - Allowed values: `VISIT`, `UNITS` - `period` (enum, optional) - Allowed values: `ANNUAL`, `BENEFIT_YEAR`, `LIFETIME` - `units` (ServiceUpdateV2ResponseServiceEligibilityFieldConditionalPatientResponsibilitiesElementLimitFieldUnits, optional) ### ServiceUpdateV2ResponseServiceEligibilityFieldConditionalPatientResponsibilitiesElementPatientResponsibility - `total` (integer, required) — The total amount owed by the Patient (sum of contributions and OOP-waived amounts), value is in USD cents ($15 = 1500) - `fallback` (integer, required) — The fallback amount - `deductible` (integer, required) — The deductible contribution - `coinsurance` (integer, required) — The coinsurance contribution - `coinsurancePercent` (double, required) — The coinsurance contribution as a percentage (15% = 0.15) - `copayment` (integer, required) — The copayment contribution - `oopFallback` (integer, required) — Amount of fallback waived due to OOP limits - `oopCopayment` (integer, required) — Amount of copayment waived due to OOP limits - `oopCoinsurance` (integer, required) — Amount of coinsurance waived due to OOP limits - `oopDeductible` (integer, required) — Amount of deductible waived due to OOP limits - `deductibleType` (enum, optional) - Allowed values: `INDIVIDUAL`, `FAMILY` ### ServiceUpdateV2ResponseServiceEligibilityFieldConditionalPatientResponsibilitiesElementLimitFieldUnits - `minutes` (integer, required) — Conversion rate from units to minutes - `min` (integer, required) — Minimum number of units - `max` (integer, required) — Maximum number of units ## Examples **Request** ```json {} ``` **Response** ```json { "id": "id", "organizationId": "organizationId", "status": "PENDING", "createdAt": "2024-01-15T09:30:00Z", "serviceType": { "id": "id", "name": "name", "placeOfService": "TELEHEALTH_HOME", "providerType": "MD", "providerTypes": [ "MD", "MD" ], "cost": 1, "noteFields": [ "noteFields", "noteFields" ], "conditionalPatientResponsibility": true, "selfPayCost": 1 }, "dateOfService": "2024-01-15T09:30:00Z", "patientId": "patientId", "location": { "state": "AL", "line1": "line1", "line2": "line2", "city": "city", "postalCode": "postalCode", "country": "US" }, "serviceEligibility": { "id": "id", "organizationId": "organizationId", "serviceTypeId": "serviceTypeId", "dateOfService": "2024-01-15T09:30:00Z", "status": "PENDING", "providers": [ { "id": "id", "name": "name", "type": "MD", "npi": "npi", "externalId": "externalId", "providerEligibilityEnabled": true, "serviceEligibilityEnabled": true }, { "id": "id", "name": "name", "type": "MD", "npi": "npi", "externalId": "externalId", "providerEligibilityEnabled": true, "serviceEligibilityEnabled": true } ], "policyIds": [ "policyIds", "policyIds" ], "state": "AL", "validatedAt": "2024-01-15T09:30:00Z", "patientResponsibility": { "total": 1, "fallback": 1, "deductible": 1, "coinsurance": 1, "coinsurancePercent": 1.1, "copayment": 1, "oopFallback": 1, "oopCopayment": 1, "oopCoinsurance": 1, "oopDeductible": 1, "deductibleType": "INDIVIDUAL" }, "messages": [ "messages", "messages" ], "clinicalInfo": { "diagnoses": [ "diagnoses", "diagnoses" ] }, "conditionalPatientResponsibilities": [ { "conditions": [ { "diagnoses": [ "diagnoses", "diagnoses" ] }, { "diagnoses": [ "diagnoses", "diagnoses" ] } ], "limit": { "type": "UNKNOWN", "value": 1, "metric": "VISIT", "period": "ANNUAL", "units": { "minutes": 1, "min": 1, "max": 1 } }, "patientResponsibility": { "total": 1, "fallback": 1, "deductible": 1, "coinsurance": 1, "coinsurancePercent": 1.1, "copayment": 1, "oopFallback": 1, "oopCopayment": 1, "oopCoinsurance": 1, "oopDeductible": 1, "deductibleType": "INDIVIDUAL" } }, { "conditions": [ { "diagnoses": [ "diagnoses", "diagnoses" ] }, { "diagnoses": [ "diagnoses", "diagnoses" ] } ], "limit": { "type": "UNKNOWN", "value": 1, "metric": "VISIT", "period": "ANNUAL", "units": { "minutes": 1, "min": 1, "max": 1 } }, "patientResponsibility": { "total": 1, "fallback": 1, "deductible": 1, "coinsurance": 1, "coinsurancePercent": 1.1, "copayment": 1, "oopFallback": 1, "oopCopayment": 1, "oopCoinsurance": 1, "oopDeductible": 1, "deductibleType": "INDIVIDUAL" } } ] }, "coverageStatus": "PENDING", "provider": { "id": "id", "name": "name", "type": "MD", "npi": "npi", "externalId": "externalId", "providerEligibilityEnabled": true, "serviceEligibilityEnabled": true }, "payments": [ { "id": "id", "createdAt": "2024-01-15T09:30:00Z", "serviceId": "serviceId", "paidAt": "2024-01-15T09:30:00Z", "transactionId": "transactionId", "type": "PATIENT", "amount": 1, "externalId": "externalId", "memo": "memo" }, { "id": "id", "createdAt": "2024-01-15T09:30:00Z", "serviceId": "serviceId", "paidAt": "2024-01-15T09:30:00Z", "transactionId": "transactionId", "type": "PATIENT", "amount": 1, "externalId": "externalId", "memo": "memo" } ], "responsibleParty": "PATIENT", "patientResponsibility": { "amount": { "total": 1, "fallback": 1, "deductible": 1, "coinsurance": 1, "coinsurancePercent": 1.1, "copayment": 1, "oopFallback": 1, "oopCopayment": 1, "oopCoinsurance": 1, "oopDeductible": 1, "deductibleType": "INDIVIDUAL" }, "status": "UNKNOWN", "paid": 1 }, "tasks": [ { "type": "PATIENT_CONSENT", "inReviewAt": "2024-01-15T09:30:00Z", "ready": true, "memo": "memo" }, { "type": "PATIENT_CONSENT", "inReviewAt": "2024-01-15T09:30:00Z", "ready": true, "memo": "memo" } ], "externalId": "externalId", "noteId": "noteId", "claimStatus": "CREATED", "priorAuthorizationNumber": "priorAuthorizationNumber", "cancellationReason": "NO_SHOW", "metadata": { "exampleKey": "exampleKey" } } ``` **SDK Code** ```python import requests url = "https://app.usebridge.com/api/services/v2/id" payload = {} headers = { "X-API-Key": "", "Content-Type": "application/json" } response = requests.post(url, json=payload, headers=headers) print(response.json()) ``` ```javascript const url = 'https://app.usebridge.com/api/services/v2/id'; const options = { method: 'POST', headers: {'X-API-Key': '', 'Content-Type': 'application/json'}, body: '{}' }; try { const response = await fetch(url, options); const data = await response.json(); console.log(data); } catch (error) { console.error(error); } ``` ```go package main import ( "fmt" "strings" "net/http" "io" ) func main() { url := "https://app.usebridge.com/api/services/v2/id" payload := strings.NewReader("{}") req, _ := http.NewRequest("POST", url, payload) req.Header.Add("X-API-Key", "") req.Header.Add("Content-Type", "application/json") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` ```ruby require 'uri' require 'net/http' url = URI("https://app.usebridge.com/api/services/v2/id") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Post.new(url) request["X-API-Key"] = '' request["Content-Type"] = 'application/json' request.body = "{}" response = http.request(request) puts response.read_body ``` ```java import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.post("https://app.usebridge.com/api/services/v2/id") .header("X-API-Key", "") .header("Content-Type", "application/json") .body("{}") .asString(); ``` ```php request('POST', 'https://app.usebridge.com/api/services/v2/id', [ 'body' => '{}', 'headers' => [ 'Content-Type' => 'application/json', 'X-API-Key' => '', ], ]); echo $response->getBody(); ``` ```csharp using RestSharp; var client = new RestClient("https://app.usebridge.com/api/services/v2/id"); var request = new RestRequest(Method.POST); request.AddHeader("X-API-Key", ""); request.AddHeader("Content-Type", "application/json"); request.AddParameter("application/json", "{}", ParameterType.RequestBody); IRestResponse response = client.Execute(request); ``` ```swift import Foundation let headers = [ "X-API-Key": "", "Content-Type": "application/json" ] let parameters = [] as [String : Any] let postData = JSONSerialization.data(withJSONObject: parameters, options: []) let request = NSMutableURLRequest(url: NSURL(string: "https://app.usebridge.com/api/services/v2/id")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "POST" request.allHTTPHeaderFields = headers request.httpBody = postData as Data let session = URLSession.shared let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in if (error != nil) { print(error as Any) } else { let httpResponse = response as? HTTPURLResponse print(httpResponse) } }) dataTask.resume() ```