Ardela
Ardela
Help Centre
API

Integrations

Build custom automations and CRM filing workflows with the beta Ardela API.

This guide covers the REST API filing pattern for sending completed recordings to an external system that your team controls.

The API is in pre-launch beta and requires a Pro or Enterprise plan. Test every mapping and destination step before relying on it for filing.

Integration availability

Zapier is available from Settings → Integrations. It authenticates with an Ardela API key, with no separate Ardela OAuth step. The same API patterns in this guide can also be implemented in a service or another HTTP-capable automation tool.

Clio Manage can be connected from Settings → Integrations to import clients and matters. Microsoft 365 and Actionstep remain coming soon. You can still build a custom integration that files Ardela recording content into Clio or another system through their APIs.

Typical filing flow

Poll unsynced recordings → Fetch full content → Create CRM record → Mark filed

Optionally add webhooks to wake your integration when recordings complete.

API key setup

Create a key in Settings → API Keys with:

Integration typeScopes
Read-only monitoringread:recordings
CRM filing (most common)read:recordings, write:recordings
Webhook managementmanage:webhooks (in addition to above)

For Zapier, start from Settings → Integrations, create the key when prompted, then paste it into the Ardela connection in Zapier. See Integrations settings.

Custom automation pattern

1. Find completed recordings

Poll from your own service or an HTTP-capable automation tool:

GET /api/v1/recordings?status=COMPLETED&syncState=unsynced&limit=50
  • Use recording id as your deduplication key
  • Follow meta.nextCursor while meta.hasMore is true
  • Run polling often enough for your workflow without exceeding the rate limit

The default response is metadata-first. Fetch each recording when you need full content.

2. Fetch recording content

GET /api/v1/recordings/{{id}}

Map these fields in downstream steps:

FieldUse for
notes[].contentTextDerived plain text for generated notes
documents[].contentTextDerived plain text for letters and documents
transcriptFull transcript
client.referenceNumberCRM client matching
matter.referenceNumberCRM matter matching

Request ?include=contentJson if your integration needs canonical Tiptap JSON instead of plain text alone.

3. File in the external system

Use the external system's supported API to create its document, note, or communication. Store the returned identifier so you can reconcile it later.

4. Mark the recording as filed

After the CRM step succeeds:

POST /api/v1/recordings/{{id}}/filings
{
  "provider": "custom-crm",
  "externalId": "{{crm_document_id}}",
  "externalUrl": "{{crm_document_url}}",
  "metadata": {
    "workflowId": "{{workflow_id}}"
  }
}

Example: Custom Clio filing

This is a custom recording-filing pattern. It is separate from the native Clio Manage import in Settings → Integrations, which brings clients and matters into Ardela.

  1. Find a completed recording with syncState=unsynced
  2. Fetch it with GET /recordings/:id
  3. Match the Clio matter using matter.referenceNumber
  4. Use the Clio API to upload documents[0].contentText or create a communication from notes[0].contentText
  5. Mark the Ardela recording as filed:
{
  "provider": "clio",
  "externalId": "doc_123",
  "externalUrl": "https://app.clio.com/documents/doc_123",
  "metadata": {
    "matterId": "matter_456",
    "communicationId": "comm_789"
  }
}

Use metadata for provider-specific IDs that help with reconciliation. Use the same pattern for other systems, but confirm their API and authentication requirements separately.

Optional: webhooks for faster triggers

Instead of polling alone, register a webhook:

POST /api/v1/webhooks
Idempotency-Key: crm-webhook-2026-08-31
Content-Type: application/json

{ "url": "https://your-server.com/ardela", "events": ["recording.completed"] }

Your server verifies the signature, fetches full content, and processes the filing. Keep polling as a backup.

See Webhooks.

Performance tips

  • Poll syncState=unsynced to skip already-filed recordings
  • Use cursor pagination for catch-up after downtime
  • Fetch by ID instead of include=content on list for high-volume firms
  • Avoid aggressive polling and stay within 120 requests per minute per workspace

On this page