Enterprise API

The Appearance Attorney API
for AI Legal Platforms

A REST API that lets your platform programmatically post appearance requests, receive bar-verified attorney matches, confirm engagements, and ingest structured outcome reports — no email, no phone, no manual process. All 50 states, 4–8 hour confirmation SLA.

REST / JSON Webhook support Bar-verified matches Structured outcome reports All 50 states
What This API Does
Appearance Attorney API
The CourtCounsel.AI API gives AI legal platforms, big law operations teams, and court management SaaS a programmatic interface to the national appearance attorney marketplace. Your system posts a hearing request — courthouse, date, case type, documents — and the API handles everything else: matching a bar-verified local attorney, delivering real-time status updates via webhook, and returning a structured outcome report after the hearing.
Base URL: https://api.courtcounsel.ai/v1  ·  Auth: Bearer API key  ·  Format: JSON

"The missing infrastructure layer for AI legal platforms: a REST API that connects your system to bar-verified appearance attorneys in every U.S. jurisdiction — with structured data in and structured data out."

CourtCounsel.AI — Enterprise API Documentation (2026)

Post Your First Appearance Request

A single API call posts the hearing details and initiates attorney matching. You'll receive a webhook notification within 4–8 hours when a bar-verified attorney accepts.

cURL
# POST /api/v1/requests — Submit a new appearance request

curl https://api.courtcounsel.ai/v1/requests \
  -X POST \
  -H "Authorization: Bearer cc_live_sk_T4xG9mP2wKj7nQvZ8rLd..." \
  -H "Content-Type: application/json" \
  -d '{
    "hearing": {
      "court_name": "Los Angeles Superior Court — Stanley Mosk Courthouse",
      "court_address": "111 N. Hill St, Los Angeles, CA 90012",
      "department": "Dept. 47",
      "hearing_date": "2026-06-11",
      "hearing_time": "09:00",
      "timezone": "America/Los_Angeles",
      "hearing_type": "status_conference",
      "case_number": "23STCV18492",
      "case_caption": "Hartwell Systems Inc. v. Diaz et al."
    },
    "jurisdiction": {
      "state": "CA",
      "court_level": "state_trial",
      "federal_district": null
    },
    "instructions": "Appear for routine status conference. Request 90-day continuance to allow for expert designation. Motion briefing attached. Do not discuss settlement.",
    "documents": [
      {
        "type": "motion_brief",
        "url": "https://your-platform.com/docs/case-23st-motion-brief.pdf",
        "label": "Joint Motion for Continuance"
      }
    ],
    "contact": {
      "name": "Atlas Legal AI",
      "email": "ops@atlaslegal.ai",
      "phone": "+1-415-555-0173"
    },
    "webhook_url": "https://your-platform.com/webhooks/courtcounsel",
    "client_reference_id": "case_1849203_hearing_2"
  }'
Response — 201 Created
{
  "id": "req_7Xm2KpL9vNwQjR4t",
  "status": "matching",
  "created_at": "2026-05-28T14:32:07Z",
  "hearing_date": "2026-06-11",
  "hearing_type": "status_conference",
  "jurisdiction": "CA — Los Angeles Superior Court",
  "sla_confirmation_by": "2026-05-28T22:32:07Z",  // 8 hours from submission
  "client_reference_id": "case_1849203_hearing_2",
  "webhook_url": "https://your-platform.com/webhooks/courtcounsel",
  "estimated_fee": 275,
  "currency": "USD"
}
Legal technology interface

Core Endpoints

Four endpoints cover the complete appearance attorney workflow — from submitting a request to retrieving the outcome report after the hearing.

POST /api/v1/requests Post a new appearance request and initiate attorney matching

Description

Creates a new appearance request and immediately triggers the attorney matching process. Returns a request object with a unique id and a sla_confirmation_by timestamp. The API will deliver a request.attorney_matched webhook when an attorney accepts.

Required Fields

FieldTypeRequiredDescription
hearing.court_name string required Full name of the court including courthouse building if applicable
hearing.hearing_date string (ISO 8601) required Date of the hearing in YYYY-MM-DD format
hearing.hearing_type string (enum) required One of: status_conference, motion_hearing, scheduling_conference, arraignment, deposition, small_claims, other
jurisdiction.state string (2-letter) required Two-letter state abbreviation (e.g., "CA", "NY", "TX")
jurisdiction.court_level string (enum) required One of: state_trial, state_appellate, federal_district, federal_circuit, administrative
instructions string required Plain-language instructions for the appearing attorney. What to say, what positions to take, what outcome to request.

