Optimaite

Parties

2 min readUpdated May 26, 2026Auch auf Deutsch verfuegbar

Parties represent all contacts in your legal practice: individual persons, organizations, and courts. Each party can have multiple addresses, contact details, identifiers, bank accounts, and insurance policies.

Endpoints

MethodPathDescription
GET/api/v1/partiesList parties
POST/api/v1/partiesCreate a party
GET/api/v1/parties/{id}Get a party
PUT/api/v1/parties/{id}Update a party
DELETE/api/v1/parties/{id}Delete a party
GET/api/v1/parties/{id}/addressesList addresses
POST/api/v1/parties/{id}/addressesCreate an address
PUT/api/v1/parties/addresses/{addr_id}Update an address
DELETE/api/v1/parties/addresses/{addr_id}Delete an address
GET/api/v1/parties/{id}/contactsList contacts (phone, email)
POST/api/v1/parties/{id}/contactsCreate a contact
GET/api/v1/parties/{id}/identifiersList identifiers
POST/api/v1/parties/{id}/identifiersCreate an identifier
GET/api/v1/parties/{id}/bank-accountsList bank accounts
POST/api/v1/parties/{id}/bank-accountsCreate a bank account
POST/api/v1/parties/conflict-checkRun a conflict check

Required scope: parties:read for GET endpoints, parties:write for POST/PUT, parties:delete for DELETE.

The Party Object

{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "type": "person",
  "display_name": "Dr. Hans Schmidt",
  "first_name": "Hans",
  "last_name": "Schmidt",
  "title": "Dr.",
  "date_of_birth": "1980-03-15",
  "addresses": [
    {
      "id": "addr_01",
      "type": "work",
      "street": "Musterstrasse 42",
      "zip": "10115",
      "city": "Berlin",
      "country": "DE"
    }
  ],
  "contacts": [
    {
      "id": "cnt_01",
      "type": "email",
      "value": "hans.schmidt@example.com"
    }
  ]
}

Party Types

TypeDescriptionKey Fields
personIndividual personfirst_name, last_name, title, date_of_birth
organizationCompany or institutioncompany_name, legal_form, registration_number
courtCourt or tribunalcourt_name, court_type, jurisdiction

Conflict Check

POST /api/v1/parties/conflict-check

Check whether a party name or identifier conflicts with existing parties across your workspace:

{
  "query": "Smith",
  "check_identifiers": true
}

List Parties

GET /api/v1/parties?type=person&search=Smith&limit=50

Query Parameters

ParameterTypeDescription
cursorstringPagination cursor
limitintegerResults per page (1-100, default 50)
typestringFilter: person, organization, court
searchstringSearch by name, company, or email

Next Steps

  • Cases -- Link parties to cases
  • Documents -- Assign documents to parties
Was this helpful?