curl --request GET \
--url https://api.parley.so/v1/projects/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.parley.so/v1/projects/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.parley.so/v1/projects/{id}', 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.parley.so/v1/projects/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.parley.so/v1/projects/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.parley.so/v1/projects/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.parley.so/v1/projects/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "cmf2x8k0q0001abcd",
"name": "Acme Corp H-1B petition",
"access": {
"type": "everyone"
},
"accounts": [
{
"type": "account",
"id": "cmf2x7r1p0000abcd",
"name": "Acme Corp"
}
],
"contacts": [
{
"type": "contact",
"id": "cmf2x7z3e0002abcd",
"name": "Ada Lovelace"
}
],
"createdAt": "2026-10-01T15:04:05.000Z",
"updatedAt": "2026-10-02T09:30:00.000Z",
"fields": {
"Matter Number": "IMM-2041",
"Target Date": null
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "The request is invalid.",
"details": {
"issues": [
{
"path": "<string>",
"message": "<string>"
}
]
}
}
}{
"error": {
"code": "UNAUTHORIZED",
"message": "Missing or invalid credentials."
}
}{
"error": {
"code": "FORBIDDEN",
"message": "You don't have permission to do this."
}
}{
"error": {
"code": "NOT_FOUND",
"message": "Not found."
}
}{
"error": {
"code": "TOO_MANY_REQUESTS",
"message": "Too many requests."
}
}Get a project
Get a single project (matter or case) by ID.
curl --request GET \
--url https://api.parley.so/v1/projects/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.parley.so/v1/projects/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.parley.so/v1/projects/{id}', 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.parley.so/v1/projects/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.parley.so/v1/projects/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.parley.so/v1/projects/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.parley.so/v1/projects/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "cmf2x8k0q0001abcd",
"name": "Acme Corp H-1B petition",
"access": {
"type": "everyone"
},
"accounts": [
{
"type": "account",
"id": "cmf2x7r1p0000abcd",
"name": "Acme Corp"
}
],
"contacts": [
{
"type": "contact",
"id": "cmf2x7z3e0002abcd",
"name": "Ada Lovelace"
}
],
"createdAt": "2026-10-01T15:04:05.000Z",
"updatedAt": "2026-10-02T09:30:00.000Z",
"fields": {
"Matter Number": "IMM-2041",
"Target Date": null
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "The request is invalid.",
"details": {
"issues": [
{
"path": "<string>",
"message": "<string>"
}
]
}
}
}{
"error": {
"code": "UNAUTHORIZED",
"message": "Missing or invalid credentials."
}
}{
"error": {
"code": "FORBIDDEN",
"message": "You don't have permission to do this."
}
}{
"error": {
"code": "NOT_FOUND",
"message": "Not found."
}
}{
"error": {
"code": "TOO_MANY_REQUESTS",
"message": "Too many requests."
}
}Authorizations
A Parley API key.
Path Parameters
The project ID.
1Response
OK
The project ID.
1Project name.
1Who can see the project: everyone in the organization, or only its members.
- Option 1
- Option 2
Show child attributes
Show child attributes
The accounts linked to the project. Direct links only: the accountId filter on the project list also matches projects linked through one of the account's contacts.
Show child attributes
Show child attributes
The contacts linked to the project.
Show child attributes
Show child attributes
When the project was created.
When the project was last updated, including changes to its linked accounts and contacts. Field value changes do not change it.
Custom field values, keyed by field name, with a key for every field defined for projects (null when unset). The value's shape follows the field's type.
Show child attributes
Show child attributes
Was this page helpful?
