> ## Documentation Index
> Fetch the complete documentation index at: https://docs.signa.so/llms.txt
> Use this file to discover all available pages before exploring further.

# Firm Attorneys

> List the attorneys at a specific law firm

## Overview

Returns the attorneys associated with a firm, derived from trademark filings. Each row includes the attorney's filing volume, registration rate, and most recent filing date so you can rank within the firm.

## Path Parameters

<ParamField path="id" type="string" required>
  Firm ID (`firm_...`).
</ParamField>

## Query Parameters

<ParamField query="limit" type="integer" default="20">
  Page size (1-100).
</ParamField>

<ParamField query="cursor" type="string">
  Pagination cursor from a previous response.
</ParamField>

## Response

<ResponseField name="data" type="object[]">
  Array of attorney records at this firm.
</ResponseField>

<ResponseField name="data[].id" type="string">
  Attorney ID (`att_...`).
</ResponseField>

<ResponseField name="data[].name" type="string">
  Display name of the attorney.
</ResponseField>

<ResponseField name="data[].canonical_name" type="string">
  Normalized name used for entity resolution.
</ResponseField>

<ResponseField name="data[].firm_name" type="string">
  Firm display name.
</ResponseField>

<ResponseField name="data[].country_code" type="string">
  Two-letter country code.
</ResponseField>

<ResponseField name="data[].trademark_count" type="integer">
  Total trademarks attributed to this attorney.
</ResponseField>

<ResponseField name="data[].registration_rate" type="number">
  Share of marks reaching registered status (0-1).
</ResponseField>

<ResponseField name="data[].latest_filing" type="string">
  ISO date of the most recent filing handled.
</ResponseField>

<ResponseField name="data[].created_at" type="string">
  ISO 8601 record creation timestamp.
</ResponseField>

<ResponseField name="data[].updated_at" type="string">
  ISO 8601 last-updated timestamp.
</ResponseField>

<ResponseExample>
  ```json theme={null}
  {
    "object": "list",
    "data": [
      {
        "id": "att_3kPq9X",
        "object": "attorney",
        "name": "Jane R. Smith",
        "canonical_name": "JANE R SMITH",
        "firm_name": "Smith & Associates LLP",
        "country_code": "US",
        "trademark_count": 1284,
        "registration_rate": 0.81,
        "latest_filing": "2026-04-08",
        "created_at": "2024-09-12T11:42:01Z",
        "updated_at": "2026-04-09T03:18:22Z"
      }
    ],
    "has_more": true,
    "pagination": { "cursor": "eyJpZCI6..." },
    "request_id": "req_xyz"
  }
  ```
</ResponseExample>

## Code Examples

<CodeGroup>
  ```bash cURL theme={null}
  curl "https://api.signa.so/v1/firms/firm_2kLm9X/attorneys?limit=20" \
    -H "Authorization: Bearer sig_YOUR_KEY_HERE"
  ```

  ```typescript TypeScript theme={null}
  import { Signa } from "@signa-so/sdk";

  const signa = new Signa({ api_key: process.env.SIGNA_API_KEY });

  const page = await signa.firms.attorneys("firm_2kLm9X", { limit: 20 });
  ```

  ```python Python theme={null}
  import requests

  resp = requests.get(
      "https://api.signa.so/v1/firms/firm_2kLm9X/attorneys",
      headers={"Authorization": "Bearer sig_YOUR_KEY_HERE"},
  )
  ```
</CodeGroup>

## Errors

| Status | Type               | Description                |
| ------ | ------------------ | -------------------------- |
| 400    | `validation_error` | Invalid firm ID            |
| 401    | `unauthorized`     | Missing or invalid API key |
| 404    | `not_found`        | Firm not found             |
| 429    | `rate_limited`     | Too many requests          |

## Related Endpoints

* [Get Firm](/api-reference/parties/get-firm) -- full firm detail
* [Firm Trademarks](/api-reference/parties/firm-trademarks) -- marks handled by this firm
* [List Attorneys](/api-reference/parties/list-attorneys) -- search attorneys across firms
