> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.joincandidhealth.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.joincandidhealth.com/_mcp/server.

# Hard delete rates

POST https://api.joincandidhealth.com/api/fee-schedules/v3/hard-delete
Content-Type: application/json

Hard deletes rates from the system that match the provided dimensions.  This is a destructive operation and cannot be undone.  If an empty dimensions object is provided, all rates will be hard deleted.  The maximum number of rates this API will delete at a time is 10000.  Returns the number of rates deleted and if that number is the maximum, the caller should call this API again to continue deleting rates.

Reference: https://docs.joincandidhealth.com/api-reference/fee-schedules/v-3/hard-delete-rates

## Authentication

- OAuth2 — send the obtained token as `Authorization: Bearer <token>`

## Servers

- `https://api.joincandidhealth.com` (Production, default)
- `https://api-staging.joincandidhealth.com` (Staging)
- `https://sandbox-api.joincandidhealth.com` (CandidSandbox)
- `https://staging-api.joincandidhealth.com` (CandidStaging)
- `http://localhost:5050` (Local)

## Request

### Body (application/json)

This endpoint expects an OptionalDimensions.

- `states` (set of enum, required)
  - Allowed values: `AA`, `AE`, `AP`, `AL`, `AK`, `AS`, `AZ`, `AR`, `CA`, `CO`, `CT`, `DC`, `DE`, `FL`, `FM`, `GA`, `GU`, `HI`, `ID`, `IL`, `IN`, `IA`, `KS`, `KY`, `LA`, `ME`, `MD`, `MA`, `MH`, `MI`, `MN`, `MP`, `MS`, `MO`, `MT`, `NE`, `NV`, `NH`, `NJ`, `NM`, `NY`, `NC`, `ND`, `OH`, `OK`, `OR`, `PA`, `PR`, `PW`, `RI`, `SC`, `SD`, `TN`, `TX`, `UT`, `VI`, `VT`, `VA`, `WA`, `WV`, `WI`, `WY`, `FC`
- `zip_codes` (set of string, required)
- `license_types` (set of enum, required)
  - Allowed values: `MD`, `NP`, `PA`, `LMFT`, `LCPC`, `LCSW`, `PMHNP`, `FNP`, `LPCC`, `DO`, `RD`, `SLP`, `APRN`, `LPC`, `PHD`, `PSYD`, `LMSW`, `LMHC`, `OTHER_MASTERS`, `BCBA`, `UNKNOWN`, `RPH`, `PHT`, `LAC`, `LMT`, `DC`, `ND`, `MA`, `PT`, `IBCLC`, `RN`, `DPT`, `LCMHC`, `CNM`, `RNFA`, `ACSW`, `APC`, `BCABA`, `BHA`, `OD`, `DPM`, `DA`, `DDS`, `DEH`, `DMD`, `PTA`, `LCADC`, `LCAT`, `LCMHCS`, `LCMHCA`, `LCSWA`, `LICSW`, `LISW`, `LMFTS`, `LMFTA`, `LPCI`, `LSCSW`, `MHCA`, `MHT`, `RBT`, `RCSWI`, `RHMCI`, `LPN`, `OTD`, `OMS`, `MFTA`, `APCC`, `DNP`, `AGNPBC`, `ANP`, `FNPPP`, `LCSWR`, `ALC`, `RMFTI`, `LAMFT`, `LPCA`, `LSWI`, `CSW`, `CPC`, `LGMFT`, `LLPC`, `PLPC`, `PLMFT`, `LMHCA`, `CIT`, `CT`, `MFT`, `LSW`, `PLMHP`, `PCMSW`, `LMHP`, `OTR/L`, `RPA`, `COTA`, `CRNP`, `SLP-CF`, `NP-C`, `PA-C`, `AMFT`, `CDN`, `CGC`, `CNS`, `MDPHD`, `AuD`, `ATC`, `LAT`, `OTA`, `LSSP`, `SLPA`, `EdD`, `SWT`, `IMFT`
