Add Client Matters
curl --request POST \
--url https://api.harvey.ai/api/v1/client_matters \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"client_matters": [
{
"cm_name": "123-45",
"cm_desc": "Acme Corp Bankruptcy",
"cm_allowed": "true"
}
]
}
'import requests
url = "https://api.harvey.ai/api/v1/client_matters"
payload = { "client_matters": [
{
"cm_name": "123-45",
"cm_desc": "Acme Corp Bankruptcy",
"cm_allowed": "true"
}
] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
client_matters: [{cm_name: '123-45', cm_desc: 'Acme Corp Bankruptcy', cm_allowed: 'true'}]
})
};
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 => "POST",
CURLOPT_POSTFIELDS => json_encode([
'client_matters' => [
[
'cm_name' => '123-45',
'cm_desc' => 'Acme Corp Bankruptcy',
'cm_allowed' => 'true'
]
]
]),
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 {\n \"cm_name\": \"123-45\",\n \"cm_desc\": \"Acme Corp Bankruptcy\",\n \"cm_allowed\": \"true\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", 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.post("https://api.harvey.ai/api/v1/client_matters")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"client_matters\": [\n {\n \"cm_name\": \"123-45\",\n \"cm_desc\": \"Acme Corp Bankruptcy\",\n \"cm_allowed\": \"true\"\n }\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::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"client_matters\": [\n {\n \"cm_name\": \"123-45\",\n \"cm_desc\": \"Acme Corp Bankruptcy\",\n \"cm_allowed\": \"true\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"success_count": 1,
"failed": []
}Add
Add Client Matters
deprecated
Deprecated. Use POST /api/v2/clients followed by POST /api/v2/matters for new integrations. See the Client Matters guide for migration steps. The v1 GET and DELETE endpoints remain available. When the workspace requires legacy name validation, each name must split into client and matter identifiers using the configured delimiter. Names that do not match appear in failed. A missing required delimiter rejects the batch with HTTP 400 and kind: DELIMITER_REQUIRED.
POST
/
api
/
v1
/
client_matters
Add Client Matters
curl --request POST \
--url https://api.harvey.ai/api/v1/client_matters \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"client_matters": [
{
"cm_name": "123-45",
"cm_desc": "Acme Corp Bankruptcy",
"cm_allowed": "true"
}
]
}
'import requests
url = "https://api.harvey.ai/api/v1/client_matters"
payload = { "client_matters": [
{
"cm_name": "123-45",
"cm_desc": "Acme Corp Bankruptcy",
"cm_allowed": "true"
}
] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
client_matters: [{cm_name: '123-45', cm_desc: 'Acme Corp Bankruptcy', cm_allowed: 'true'}]
})
};
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 => "POST",
CURLOPT_POSTFIELDS => json_encode([
'client_matters' => [
[
'cm_name' => '123-45',
'cm_desc' => 'Acme Corp Bankruptcy',
'cm_allowed' => 'true'
]
]
]),
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 {\n \"cm_name\": \"123-45\",\n \"cm_desc\": \"Acme Corp Bankruptcy\",\n \"cm_allowed\": \"true\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", 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.post("https://api.harvey.ai/api/v1/client_matters")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"client_matters\": [\n {\n \"cm_name\": \"123-45\",\n \"cm_desc\": \"Acme Corp Bankruptcy\",\n \"cm_allowed\": \"true\"\n }\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::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"client_matters\": [\n {\n \"cm_name\": \"123-45\",\n \"cm_desc\": \"Acme Corp Bankruptcy\",\n \"cm_allowed\": \"true\"\n }\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
application/json
Maximum array length:
10000Show child attributes
Show child attributes
Response
The number of successfully added client matters and the number of failures.