Create a Smokeball expense entry (internal)

Add MCP server to your AI tool

Allow AI tools and LLMs to interact with the API documentation portal through MCP.

MCP server URL

https://docs.usehearsay.com/mcp

Standard setup for AI tools providing an mcp.json file

mcp.json
{
  "integrations MCP server": {
    "url": "https://docs.usehearsay.com/mcp"
  }
}

Close
POST /legal/smokeball/matters/{matterId}/billing/expense

Test route: creates a billable expense (amount, description, an optional date that defaults to today and an optional expense category) directly on a Smokeball matter by its Smokeball id, through the firm's primary connection, and returns the created entry in activity. Requires an org admin or owner; returns 403 while the Smokeball integration is turned off.

Headers

  • organization string Required

    id of the selected (active) organization

Path parameters

  • matterId string Required

    Smokeball matter ID to attach the expense to

application/json

Body Required

  • amount number Required

    Expense amount in the matter currency.

  • description string Required

    Description shown on the provider expense line item.

  • date string

    ISO-8601 date the expense was incurred. Defaults to today when omitted.

  • expenseCategoryId string

    Optional provider expense-category / activity-code id used to categorize the expense.

Responses

  • 201 application/json
    Hide response attributes Show response attributes object
    • data object Required
      Hide data attribute Show data attribute object
      • activity object
        Hide activity attributes Show activity attributes object
        • id string
        • matterId string
        • date string(date-time)
        • description string
        • type string

          Values are time, flat_fee, or expense.

        • rate number
        • total number
        • staffId string
    • statusCode number Required
    • timestamp string(date-time) Required
POST /legal/smokeball/matters/{matterId}/billing/expense
curl \
 --request POST 'http://api.example.com/legal/smokeball/matters/{matterId}/billing/expense' \
 --header "Authorization: Bearer $ACCESS_TOKEN" \
 --header "Content-Type: application/json" \
 --header "organization: string" \
 --data '{
  "amount": 49,
  "description": "Hearsay: phone extraction upload",
  "date": "2026-05-29",
  "expenseCategoryId": "string"
}'
Request examples
# Headers
organization: string

# Payload
{
  "amount": 49,
  "description": "Hearsay: phone extraction upload",
  "date": "2026-05-29",
  "expenseCategoryId": "string"
}
Response examples (201)
{
  "data": {
    "activity": {
      "id": "445566",
      "matterId": "12345",
      "date": "2026-01-15T10:15:00.000Z",
      "description": "Hearsay: phone extraction upload",
      "type": "expense",
      "rate": 49,
      "total": 49,
      "staffId": "string"
    }
  },
  "statusCode": 201,
  "timestamp": "2026-01-15T10:15:00.000Z"
}