- `facility_type_codes` (set of enum, required)
  - Allowed values: `01`, `02`, `03`, `04`, `05`, `06`, `07`, `08`, `09`, `10`, `11`, `12`, `13`, `14`, `15`, `16`, `17`, `18`, `19`, `20`, `21`, `22`, `23`, `24`, `25`, `26`, `31`, `32`, `33`, `34`, `41`, `42`, `49`, `50`, `51`, `52`, `53`, `54`, `55`, `56`, `57`, `58`, `60`, `61`, `62`, `65`, `71`, `72`, `81`, `99`
- `network_types` (set of enum, required)
  - Allowed values: `12`, `13`, `14`, `15`, `16`, `17`, `AM`, `CH`, `DS`, `HM`, `LM`, `MA`, `MB`, `MC`, `OF`, `TV`, `VA`, `WC`, `ZZ`, `CI`, `BL`
- `payer_plan_group_ids` (set of UUID, required)
- `modifiers` (set of enum, required)
  - Allowed values: `AV`, `AU`, `AW`, `AY`, `07`, `08`, `09`, `10`, `11`, `12`, `13`, `14`, `15`, `16`, `22`, `23`, `24`, `25`, `26`, `27`, `28`, `32`, `33`, `47`, `50`, `51`, `52`, `53`, `54`, `55`, `56`, `57`, `58`, `59`, `62`, `63`, `66`, `73`, `74`, `76`, `77`, `78`, `79`, `80`, `81`, `82`, `90`, `91`, `92`, `93`, `95`, `96`, `97`, `99`, `A1`, `A2`, `A3`, `A4`, `A5`, `A6`, `A7`, `A8`, `A9`, `AA`, `AB`, `AD`, `AE`, `AF`, `AG`, `AH`, `AI`, `AJ`, `AK`, `AM`, `AO`, `AP`, `AQ`, `AR`, `AS`, `AT`, `AZ`, `BA`, `BL`, `BO`, `BP`, `BR`, `BU`, `CA`, `CB`, `CC`, `CD`, `CE`, `CF`, `CG`, `CH`, `CI`, `CJ`, `CK`, `CL`, `CM`, `CN`, `CR`, `CS`, `CT`, `CO`, `CQ`, `DA`, `E1`, `E2`, `E3`, `E4`, `EA`, `EB`, `EC`, `ED`, `EE`, `EJ`, `EM`, `EP`, `ER`, `ET`, `EV`, `EX`, `EY`, `F1`, `F2`, `F3`, `F4`, `F5`, `F6`, `F7`, `F8`, `F9`, `FA`, `FB`, `FC`, `FP`, `FQ`, `FR`, `FS`, `FT`, `FX`, `FY`, `G0`, `G1`, `G2`, `G3`, `G4`, `G5`, `G6`, `G7`, `G8`, `G9`, `GA`, `GB`, `GC`, `GE`, `GF`, `GG`, `GH`, `GJ`, `GK`, `GL`, `GM`, `GN`, `GO`, `GP`, `GQ`, `GR`, `GS`, `GT`, `GU`, `GV`, `GW`, `GX`, `GY`, `GZ`, `HA`, `HB`, `HC`, `HD`, `HE`, `HF`, `HG`, `HH`, `HI`, `HJ`, `HK`, `HL`, `HM`, `HN`, `HO`, `HP`, `HQ`, `HR`, `HS`, `HT`, `HU`, `HV`, `HW`, `HX`, `HY`, `HZ`, `J1`, `J2`, `J3`, `J4`, `J5`, `JA`, `JB`, `JC`, `JD`, `JE`, `JG`, `JW`, `JZ`, `K0`, `K1`, `K2`, `K3`, `K4`, `KA`, `KB`, `KC`, `KD`, `KE`, `KF`, `KG`, `KH`, `KI`, `KJ`, `KK`, `KL`, `KM`, `KN`, `KO`, `KP`, `KQ`, `KR`, `KS`, `KT`, `KU`, `KV`, `KW`, `KX`, `KY`, `KZ`, `LC`, `LD`, `LL`, `LM`, `LR`, `LS`, `LT`, `LU`, `M2`, `MA`, `MB`, `MC`, `MD`, `ME`, `MF`, `MG`, `MH`, `MS`, `N1`, `N2`, `N3`, `NB`, `NR`, `NU`, `P1`, `P2`, `P3`, `P4`, `P5`, `P6`, `PA`, `PB`, `PC`, `PD`, `PI`, `PL`, `PM`, `PN`, `PO`, `PS`, `PT`, `Q0`, `Q1`, `Q2`, `Q3`, `Q4`, `Q5`, `Q6`, `Q7`, `Q8`, `Q9`, `QA`, `QB`, `QC`, `QD`, `QE`, `QF`, `QG`, `QH`, `QJ`, `QK`, `QL`, `QM`, `QN`, `QP`, `QQ`, `QR`, `QS`, `QT`, `QW`, `QX`, `QY`, `QZ`, `RA`, `RB`, `RC`, `RD`, `RE`, `RI`, `RR`, `RT`, `SA`, `SB`, `SC`, `SD`, `SE`, `SF`, `SG`, `SH`, `SJ`, `SL`, `SM`, `SN`, `SQ`, `SS`, `ST`, `SU`, `SV`, `SW`, `SY`, `T1`, `T2`, `T3`, `T4`, `T5`, `T6`, `T7`, `T8`, `T9`, `TA`, `TB`, `TC`, `TD`, `TE`, `TF`, `TG`, `TH`, `TJ`, `TK`, `TL`, `TM`, `TN`, `TP`, `TQ`, `TR`, `TS`, `TT`, `TU`, `TV`, `TW`, `U1`, `U2`, `U3`, `U4`, `U5`, `U6`, `U7`, `U8`, `U9`, `UA`, `UB`, `UC`, `UD`, `UE`, `UF`, `UG`, `UH`, `UJ`, `UK`, `UN`, `UP`, `UQ`, `UR`, `US`, `V1`, `V2`, `V3`, `W1`, `W2`, `W3`, `WC`, `WH`, `X4`, `XE`, `XP`, `XS`, `XU`, `XY`, `ZZ`