Optional Fields

FieldTypeRequiredDescription
documents array optional Array of document objects with type, url, and label fields. Accepted types: motion_brief, case_summary, order, exhibit, other
webhook_url string (URL) optional Per-request webhook override. If omitted, events are sent to your organization's default webhook endpoints.
client_reference_id string optional Your internal ID for this case or hearing. Returned in all responses and webhook payloads for easy reconciliation.
rush boolean optional Set to true for hearings within 24 hours. Triggers expedited matching (enterprise accounts only). Rush surcharge applies.
GET /api/v1/requests/{id} Retrieve current status and match data for a request

Description

Returns the full request object including current status, attorney match data (if confirmed), and all metadata. Statuses progress through: matchingattorney_matchedconfirmedappearance_completedoutcome_ready. If you prefer event-driven updates, use webhooks rather than polling this endpoint.

Response Fields

FieldTypeDescription
id string Unique request identifier (req_* prefix)
status string (enum) Current status: matching, attorney_matched, confirmed, appearance_started, appearance_completed, outcome_ready, cancelled
attorney object | null Attorney object present once status is attorney_matched or later. Includes: bar_number, state_admissions, federal_admissions, name, firm, phone
fee number Confirmed fee in USD. Locked once attorney is matched.
POST /api/v1/requests/{id}/confirm Confirm the matched attorney and finalize the engagement

Description

Confirms the attorney match and authorizes the appearance fee. Must be called after the request.attorney_matched webhook is received. The attorney is notified immediately upon confirmation and will receive the full document package. Confirmation must occur at least 2 hours before the hearing start time. Returns the updated request object with status: "confirmed".

Request Body

FieldTypeRequiredDescription
confirm boolean required Must be true. Passing false has no effect; use DELETE to cancel.
additional_instructions string optional Any last-minute instructions to append to the original briefing before it is sent to the attorney.
GET /api/v1/requests/{id}/outcome Retrieve the structured outcome report after the hearing

Description

Returns the structured outcome report filed by the attorney within 2 hours of the hearing's conclusion. The report is available once status reaches outcome_ready. Returns 404 if the hearing has not yet occurred or the attorney has not yet filed the report. You will also receive a request.outcome_ready webhook when the report is available — no polling required.

Outcome Report Fields

FieldTypeDescription
outcome string (enum) Classification: continued, dismissed, order_entered, settled, no_action, other
judge string Name of the judge or judicial officer who presided
continuation_date string | null Next hearing date if the matter was continued (ISO 8601)
attorney_notes string Free-text notes from the attorney: what was said, any orders from the bench, demeanor observations
documents_filed array Array of document objects for any papers filed or received at the hearing
attorney.bar_number string Attorney's bar number for the appearing jurisdiction
checkin_timestamp string (ISO 8601) Timestamp when the attorney checked in at the courthouse

How AI Legal Platforms Use the API

Two production-level examples showing how the API integrates into AI-driven case management workflows at scale.

01

AI Detects Upcoming Hearing, Routes Automatically

An AI legal platform monitors case dockets, detects a status conference in 14 days, and routes the appearance request without any human touch — from AI draft to confirmed attorney in 6 hours.

AI
AI drafts motion and monitors docketPlatform prepares and files the joint motion for continuance, monitors court docket for the scheduled status conference date.
AI
14-day trigger firesAutomated rule detects hearing is 14 days away. No local counsel on record. System determines appearance attorney is required.
API
POST /api/v1/requestsPlatform posts the hearing request with the motion brief attached as a document, instructions to request the 90-day continuance.
ATY
Attorney matched and confirmed in 6 hoursWebhook fires: request.attorney_matched. Platform auto-confirms via POST /confirm. Attorney receives briefing packet.
API
Outcome report ingestedrequest.outcome_ready webhook triggers. Platform calls GET /outcome — continued 90 days, new date written back to case record.
02

Big Law Ops Team Routes 30-State Status Conferences Automatically

A national litigation firm with cases in 32 states uses the API to route all routine status conferences without burdening lead attorneys — saving 4–6 hours of coordination per hearing.

