curl --request DELETE \
--url https://api.harvey.ai/api/v1/client_matters \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"client_matters": [
"123-45",
"456-78"
]
}
'import requests
url = "https://api.harvey.ai/api/v1/client_matters"
payload = { "client_matters": ["123-45", "456-78"] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.delete(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'DELETE',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({client_matters: ['123-45', '456-78']})
};
fetch('https://api.harvey.ai/api/v1/client_matters', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.harvey.ai/api/v1/client_matters",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "DELETE",
CURLOPT_POSTFIELDS => json_encode([
'client_matters' => [
'123-45',
'456-78'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.harvey.ai/api/v1/client_matters"
payload := strings.NewReader("{\n \"client_matters\": [\n \"123-45\",\n \"456-78\"\n ]\n}")
req, _ := http.NewRequest("DELETE", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.delete("https://api.harvey.ai/api/v1/client_matters")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"client_matters\": [\n \"123-45\",\n \"456-78\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.harvey.ai/api/v1/client_matters")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Delete.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"client_matters\": [\n \"123-45\",\n \"456-78\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"success_count": 1,
"failed": []
}Delete Client Matters
Soft-deletes client matters by their stored names, preventing future selection. Use name from GET /api/v1/client_matters, not a label or UUID. Inspect success_count and failed even when the response is HTTP 200. Missing names appear in failed. A retry that deletes no active matters can also return requested names in failed; use GET to check their deleted_at values. Externally linked matters cannot be deleted while ethical-wall enforcement is enabled.
Deleting a Client Matter does not delete historical queries associated with that Client Matter, nor does it remove the Client Matter from those historical queries. Users and Admins can update the Client Matter associated with a previous query in the Dashboard.
curl --request DELETE \
--url https://api.harvey.ai/api/v1/client_matters \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"client_matters": [
"123-45",
"456-78"
]
}
'import requests
url = "https://api.harvey.ai/api/v1/client_matters"
payload = { "client_matters": ["123-45", "456-78"] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.delete(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'DELETE',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({client_matters: ['123-45', '456-78']})
};
fetch('https://api.harvey.ai/api/v1/client_matters', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.harvey.ai/api/v1/client_matters",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "DELETE",
CURLOPT_POSTFIELDS => json_encode([
'client_matters' => [
'123-45',
'456-78'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.harvey.ai/api/v1/client_matters"
payload := strings.NewReader("{\n \"client_matters\": [\n \"123-45\",\n \"456-78\"\n ]\n}")
req, _ := http.NewRequest("DELETE", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.delete("https://api.harvey.ai/api/v1/client_matters")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"client_matters\": [\n \"123-45\",\n \"456-78\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.harvey.ai/api/v1/client_matters")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Delete.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"client_matters\": [\n \"123-45\",\n \"456-78\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"success_count": 1,
"failed": []
}Permissions
RequiresClient matters admin permission.Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
A list of client matter names to delete.
10000["123-45", "456-78"]
Response
The number of successfully deleted client matters and the number of failures.
The total amount of client matters that were successfully deleted.
1
Stored matter names that the request did not delete, including missing names and matters blocked by ethical-wall rules. A retry with no active matters to delete can also return names here.
[]