PracticePanther
48 tools • OpenAPI spec ↗
GETget_account/accounts/:idGet a single account (company or individual) by ID. Returns contacts, tags, custom fields, and assigned users.
Request
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | Account ID |
Response
Examples
1. Describe method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "describe_method",
"arguments": {
"service": "practicepanther",
"method": "get_account"
}
}
}2. Call method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "call_practicepanther",
"arguments": {
"method": "get_account",
"params": {
"id": "<id>"
}
}
}
}Request
GET https://app.ferrule.io/api/v1/practicepanther/accounts/:id Authorization: Bearer <your-api-key> Content-Type: application/json
Response
{
"id": null,
"display_name": null,
"number": null,
"company_name": null,
"address_street_1": null,
"address_street_2": null,
"address_city": null,
"address_state": null,
"address_country": null,
"address_zip_code": null,
"tags": null,
"company_custom_field_values": null,
"assigned_to_users": null,
"created_at": null,
"updated_at": null,
"notes": null,
"primary_contact": null,
"other_contacts": null
}GETlist_accounts/accountsList accounts with optional filters. An account represents one or more contacts (e.g. a company).
Request
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| assigned_to_user_id | string | No | Filter by assigned user ID |
| created_since | string | No | ISO date — return records created after this date |
| updated_since | string | No | ISO date — return records updated after this date |
| search_text | string | No | Search text |
| account_tag | string | No | Filter by account tag |
Response
Examples
1. Describe method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "describe_method",
"arguments": {
"service": "practicepanther",
"method": "list_accounts"
}
}
}2. Call method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "call_practicepanther",
"arguments": {
"method": "list_accounts",
"params": {}
}
}
}Request
GET https://app.ferrule.io/api/v1/practicepanther/accounts Authorization: Bearer <your-api-key> Content-Type: application/json
Response
[
{
"items": []
}
]GETget_bank_account/bank-accounts/:idGet a single bank account (operating, trust, or credit card) by ID.
Request
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | Bank Account ID |
Response
Examples
1. Describe method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "describe_method",
"arguments": {
"service": "practicepanther",
"method": "get_bank_account"
}
}
}2. Call method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "call_practicepanther",
"arguments": {
"method": "get_bank_account",
"params": {
"id": "<id>"
}
}
}
}Request
GET https://app.ferrule.io/api/v1/practicepanther/bank-accounts/:id Authorization: Bearer <your-api-key> Content-Type: application/json
Response
{
"id": null,
"type": null,
"name": null
}GETlist_bank_accounts/bank-accountsList all bank accounts.
Request
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| created_since | string | No | ISO date — return records created after this date |
| updated_since | string | No | ISO date — return records updated after this date |
Response
Examples
1. Describe method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "describe_method",
"arguments": {
"service": "practicepanther",
"method": "list_bank_accounts"
}
}
}2. Call method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "call_practicepanther",
"arguments": {
"method": "list_bank_accounts",
"params": {}
}
}
}Request
GET https://app.ferrule.io/api/v1/practicepanther/bank-accounts Authorization: Bearer <your-api-key> Content-Type: application/json
Response
[
{
"items": []
}
]GETget_call_log/call-logs/:idGet a single call log entry by ID.
Request
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | Call Log ID |
Response
Examples
1. Describe method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "describe_method",
"arguments": {
"service": "practicepanther",
"method": "get_call_log"
}
}
}2. Call method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "call_practicepanther",
"arguments": {
"method": "get_call_log",
"params": {
"id": "<id>"
}
}
}
}Request
GET https://app.ferrule.io/api/v1/practicepanther/call-logs/:id Authorization: Bearer <your-api-key> Content-Type: application/json
Response
{
"id": null,
"account_ref": null,
"matter_ref": null,
"subject": null,
"duration": null,
"notes": null,
"date": null,
"call_direction": null,
"assigned_to_users": null,
"tags": null,
"created_at": null,
"updated_at": null
}GETlist_call_logs/call-logsList call log entries with optional filters by account, matter, user, date range, or tag.
Request
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| assigned_to_user_id | string | No | Filter by assigned user ID |
| account_id | string | No | Filter by account ID |
| matter_id | string | No | Filter by matter ID |
| created_since | string | No | ISO date — return records created after this date |
| updated_since | string | No | ISO date — return records updated after this date |
| date_from | string | No | ISO date — filter from this date |
| date_to | string | No | ISO date — filter to this date |
| activity_tag | string | No | Filter by activity tag |
Response
Examples
1. Describe method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "describe_method",
"arguments": {
"service": "practicepanther",
"method": "list_call_logs"
}
}
}2. Call method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "call_practicepanther",
"arguments": {
"method": "list_call_logs",
"params": {}
}
}
}Request
GET https://app.ferrule.io/api/v1/practicepanther/call-logs Authorization: Bearer <your-api-key> Content-Type: application/json
Response
[
{
"items": []
}
]GETget_contact/contacts/:idGet a single contact by ID. Each account can have multiple contacts; one is the primary.
Request
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | Contact ID |
Response
Examples
1. Describe method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "describe_method",
"arguments": {
"service": "practicepanther",
"method": "get_contact"
}
}
}2. Call method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "call_practicepanther",
"arguments": {
"method": "get_contact",
"params": {
"id": "<id>"
}
}
}
}Request
GET https://app.ferrule.io/api/v1/practicepanther/contacts/:id Authorization: Bearer <your-api-key> Content-Type: application/json
Response
{
"id": null,
"account_ref": null,
"is_primary_contact": null,
"display_name": null,
"first_name": null,
"middle_name": null,
"last_name": null,
"phone_mobile": null,
"phone_home": null,
"phone_fax": null,
"phone_work": null,
"email": null,
"notes": null,
"custom_field_values": null,
"status": null
}GETlist_contacts/contactsList contacts with optional filters by account, status, user, search text, or company.
Request
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| assigned_to_user_id | string | No | Filter by assigned user ID |
| account_id | string | No | Filter by account ID |
| status | string | No | Filter by status |
| created_since | string | No | ISO date — return records created after this date |
| updated_since | string | No | ISO date — return records updated after this date |
| search_text | string | No | Search text |
| account_tag | string | No | Filter by account tag |
| company_name | string | No | Filter by company name |
Response
Examples
1. Describe method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "describe_method",
"arguments": {
"service": "practicepanther",
"method": "list_contacts"
}
}
}2. Call method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "call_practicepanther",
"arguments": {
"method": "list_contacts",
"params": {}
}
}
}Request
GET https://app.ferrule.io/api/v1/practicepanther/contacts Authorization: Bearer <your-api-key> Content-Type: application/json
Response
[
{
"items": []
}
]GETget_custom_field/custom-fields/:idGet a single custom field definition by ID.
Request
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | Custom Field ID |
Response
Examples
1. Describe method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "describe_method",
"arguments": {
"service": "practicepanther",
"method": "get_custom_field"
}
}
}2. Call method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "call_practicepanther",
"arguments": {
"method": "get_custom_field",
"params": {
"id": "<id>"
}
}
}
}Request
GET https://app.ferrule.io/api/v1/practicepanther/custom-fields/:id Authorization: Bearer <your-api-key> Content-Type: application/json
Response
{
"id": null,
"label": null,
"value_type": null,
"dropdown_list_values": null,
"help_text": null,
"tooltip": null
}GETlist_custom_fields_for_company/custom-fields/accountsList custom field definitions for companies (accounts).
Request
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| created_since | string | No | ISO date — return records created after this date |
| updated_since | string | No | ISO date — return records updated after this date |
Response
Examples
1. Describe method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "describe_method",
"arguments": {
"service": "practicepanther",
"method": "list_custom_fields_for_company"
}
}
}2. Call method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "call_practicepanther",
"arguments": {
"method": "list_custom_fields_for_company",
"params": {}
}
}
}Request
GET https://app.ferrule.io/api/v1/practicepanther/custom-fields/accounts Authorization: Bearer <your-api-key> Content-Type: application/json
Response
[
{
"items": []
}
]GETlist_custom_fields_for_matter/custom-fields/mattersList custom field definitions for matters.
Request
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| created_since | string | No | ISO date — return records created after this date |
| updated_since | string | No | ISO date — return records updated after this date |
Response
Examples
1. Describe method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "describe_method",
"arguments": {
"service": "practicepanther",
"method": "list_custom_fields_for_matter"
}
}
}2. Call method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "call_practicepanther",
"arguments": {
"method": "list_custom_fields_for_matter",
"params": {}
}
}
}Request
GET https://app.ferrule.io/api/v1/practicepanther/custom-fields/matters Authorization: Bearer <your-api-key> Content-Type: application/json
Response
[
{
"items": []
}
]GETlist_custom_fields_for_contact/custom-fields/contactsList custom field definitions for contacts.
Request
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| created_since | string | No | ISO date — return records created after this date |
| updated_since | string | No | ISO date — return records updated after this date |
Response
Examples
1. Describe method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "describe_method",
"arguments": {
"service": "practicepanther",
"method": "list_custom_fields_for_contact"
}
}
}2. Call method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "call_practicepanther",
"arguments": {
"method": "list_custom_fields_for_contact",
"params": {}
}
}
}Request
GET https://app.ferrule.io/api/v1/practicepanther/custom-fields/contacts Authorization: Bearer <your-api-key> Content-Type: application/json
Response
[
{
"items": []
}
]GETget_email/emails/:idGet a single email by ID. Returns full HTML body when fetched individually.
Request
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | Email ID |
Response
Examples
1. Describe method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "describe_method",
"arguments": {
"service": "practicepanther",
"method": "get_email"
}
}
}2. Call method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "call_practicepanther",
"arguments": {
"method": "get_email",
"params": {
"id": "<id>"
}
}
}
}Request
GET https://app.ferrule.io/api/v1/practicepanther/emails/:id Authorization: Bearer <your-api-key> Content-Type: application/json
Response
{
"id": null,
"subject": null,
"cc": null,
"to": null,
"from": null,
"body_text": null,
"body_html": null,
"external_message_id": null,
"external_thread_id": null,
"account_ref": null,
"matter_ref": null,
"date": null,
"tags": null,
"attachments": null,
"created_at": null,
"updated_at": null
}GETlist_emails/emailsList emails with optional filters by account, matter, user, tag, or external message ID.
Request
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| assigned_to_user_id | string | No | Filter by assigned user ID |
| account_id | string | No | Filter by account ID |
| matter_id | string | No | Filter by matter ID |
| created_since | string | No | ISO date — return records created after this date |
| updated_since | string | No | ISO date — return records updated after this date |
| activity_tag | string | No | Filter by activity tag |
| external_message_id | string | No | Filter by external message ID |
Response
Examples
1. Describe method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "describe_method",
"arguments": {
"service": "practicepanther",
"method": "list_emails"
}
}
}2. Call method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "call_practicepanther",
"arguments": {
"method": "list_emails",
"params": {}
}
}
}Request
GET https://app.ferrule.io/api/v1/practicepanther/emails Authorization: Bearer <your-api-key> Content-Type: application/json
Response
[
{
"items": []
}
]GETget_event/events/:idGet a single calendar event by ID.
Request
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | Event ID |
Response
Examples
1. Describe method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "describe_method",
"arguments": {
"service": "practicepanther",
"method": "get_event"
}
}
}2. Call method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "call_practicepanther",
"arguments": {
"method": "get_event",
"params": {
"id": "<id>"
}
}
}
}Request
GET https://app.ferrule.io/api/v1/practicepanther/events/:id Authorization: Bearer <your-api-key> Content-Type: application/json
Response
{
"id": null,
"account_ref": null,
"matter_ref": null,
"subject": null,
"location": null,
"notes": null,
"is_all_day": null,
"start_date_time": null,
"end_date_time": null,
"tags": null,
"assigned_to_users": null,
"assigned_to_contacts": null,
"created_at": null,
"updated_at": null
}GETlist_events/eventsList calendar events with optional filters by account, matter, user, date range, or tag.
Request
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| assigned_to_user_id | string | No | Filter by assigned user ID |
| account_id | string | No | Filter by account ID |
| matter_id | string | No | Filter by matter ID |
| created_since | string | No | ISO date — return records created after this date |
| updated_since | string | No | ISO date — return records updated after this date |
| date_from | string | No | ISO date — filter from this date |
| date_to | string | No | ISO date — filter to this date |
| activity_tag | string | No | Filter by activity tag |
Response
Examples
1. Describe method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "describe_method",
"arguments": {
"service": "practicepanther",
"method": "list_events"
}
}
}2. Call method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "call_practicepanther",
"arguments": {
"method": "list_events",
"params": {}
}
}
}Request
GET https://app.ferrule.io/api/v1/practicepanther/events Authorization: Bearer <your-api-key> Content-Type: application/json
Response
[
{
"items": []
}
]GETget_expense_category/expense-categories/:idGet a single expense category by ID.
Request
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | Expense Category ID |
Response
Examples
1. Describe method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "describe_method",
"arguments": {
"service": "practicepanther",
"method": "get_expense_category"
}
}
}2. Call method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "call_practicepanther",
"arguments": {
"method": "get_expense_category",
"params": {
"id": "<id>"
}
}
}
}Request
GET https://app.ferrule.io/api/v1/practicepanther/expense-categories/:id Authorization: Bearer <your-api-key> Content-Type: application/json
Response
{
"id": null,
"name": null,
"created_at": null,
"updated_at": null
}GETlist_expense_categories/expense-categoriesList all expense categories.
Request
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| created_since | string | No | ISO date — return records created after this date |
| updated_since | string | No | ISO date — return records updated after this date |
Response
Examples
1. Describe method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "describe_method",
"arguments": {
"service": "practicepanther",
"method": "list_expense_categories"
}
}
}2. Call method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "call_practicepanther",
"arguments": {
"method": "list_expense_categories",
"params": {}
}
}
}Request
GET https://app.ferrule.io/api/v1/practicepanther/expense-categories Authorization: Bearer <your-api-key> Content-Type: application/json
Response
[
{
"items": []
}
]GETget_expense/expenses/:idGet a single expense by ID. Includes billable status, amount, and category.
Request
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | Expense ID |
Response
Examples
1. Describe method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "describe_method",
"arguments": {
"service": "practicepanther",
"method": "get_expense"
}
}
}2. Call method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "call_practicepanther",
"arguments": {
"method": "get_expense",
"params": {
"id": "<id>"
}
}
}
}Request
GET https://app.ferrule.io/api/v1/practicepanther/expenses/:id Authorization: Bearer <your-api-key> Content-Type: application/json
Response
{
"id": null,
"is_billable": null,
"is_billed": null,
"date": null,
"qty": null,
"price": null,
"amount": null,
"description": null,
"private_notes": null,
"account_ref": null,
"matter_ref": null,
"billed_by_user_ref": null,
"expense_category_ref": null,
"task_code": null,
"created_at": null,
"updated_at": null
}GETlist_expenses/expensesList expenses with optional filters by account, matter, billing user, category, or date range.
Request
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| account_id | string | No | Filter by account ID |
| matter_id | string | No | Filter by matter ID |
| billed_by_user_id | string | No | Filter by billing user ID |
| expense_category_id | string | No | Filter by expense category ID |
| created_since | string | No | ISO date — return records created after this date |
| updated_since | string | No | ISO date — return records updated after this date |
| date_from | string | No | ISO date — filter from this date |
| date_to | string | No | ISO date — filter to this date |
Response
Examples
1. Describe method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "describe_method",
"arguments": {
"service": "practicepanther",
"method": "list_expenses"
}
}
}2. Call method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "call_practicepanther",
"arguments": {
"method": "list_expenses",
"params": {}
}
}
}Request
GET https://app.ferrule.io/api/v1/practicepanther/expenses Authorization: Bearer <your-api-key> Content-Type: application/json
Response
[
{
"items": []
}
]GETget_file/files/:idGet file metadata by ID (name, size, content type).
Request
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | File ID |
Response
Examples
1. Describe method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "describe_method",
"arguments": {
"service": "practicepanther",
"method": "get_file"
}
}
}2. Call method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "call_practicepanther",
"arguments": {
"method": "get_file",
"params": {
"id": "<id>"
}
}
}
}Request
GET https://app.ferrule.io/api/v1/practicepanther/files/:id Authorization: Bearer <your-api-key> Content-Type: application/json
Response
{
"id": null,
"account_ref": null,
"matter_ref": null,
"activity_ref": null,
"description": null,
"file_name": null,
"size": null,
"content_type": null,
"created_at": null,
"updated_at": null
}GETdownload_file/files/:id/downloadDownload a file's contents by ID.
Request
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | File ID to download |
Response
Examples
1. Describe method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "describe_method",
"arguments": {
"service": "practicepanther",
"method": "download_file"
}
}
}2. Call method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "call_practicepanther",
"arguments": {
"method": "download_file",
"params": {
"id": "<id>"
}
}
}
}Request
GET https://app.ferrule.io/api/v1/practicepanther/files/:id/download Authorization: Bearer <your-api-key> Content-Type: application/json
Response
// Raw JSON from upstream API
GETlist_files/filesList files with optional filters by account, matter, activity, creator, or search text.
Request
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| created_since | string | No | ISO date — return records created after this date |
| updated_since | string | No | ISO date — return records updated after this date |
| search_text | string | No | Search text |
| account_id | string | No | Filter by account ID |
| matter_id | string | No | Filter by matter ID |
| activity_id | string | No | Filter by activity ID |
| created_by_user_id | string | No | Filter by creating user ID |
Response
Examples
1. Describe method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "describe_method",
"arguments": {
"service": "practicepanther",
"method": "list_files"
}
}
}2. Call method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "call_practicepanther",
"arguments": {
"method": "list_files",
"params": {}
}
}
}Request
GET https://app.ferrule.io/api/v1/practicepanther/files Authorization: Bearer <your-api-key> Content-Type: application/json
Response
[
{
"items": []
}
]GETget_flat_fee/flat-fees/:idGet a single flat fee entry by ID.
Request
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | Flat Fee ID |
Response
Examples
1. Describe method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "describe_method",
"arguments": {
"service": "practicepanther",
"method": "get_flat_fee"
}
}
}2. Call method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "call_practicepanther",
"arguments": {
"method": "get_flat_fee",
"params": {
"id": "<id>"
}
}
}
}Request
GET https://app.ferrule.io/api/v1/practicepanther/flat-fees/:id Authorization: Bearer <your-api-key> Content-Type: application/json
Response
{
"id": null,
"is_billable": null,
"is_billed": null,
"date": null,
"qty": null,
"price": null,
"description": null,
"private_notes": null,
"account_ref": null,
"matter_ref": null,
"billed_by_user_ref": null,
"item_ref": null,
"created_at": null,
"updated_at": null
}GETlist_flat_fees/flat-feesList flat fees with optional filters by account, matter, user, item, or date range.
Request
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| account_id | string | No | Filter by account ID |
| matter_id | string | No | Filter by matter ID |
| user_id | string | No | Filter by user ID |
| item_id | string | No | Filter by item ID |
| created_since | string | No | ISO date — return records created after this date |
| updated_since | string | No | ISO date — return records updated after this date |
| date_from | string | No | ISO date — filter from this date |
| date_to | string | No | ISO date — filter to this date |
Response
Examples
1. Describe method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "describe_method",
"arguments": {
"service": "practicepanther",
"method": "list_flat_fees"
}
}
}2. Call method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "call_practicepanther",
"arguments": {
"method": "list_flat_fees",
"params": {}
}
}
}Request
GET https://app.ferrule.io/api/v1/practicepanther/flat-fees Authorization: Bearer <your-api-key> Content-Type: application/json
Response
[
{
"items": []
}
]GETget_invoice/invoices/:idGet a single invoice by ID with line items (time entries, expenses, flat fees).
Request
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | Invoice ID |
Response
Examples
1. Describe method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "describe_method",
"arguments": {
"service": "practicepanther",
"method": "get_invoice"
}
}
}2. Call method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "call_practicepanther",
"arguments": {
"method": "get_invoice",
"params": {
"id": "<id>"
}
}
}
}Request
GET https://app.ferrule.io/api/v1/practicepanther/invoices/:id Authorization: Bearer <your-api-key> Content-Type: application/json
Response
{
"account_ref": null,
"matter_ref": null,
"id": null,
"issue_date": null,
"due_date": null,
"items_time_entries": null,
"items_expenses": null,
"items_flat_fees": null,
"subtotal": null,
"tax": null,
"discount": null,
"total": null,
"total_paid": null,
"total_outstanding": null,
"invoice_type": null,
"created_at": null,
"updated_at": null
}GETlist_invoices/invoicesList invoices with optional filters by account, matter, or date range. PracticePanther caps each response at 2500 rows; use $skip and $top to page beyond the cap.
Request
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| account_id | string | No | Filter by account ID |
| matter_id | string | No | Filter by matter ID |
| created_since | string | No | ISO date — return records created after this date |
| updated_since | string | No | ISO date — return records updated after this date |
| date_from | string | No | ISO date — filter from this date |
| date_to | string | No | ISO date — filter to this date |
| $skip | integer | No | Skip the first N rows. PracticePanther caps each response at 2500 rows; combine with $top to page beyond the cap. |
| $top | integer | No | Return at most N rows (PracticePanther enforces a max of 2500 per response). |
Response
Examples
1. Describe method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "describe_method",
"arguments": {
"service": "practicepanther",
"method": "list_invoices"
}
}
}2. Call method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "call_practicepanther",
"arguments": {
"method": "list_invoices",
"params": {}
}
}
}Request
GET https://app.ferrule.io/api/v1/practicepanther/invoices Authorization: Bearer <your-api-key> Content-Type: application/json
Response
[
{
"items": []
}
]GETget_item/items/:idGet a single billing item/service by ID.
Request
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | Item ID |
Response
Examples
1. Describe method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "describe_method",
"arguments": {
"service": "practicepanther",
"method": "get_item"
}
}
}2. Call method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "call_practicepanther",
"arguments": {
"method": "get_item",
"params": {
"id": "<id>"
}
}
}
}Request
GET https://app.ferrule.io/api/v1/practicepanther/items/:id Authorization: Bearer <your-api-key> Content-Type: application/json
Response
{
"id": null,
"name": null,
"code": null,
"description": null,
"rate": null,
"created_at": null,
"updated_at": null
}GETlist_items/itemsList all billing items/services.
Request
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| created_since | string | No | ISO date — return records created after this date |
| updated_since | string | No | ISO date — return records updated after this date |
Response
Examples
1. Describe method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "describe_method",
"arguments": {
"service": "practicepanther",
"method": "list_items"
}
}
}2. Call method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "call_practicepanther",
"arguments": {
"method": "list_items",
"params": {}
}
}
}Request
GET https://app.ferrule.io/api/v1/practicepanther/items Authorization: Bearer <your-api-key> Content-Type: application/json
Response
[
{
"items": []
}
]GETget_matter/matters/:idGet a single matter (case/project) by ID. Returns status, assigned users, tags, and custom fields.
Request
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | Matter ID |
Response
Examples
1. Describe method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "describe_method",
"arguments": {
"service": "practicepanther",
"method": "get_matter"
}
}
}2. Call method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "call_practicepanther",
"arguments": {
"method": "get_matter",
"params": {
"id": "<id>"
}
}
}
}Request
GET https://app.ferrule.io/api/v1/practicepanther/matters/:id Authorization: Bearer <your-api-key> Content-Type: application/json
Response
{
"id": null,
"account_ref": null,
"number": null,
"display_name": null,
"name": null,
"notes": null,
"rate": null,
"open_date": null,
"close_date": null,
"statute_of_limitation_date": null,
"tags": null,
"status": null,
"assigned_to_users": null,
"custom_field_values": null,
"created_at": null,
"updated_at": null
}GETlist_matters/mattersList matters with optional filters by account, status (Open/Closed/Pending/Archived), user, search text, or tags.
Request
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| assigned_to_user_id | string | No | Filter by assigned user ID |
| account_id | string | No | Filter by account ID |
| status | string | No | Filter by matter status |
| created_since | string | No | ISO date — return records created after this date |
| updated_since | string | No | ISO date — return records updated after this date |
| search_text | string | No | Search text |
| account_tag | string | No | Filter by account tag |
| matter_tag | string | No | Filter by matter tag |
Response
Examples
1. Describe method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "describe_method",
"arguments": {
"service": "practicepanther",
"method": "list_matters"
}
}
}2. Call method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "call_practicepanther",
"arguments": {
"method": "list_matters",
"params": {}
}
}
}Request
GET https://app.ferrule.io/api/v1/practicepanther/matters Authorization: Bearer <your-api-key> Content-Type: application/json
Response
[
{
"items": []
}
]GETlist_messages/messagesList all messages.
Request
No input parameters.
Response
Examples
1. Describe method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "describe_method",
"arguments": {
"service": "practicepanther",
"method": "list_messages"
}
}
}2. Call method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "call_practicepanther",
"arguments": {
"method": "list_messages",
"params": {}
}
}
}Request
GET https://app.ferrule.io/api/v1/practicepanther/messages Authorization: Bearer <your-api-key> Content-Type: application/json
Response
[
{
"items": []
}
]GETget_note/notes/:idGet a single note by ID.
Request
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | Note ID |
Response
Examples
1. Describe method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "describe_method",
"arguments": {
"service": "practicepanther",
"method": "get_note"
}
}
}2. Call method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "call_practicepanther",
"arguments": {
"method": "get_note",
"params": {
"id": "<id>"
}
}
}
}Request
GET https://app.ferrule.io/api/v1/practicepanther/notes/:id Authorization: Bearer <your-api-key> Content-Type: application/json
Response
{
"id": null,
"account_ref": null,
"matter_ref": null,
"subject": null,
"note": null,
"assigned_to_users": null,
"date": null,
"tags": null,
"created_at": null,
"updated_at": null
}GETlist_notes/notesList notes with optional filters by account, matter, user, date range, or tag.
Request
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| assigned_to_user_id | string | No | Filter by assigned user ID |
| account_id | string | No | Filter by account ID |
| matter_id | string | No | Filter by matter ID |
| created_since | string | No | ISO date — return records created after this date |
| updated_since | string | No | ISO date — return records updated after this date |
| date_from | string | No | ISO date — filter from this date |
| date_to | string | No | ISO date — filter to this date |
| activity_tag | string | No | Filter by activity tag |
Response
Examples
1. Describe method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "describe_method",
"arguments": {
"service": "practicepanther",
"method": "list_notes"
}
}
}2. Call method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "call_practicepanther",
"arguments": {
"method": "list_notes",
"params": {}
}
}
}Request
GET https://app.ferrule.io/api/v1/practicepanther/notes Authorization: Bearer <your-api-key> Content-Type: application/json
Response
[
{
"items": []
}
]GETget_payment/payments/:idGet a single payment by ID with full details including status.
Request
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | Payment ID |
Response
Examples
1. Describe method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "describe_method",
"arguments": {
"service": "practicepanther",
"method": "get_payment"
}
}
}2. Call method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "call_practicepanther",
"arguments": {
"method": "get_payment",
"params": {
"id": "<id>"
}
}
}
}Request
GET https://app.ferrule.io/api/v1/practicepanther/payments/:id Authorization: Bearer <your-api-key> Content-Type: application/json
Response
{
"refundedAmount": null,
"id": null,
"account_ref": null,
"matter_ref": null,
"number": null,
"date": null,
"total_amount": null,
"unapplied_amount": null,
"notes": null,
"payee": null,
"to_print": null,
"check_number": null,
"bank_account": null,
"created_at": null,
"updated_at": null,
"status": null
}GETlist_payments/paymentsList payments with optional filters by account, matter, bank account, type, or date range.
Request
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| account_id | string | No | Filter by account ID |
| matter_id | string | No | Filter by matter ID |
| bank_account_id | string | No | Filter by bank account ID |
| bank_account_type | string | No | Filter by bank account type |
| created_since | string | No | ISO date — return records created after this date |
| updated_since | string | No | ISO date — return records updated after this date |
| date_from | string | No | ISO date — filter from this date |
| date_to | string | No | ISO date — filter to this date |
Response
Examples
1. Describe method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "describe_method",
"arguments": {
"service": "practicepanther",
"method": "list_payments"
}
}
}2. Call method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "call_practicepanther",
"arguments": {
"method": "list_payments",
"params": {}
}
}
}Request
GET https://app.ferrule.io/api/v1/practicepanther/payments Authorization: Bearer <your-api-key> Content-Type: application/json
Response
[
{
"items": []
}
]GETget_relationship/relationships/:idGet a single matter-contact relationship by ID.
Request
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | Relationship ID |
Response
Examples
1. Describe method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "describe_method",
"arguments": {
"service": "practicepanther",
"method": "get_relationship"
}
}
}2. Call method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "call_practicepanther",
"arguments": {
"method": "get_relationship",
"params": {
"id": "<id>"
}
}
}
}Request
GET https://app.ferrule.io/api/v1/practicepanther/relationships/:id Authorization: Bearer <your-api-key> Content-Type: application/json
Response
{
"id": null,
"contact_ref": null,
"matter_ref": null,
"name": null,
"notes": null
}GETlist_relationships/relationshipsList relationships between contacts and matters with optional filters.
Request
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| contact_id | string | No | Filter by contact ID |
| matter_id | string | No | Filter by matter ID |
| account_id | string | No | Filter by account ID |
| created_since | string | No | ISO date — return records created after this date |
| updated_since | string | No | ISO date — return records updated after this date |
Response
Examples
1. Describe method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "describe_method",
"arguments": {
"service": "practicepanther",
"method": "list_relationships"
}
}
}2. Call method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "call_practicepanther",
"arguments": {
"method": "list_relationships",
"params": {}
}
}
}Request
GET https://app.ferrule.io/api/v1/practicepanther/relationships Authorization: Bearer <your-api-key> Content-Type: application/json
Response
[
{
"items": []
}
]GETget_task/tasks/:idGet a single task by ID.
Request
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | Task ID |
Response
Examples
1. Describe method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "describe_method",
"arguments": {
"service": "practicepanther",
"method": "get_task"
}
}
}2. Call method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "call_practicepanther",
"arguments": {
"method": "get_task",
"params": {
"id": "<id>"
}
}
}
}Request
GET https://app.ferrule.io/api/v1/practicepanther/tasks/:id Authorization: Bearer <your-api-key> Content-Type: application/json
Response
{
"id": null,
"account_ref": null,
"matter_ref": null,
"subject": null,
"notes": null,
"priority": null,
"status": null,
"due_date": null,
"assigned_to_users": null,
"assigned_to_contacts": null,
"tags": null,
"created_at": null,
"updated_at": null
}GETlist_tasks/tasksList tasks with optional filters by account, matter, user, status, due date range, or tag.
Request
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| assigned_to_user_id | string | No | Filter by assigned user ID |
| account_id | string | No | Filter by account ID |
| matter_id | string | No | Filter by matter ID |
| created_since | string | No | ISO date — return records created after this date |
| updated_since | string | No | ISO date — return records updated after this date |
| status | string | No | Filter by task status |
| due_date_from | string | No | ISO date — filter by due date from |
| due_date_to | string | No | ISO date — filter by due date to |
| activity_tag | string | No | Filter by activity tag |
Response
Examples
1. Describe method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "describe_method",
"arguments": {
"service": "practicepanther",
"method": "list_tasks"
}
}
}2. Call method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "call_practicepanther",
"arguments": {
"method": "list_tasks",
"params": {}
}
}
}Request
GET https://app.ferrule.io/api/v1/practicepanther/tasks Authorization: Bearer <your-api-key> Content-Type: application/json
Response
[
{
"items": []
}
]GETget_time_entry/time-entries/:idGet a single time entry by ID. Hours are decimal (e.g. 1.5 = 1h30m).
Request
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | Time Entry ID |
Response
Examples
1. Describe method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "describe_method",
"arguments": {
"service": "practicepanther",
"method": "get_time_entry"
}
}
}2. Call method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "call_practicepanther",
"arguments": {
"method": "get_time_entry",
"params": {
"id": "<id>"
}
}
}
}Request
GET https://app.ferrule.io/api/v1/practicepanther/time-entries/:id Authorization: Bearer <your-api-key> Content-Type: application/json
Response
{
"id": null,
"is_billable": null,
"is_billed": null,
"date": null,
"hours": null,
"rate": null,
"description": null,
"private_notes": null,
"account_ref": null,
"matter_ref": null,
"billed_by_user_ref": null,
"item_ref": null,
"task_code": null,
"created_at": null,
"updated_at": null
}GETlist_time_entries/time-entriesList time entries with optional filters by account, matter, user, item, or date range.
Request
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| account_id | string | No | Filter by account ID |
| matter_id | string | No | Filter by matter ID |
| user_id | string | No | Filter by user ID |
| item_id | string | No | Filter by item ID |
| created_since | string | No | ISO date — return records created after this date |
| updated_since | string | No | ISO date — return records updated after this date |
| date_from | string | No | ISO date — filter from this date |
| date_to | string | No | ISO date — filter to this date |
Response
Examples
1. Describe method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "describe_method",
"arguments": {
"service": "practicepanther",
"method": "list_time_entries"
}
}
}2. Call method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "call_practicepanther",
"arguments": {
"method": "list_time_entries",
"params": {}
}
}
}Request
GET https://app.ferrule.io/api/v1/practicepanther/time-entries Authorization: Bearer <your-api-key> Content-Type: application/json
Response
[
{
"items": []
}
]GETget_me/users/meGet the currently authenticated user's profile.
Request
No input parameters.
Response
Examples
1. Describe method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "describe_method",
"arguments": {
"service": "practicepanther",
"method": "get_me"
}
}
}2. Call method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "call_practicepanther",
"arguments": {
"method": "get_me",
"params": {}
}
}
}Request
GET https://app.ferrule.io/api/v1/practicepanther/users/me Authorization: Bearer <your-api-key> Content-Type: application/json
Response
{
"id": null,
"is_active": null,
"display_name": null,
"first_name": null,
"last_name": null,
"middle_name": null,
"email": null,
"created_at": null,
"updated_at": null
}GETget_user/users/:idGet a single user by ID.
Request
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | User ID |
Response
Examples
1. Describe method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "describe_method",
"arguments": {
"service": "practicepanther",
"method": "get_user"
}
}
}2. Call method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "call_practicepanther",
"arguments": {
"method": "get_user",
"params": {
"id": "<id>"
}
}
}
}Request
GET https://app.ferrule.io/api/v1/practicepanther/users/:id Authorization: Bearer <your-api-key> Content-Type: application/json
Response
{
"id": null,
"is_active": null,
"display_name": null,
"first_name": null,
"last_name": null,
"middle_name": null,
"email": null,
"created_at": null,
"updated_at": null
}GETlist_users/usersList users with optional filters by creation date, update date, or email address.
Request
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| created_since | string | No | ISO date — return records created after this date |
| updated_since | string | No | ISO date — return records updated after this date |
| email_address | string | No | Filter by email address |
Response
Examples
1. Describe method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "describe_method",
"arguments": {
"service": "practicepanther",
"method": "list_users"
}
}
}2. Call method
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "call_practicepanther",
"arguments": {
"method": "list_users",
"params": {}
}
}
}Request
GET https://app.ferrule.io/api/v1/practicepanther/users Authorization: Bearer <your-api-key> Content-Type: application/json
Response
[
{
"items": []
}
]