AI
Case management system exports weekly hearing listOperations team pulls all upcoming hearings flagged as "status_conference" or "scheduling_conference" — 18 hearings across 14 states this week.
API
Bulk POST via API loopOps tool submits each hearing as a separate POST request. Each request carries the case-specific instructions and document URL pulled from the DMS. client_reference_id maps to internal matter number.
ATY
18 attorneys matched across 14 statesWebhooks fire per match. Ops dashboard shows match status in real time. Confirmation rules trigger auto-confirm when fee is within pre-authorized threshold.
API
Outcome reports sync to DMSEach request.outcome_ready event triggers a sync job that writes the structured outcome — judge, result, continuation date, attorney notes — directly into the matter record. Lead attorney reviews the summary, not the hearing.

Webhook Event Reference

Register one or more HTTPS endpoints to receive signed webhook payloads for every state change in the appearance lifecycle. No polling required.

Event Trigger Key Payload Fields Typical Response Action
request.attorney_matched An attorney accepted the engagement and their match is pending your confirmation request_id, attorney.name, attorney.bar_number, attorney.state_admissions, attorney.federal_admissions, fee, confirm_by Auto-confirm via POST /confirm if fee is within threshold; otherwise flag for human review
request.attorney_confirmed Your platform confirmed the attorney match (via API or dashboard) request_id, attorney, confirmed_at, fee_authorized Update case record with confirmed attorney details; no action required
request.appearance_started Attorney checked into the courthouse (geolocation confirmation) request_id, checkin_timestamp, courthouse_location Optional status update to client-facing case timeline
request.outcome_ready Attorney filed the structured outcome report (within 2h of hearing end) request_id, outcome, continuation_date, judge, outcome_url Call GET /outcome to fetch full report; write to case management system
request.cancelled Request was cancelled via API or by the platform request_id, cancelled_at, reason, cancellation_fee, refund_status Update case record; process refund if applicable
request.match_failed No attorney could be matched within the SLA window (rare — <0.4% of requests) request_id, reason, retry_options Escalate to your ops team; contact enterprise support for rush escalation

All webhook payloads are signed with HMAC-SHA256. Verify the X-CourtCounsel-Signature header against your webhook secret before processing. Replay attacks are blocked: payloads older than 5 minutes are rejected.

Confirmation SLA by Jurisdiction

SLA is measured from the time of API submission to the time of attorney confirmation — not from hearing date. Submit early for maximum reliability.

4–8h
Major Metro Courts
Top 100 U.S. metro areas. Hearing must be at least 24 hours away at time of submission. Covers courts in LA, NYC, Chicago, Houston, Miami, Dallas, Phoenix, Atlanta, and 90+ more markets.
2h
Enterprise Rush Lane
Available on enterprise contracts for hearings with <24h notice. Requires enterprise API tier. Rush surcharge applies. Dedicated matching team handles escalation manually. Available in top-50 metro markets.
24–48h
Rural & Smaller Jurisdictions
Courts outside top-100 metro areas, including rural county courts and smaller federal districts. Plan accordingly — submit requests as early as possible for rural hearings to maximize match probability.
99.6%
Match success rate (major metro)
50
States covered
<2h
Outcome report turnaround
100%
Attorneys pre-bar-verified

Outcome Report Schema

Every hearing generates a structured JSON outcome report — no PDF parsing, no manual data entry. Your case management system receives machine-readable results.

outcome
string (enum)
Hearing result classification. One of: continued, dismissed, order_entered, settled, no_action, default_entered, other
judge
string
Full name and title of the presiding judicial officer. Includes department or courtroom number where available.
continuation_date
string | null (ISO 8601)
If outcome is continued, the date to which the matter was continued. Null if not continued or date was not yet set by the court.
continuation_type
string | null (enum)
Why the matter was continued: court_initiated, party_request, stipulation, scheduling_conflict. Null if not applicable.
attorney_notes
string
Detailed free-text notes from the appearing attorney: what was argued, the court's tone, any bench rulings, informal guidance from the judge, next steps noted.
attorney.bar_number
string
Appearing attorney's active bar number in the hearing jurisdiction. For compliance documentation and conflict-check purposes.
attorney.state_admissions
array of strings
All state bar admissions held by the appearing attorney, returned as two-letter state codes. Verified against state bar records at attorney onboarding.
attorney.federal_admissions
array of strings
Federal district court admissions held by the attorney. Example: ["C.D. Cal", "N.D. Cal", "S.D.N.Y."]. Empty array if no federal admissions.
documents_filed
array of objects
Array of documents filed or received at the hearing. Each object includes type, label, filed_by, and a url to the uploaded copy.
checkin_timestamp
string (ISO 8601)
UTC timestamp when the attorney geolocation-confirmed their courthouse check-in. Provides an auditable record of on-time appearance.
checkout_timestamp
string (ISO 8601)
UTC timestamp when the attorney checked out and the hearing was recorded as concluded.
hearing_duration_minutes
integer
Actual duration of the hearing in minutes, calculated from check-in to check-out. Useful for billing verification and future hearing estimates.

