curl --request GET \
--url https://api.parley.so/v1/projects \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.parley.so/v1/projects"
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', 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",
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"
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")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.parley.so/v1/projects")
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{
"data": [
{
"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
}
}
],
"nextCursor": "<string>"
}{
"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": "TOO_MANY_REQUESTS",
"message": "Too many requests."
}
}List projects
List the projects (matters or cases) the caller can see, newest first by default. Filter by name, linked account or contact, and when projects were created or updated.
curl --request GET \
--url https://api.parley.so/v1/projects \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.parley.so/v1/projects"
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', 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",
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"
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")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.parley.so/v1/projects")
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{
"data": [
{
"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
}
}
],
"nextCursor": "<string>"
}{
"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": "TOO_MANY_REQUESTS",
"message": "Too many requests."
}
}Authorizations
A Parley API key.
Query Parameters
Case-insensitive. Every word must match the project name or a text custom field.
1Only projects linked to this account, directly or through one of its contacts.
1Only projects linked to this contact.
1Only records created at or after this time. An ISO 8601 date (YYYY-MM-DD, read as UTC midnight) or date-time.
Only records created before this time. An ISO 8601 date (YYYY-MM-DD, read as UTC midnight) or date-time.
Only records last updated at or after this time. An ISO 8601 date (YYYY-MM-DD, read as UTC midnight) or date-time.
Only records last updated before this time. An ISO 8601 date (YYYY-MM-DD, read as UTC midnight) or date-time.
Sort order: a field name, prefixed with - for descending. Defaults to -createdAt.
name, -name, createdAt, -createdAt, updatedAt, -updatedAt Opaque cursor from nextCursor. Pass the same filters and sort. Omit for the first page.
1Maximum number of items to return.
1 <= x <= 250Was this page helpful?