- `payer_uuid` (UUID, optional)
- `organization_billing_provider_id` (UUID, optional)
- `cpt_code` (string, optional)

## Response

### 200

- `integer`

## Examples

**Request**

```json
{
  "states": [
    "AA"
  ],
  "zip_codes": [
    "zip_codes"
  ],
  "license_types": [
    "MD"
  ],
  "facility_type_codes": [
    "01"
  ],
  "network_types": [
    "12"
  ],
  "payer_plan_group_ids": [
    "d5e9c84f-c2b2-4bf4-b4b0-7ffd7a9ffc32"
  ],
  "modifiers": [
    "AV"
  ]
}
```

**Response**

```json
1
```

**SDK Code**

```python
import requests

url = "https://api.joincandidhealth.com/api/fee-schedules/v3/hard-delete"

payload = {
    "states": ["AA"],
    "zip_codes": ["zip_codes"],
    "license_types": ["MD"],
    "facility_type_codes": ["01"],
    "network_types": ["12"],
    "payer_plan_group_ids": ["d5e9c84f-c2b2-4bf4-b4b0-7ffd7a9ffc32"],
    "modifiers": ["AV"]
}
headers = {
    "Authorization": "<token>.",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript
const url = 'https://api.joincandidhealth.com/api/fee-schedules/v3/hard-delete';
const options = {
  method: 'POST',
  headers: {Authorization: '<token>.', 'Content-Type': 'application/json'},
  body: '{"states":["AA"],"zip_codes":["zip_codes"],"license_types":["MD"],"facility_type_codes":["01"],"network_types":["12"],"payer_plan_group_ids":["d5e9c84f-c2b2-4bf4-b4b0-7ffd7a9ffc32"],"modifiers":["AV"]}'
};

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://api.joincandidhealth.com/api/fee-schedules/v3/hard-delete"

	payload := strings.NewReader("{\n  \"states\": [\n    \"AA\"\n  ],\n  \"zip_codes\": [\n    \"zip_codes\"\n  ],\n  \"license_types\": [\n    \"MD\"\n  ],\n  \"facility_type_codes\": [\n    \"01\"\n  ],\n  \"network_types\": [\n    \"12\"\n  ],\n  \"payer_plan_group_ids\": [\n    \"d5e9c84f-c2b2-4bf4-b4b0-7ffd7a9ffc32\"\n  ],\n  \"modifiers\": [\n    \"AV\"\n  ]\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Authorization", "<token>.")
	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://api.joincandidhealth.com/api/fee-schedules/v3/hard-delete")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = '<token>.'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"states\": [\n    \"AA\"\n  ],\n  \"zip_codes\": [\n    \"zip_codes\"\n  ],\n  \"license_types\": [\n    \"MD\"\n  ],\n  \"facility_type_codes\": [\n    \"01\"\n  ],\n  \"network_types\": [\n    \"12\"\n  ],\n  \"payer_plan_group_ids\": [\n    \"d5e9c84f-c2b2-4bf4-b4b0-7ffd7a9ffc32\"\n  ],\n  \"modifiers\": [\n    \"AV\"\n  ]\n}"

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.joincandidhealth.com/api/fee-schedules/v3/hard-delete")
  .header("Authorization", "<token>.")
  .header("Content-Type", "application/json")
  .body("{\n  \"states\": [\n    \"AA\"\n  ],\n  \"zip_codes\": [\n    \"zip_codes\"\n  ],\n  \"license_types\": [\n    \"MD\"\n  ],\n  \"facility_type_codes\": [\n    \"01\"\n  ],\n  \"network_types\": [\n    \"12\"\n  ],\n  \"payer_plan_group_ids\": [\n    \"d5e9c84f-c2b2-4bf4-b4b0-7ffd7a9ffc32\"\n  ],\n  \"modifiers\": [\n    \"AV\"\n  ]\n}")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.joincandidhealth.com/api/fee-schedules/v3/hard-delete', [
  'body' => '{
  "states": [
    "AA"
  ],
  "zip_codes": [
    "zip_codes"
  ],
  "license_types": [
    "MD"
  ],
  "facility_type_codes": [
    "01"
  ],
  "network_types": [
    "12"
  ],
  "payer_plan_group_ids": [
    "d5e9c84f-c2b2-4bf4-b4b0-7ffd7a9ffc32"
  ],
  "modifiers": [
    "AV"
  ]
}',
  'headers' => [
    'Authorization' => '<token>.',
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://api.joincandidhealth.com/api/fee-schedules/v3/hard-delete");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "<token>.");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"states\": [\n    \"AA\"\n  ],\n  \"zip_codes\": [\n    \"zip_codes\"\n  ],\n  \"license_types\": [\n    \"MD\"\n  ],\n  \"facility_type_codes\": [\n    \"01\"\n  ],\n  \"network_types\": [\n    \"12\"\n  ],\n  \"payer_plan_group_ids\": [\n    \"d5e9c84f-c2b2-4bf4-b4b0-7ffd7a9ffc32\"\n  ],\n  \"modifiers\": [\n    \"AV\"\n  ]\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = [
  "Authorization": "<token>.",
  "Content-Type": "application/json"
]
let parameters = [
  "states": ["AA"],
  "zip_codes": ["zip_codes"],
  "license_types": ["MD"],
  "facility_type_codes": ["01"],
  "network_types": ["12"],
  "payer_plan_group_ids": ["d5e9c84f-c2b2-4bf4-b4b0-7ffd7a9ffc32"],
  "modifiers": ["AV"]
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api.joincandidhealth.com/api/fee-schedules/v3/hard-delete")! 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()
```