Volume-Based API Plans

Pricing scales with volume. Enterprise contracts available for 100+ appearances per month with dedicated SLA, custom webhooks, and a dedicated account manager.

Starter API
$299
per appearance + platform fee
  • Up to 25 appearances/month
  • Full API access (all endpoints)
  • Webhook support (up to 3 endpoints)
  • Bar-verified attorney matching
  • Structured outcome reports
  • Standard SLA (4–8h metro)
  • Email support
Get API Keys
Enterprise API
Custom
100+ appearances/month, volume pricing
  • Unlimited appearances, volume discounts
  • Custom SLA contracts with credits
  • Dedicated account manager
  • IP allowlisting + SSO/SAML
  • Custom outcome report fields
  • 2-hour rush SLA in major metros
  • Quarterly business reviews
  • Direct engineering integration support
Talk to Sales

Appearance Attorney API Questions Answered

Is the CourtCounsel.AI API RESTful?
Yes. The API is fully RESTful with JSON request and response bodies. All endpoints use standard HTTP methods (POST, GET) and return standard HTTP status codes. Base URL is https://api.courtcounsel.ai/v1. The API follows REST conventions: POST to create resources, GET to retrieve them. No GraphQL, no SOAP, no custom protocol required. Standard pagination is supported on list endpoints using limit and cursor query parameters.
How does authentication work?
Authentication uses an API key per organization, passed in the Authorization header as a Bearer token: Authorization: Bearer cc_live_sk_.... API keys are scoped to your organization and can be configured with role-based permissions (read-only vs. read-write). Keys are generated and rotated from your organization's dashboard at https://app.courtcounsel.ai/partners. Enterprise customers can configure IP allowlisting and automated key rotation. We recommend storing your API key as an environment variable — never hardcode it in source code.
How does the API handle last-minute cancellations?
Cancellations are submitted via DELETE /api/v1/requests/{id} with an optional reason in the request body. The cancellation fee schedule is: more than 4 hours before the hearing — no fee charged, full refund issued; within 4 hours — 50% cancellation fee, 50% refund; within 1 hour of hearing — 100% fee, no refund. The API returns a cancellation confirmation object with the applicable fee, refund amount, and refund timeline. Webhook subscribers receive a request.cancelled event in real time so your case management system can update immediately.
Can we receive webhook notifications instead of polling?
Yes. Webhook support is included on all API plans. Register one or more HTTPS endpoints in your organization dashboard. The API delivers signed POST requests for six lifecycle events: request.attorney_matched, request.attorney_confirmed, request.appearance_started, request.outcome_ready, request.cancelled, and request.match_failed. Payloads are signed with HMAC-SHA256 using your webhook secret — verify the X-CourtCounsel-Signature header on every received event. Failed webhook deliveries are retried with exponential backoff for up to 24 hours.
What data is included in the structured outcome report?
The outcome report returned by GET /api/v1/requests/{id}/outcome includes: outcome classification (continued, dismissed, order entered, etc.); judge name and courtroom; continuation date and continuation type if applicable; attorney bar number, all state admissions, and federal district admissions; a free-text attorney notes field; an array of documents filed or received at the hearing with upload URLs; courthouse check-in and check-out timestamps; and hearing duration in minutes. All fields are structured JSON — your case management system can ingest them directly with no PDF parsing or manual transcription.
What is the SLA for appearance attorney confirmation?
For major metropolitan courts (courts in the top 100 U.S. metro areas), CourtCounsel.AI guarantees attorney confirmation within 4–8 hours of request submission, provided the hearing is at least 24 hours away at time of submission. For rural jurisdictions and smaller courts outside the top-100 metro areas, the SLA is 24–48 hours. Enterprise customers have access to a 2-hour rush SLA in the top-50 metro markets for hearings with less than 24 hours' notice — a rush surcharge applies. SLA compliance is tracked in real time and published on the API status dashboard. If we miss the SLA, enterprise contracts include automatic service credits.

Ready to Integrate Appearance Attorneys into Your Platform?

Talk to our enterprise team. We'll walk you through the API, discuss your volume requirements, and set up your sandbox environment — same day.