Smokeball Intake API

The Intake API from Smokeball — 3 operation(s) for intake.

Operations 4

GET /intake/forms Get intake forms for a matter type #
GET /intake/{matterId}/submissions Get intake submissions for a matter #
POST /intake/{matterId}/submissions Create an intake submission for a matter #
GET /intake/{matterId}/submissions/{submissionId} Get an intake submission #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/smokeball-intake-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

smokeball-intake-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Smokeball Intake API
  version: '1.0'
  description: REST API for integrating with Smokeball legal practice management software. Supports matters, contacts, documents, time entries, billing, trust accounting, staff, webhooks, and law firm workflows across US, AU, and UK regions. Uses OAuth 2.0 (client credentials) authentication.
  contact:
    name: Smokeball Developer Support
    url: https://docs.smokeball.com/docs/api-docs/1e13a13124aee-introduction
  x-api-id: smokeball
  x-audience: external-public
servers:
- url: https://api.smokeball.com
- url: https://api.smokeball.com.au
- url: https://api.smokeball.co.uk
- url: https://stagingapi.smokeball.com
- url: https://stagingapi.smokeball.com.au
- url: https://stagingapi.smokeball.co.uk
security:
- api-key: []
  token: []
tags:
- name: Intake
paths:
  /intake/forms:
    get:
      tags:
      - Intake
      summary: Get intake forms for a matter type
      operationId: GetFormsAsync
      parameters:
      - name: matterTypeId
        in: query
        description: The matter type to filter forms by.
        schema:
          type: string
      - name: Offset
        in: query
        schema:
          maximum: 2147483647
          minimum: 0
          type: integer
          format: int32
      - name: Limit
        in: query
        schema:
          maximum: 500
          minimum: 1
          type: integer
          format: int32
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IntakeFormPagedCollection'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      x-excluded: true
  /intake/{matterId}/submissions:
    get:
      tags:
      - Intake
      summary: Get intake submissions for a matter
      operationId: GetSubmissionsAsync
      parameters:
      - name: matterId
        in: path
        description: The matter to filter submissions by.
        required: true
        schema:
          type: string
      - name: Offset
        in: query
        schema:
          maximum: 2147483647
          minimum: 0
          type: integer
          format: int32
      - name: Limit
        in: query
        schema:
          maximum: 500
          minimum: 1
          type: integer
          format: int32
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IntakeSubmissionPagedCollection'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      x-excluded: true
    post:
      tags:
      - Intake
      summary: Create an intake submission for a matter
      operationId: CreateSubmissionAsync
      parameters:
      - name: matterId
        in: path
        description: Matter to associate the submission with.
        required: true
        schema:
          type: string
      requestBody:
        description: The submission payload including matter, form, delivery method, and recipient.
        content:
          application/json-patch+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/CreateIntakeSubmissionRequestDto'
          application/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/CreateIntakeSubmissionRequestDto'
          application/*+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/CreateIntakeSubmissionRequestDto'
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IntakeSubmissionCreated'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      x-excluded: true
  /intake/{matterId}/submissions/{submissionId}:
    get:
      tags:
      - Intake
      summary: Get an intake submission
      operationId: GetSubmissionAsync
      parameters:
      - name: submissionId
        in: path
        description: The intake submission identifier.
        required: true
        schema:
          type: string
      - name: matterId
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IntakeSubmissionDetail'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      x-excluded: true
components:
  schemas:
    Link:
      type: object
      properties:
        id:
          type:
          - string
          - 'null'
        href:
          type:
          - string
          - 'null'
        relation:
          type:
          - string
          - 'null'
        method:
          type:
          - string
          - 'null'
          default: GET
      additionalProperties: false
    IntakeRecipientDto:
      type: object
      properties:
        contactId:
          type:
          - string
          - 'null'
          description: Contact id that the submission is sent to.
          example: 5d9b8697-8c6f-45dd-b22d-87045ed4df35
        email:
          type:
          - string
          - 'null'
          description: Email address of the recipient.
          example: client@example.com
        name:
          type:
          - string
          - 'null'
          description: Display name of the recipient.
          example: Sample Client
      additionalProperties: false
    IntakeSubmission:
      type: object
      properties:
        id:
          type:
          - string
          - 'null'
        href:
          type:
          - string
          - 'null'
        relation:
          type:
          - string
          - 'null'
        method:
          type:
          - string
          - 'null'
          default: GET
        self:
          allOf:
          - $ref: '#/components/schemas/Link'
        formId:
          type:
          - string
          - 'null'
          description: Id of the form that the submission is for.
          example: ae4bc84e-b601-4767-9d0f-5d078832418e
        formTitle:
          type:
          - string
          - 'null'
          description: Title of the form that the submission is for.
          example: Client Intake Form
        status:
          allOf:
          - $ref: '#/components/schemas/IntakeSubmissionStatus'
          description: Current status of the submission.
          example: draft
        communicationMethod:
          allOf:
          - $ref: '#/components/schemas/IntakeSubmissionCommunicationMethod'
          description: How the form was sent.
          example: email
        matter:
          allOf:
          - $ref: '#/components/schemas/Link'
          description: Link to matter that the submission is associated with.
        createdDate:
          type: string
          description: When the submission was created.
          format: date-time
          example: '2026-01-01T00:00:00.0000000+00:00'
        lastUpdated:
          type: string
          description: When the submission was last updated.
          format: date-time
          example: '2026-01-01T00:00:00.0000000+00:00'
        recipient:
          allOf:
          - $ref: '#/components/schemas/IntakeRecipientDto'
          description: Recipient that the submission is sent to.
      additionalProperties: false
      description: Intake submission.
    SubmissionResponseFieldType:
      enum:
      - text
      - multilineText
      - number
      - currency
      - choice
      - info
      - date
      - checkbox
      - address
      - yesNo
      - phoneNumber
      - email
      - file
      - appointment
      - payment
      - signature
      type: string
      description: Submission response field type.
    IntakeSubmissionPagedCollection:
      type: object
      properties:
        id:
          type:
          - string
          - 'null'
        href:
          type:
          - string
          - 'null'
        relation:
          type:
          - string
          - 'null'
        method:
          type:
          - string
          - 'null'
          default: GET
        self:
          allOf:
          - $ref: '#/components/schemas/Link'
        value:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/IntakeSubmission'
        offset:
          type:
          - integer
          - 'null'
          format: int32
        limit:
          type:
          - integer
          - 'null'
          format: int32
        size:
          type: integer
          format: int64
        first:
          allOf:
          - $ref: '#/components/schemas/Link'
        previous:
          allOf:
          - $ref: '#/components/schemas/Link'
        next:
          allOf:
          - $ref: '#/components/schemas/Link'
        last:
          allOf:
          - $ref: '#/components/schemas/Link'
      additionalProperties: false
    IntakeSubmissionResponseGroupDto:
      type: object
      properties:
        label:
          type:
          - string
          - 'null'
          description: Display label for the group.
          example: Primary Contact
        fields:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/IntakeSubmissionResponseFieldDto'
          description: Fields within the group.
      additionalProperties: false
    CreateIntakeSubmissionRequestDto:
      type: object
      properties:
        formId:
          type:
          - string
          - 'null'
          description: Id of the intake form to create a submission for.
          example: ae4bc84e-b601-4767-9d0f-5d078832418e
        communicationMethod:
          allOf:
          - $ref: '#/components/schemas/CreateSubmissionCommunicationMethod'
          description: How the form will be delivered.
          example: email
        recipient:
          allOf:
          - $ref: '#/components/schemas/IntakeRecipientDto'
          description: Recipient details for the submission.
      additionalProperties: false
    IntakeSubmissionCommunicationMethod:
      enum:
      - email
      - communicate
      - embed
      - internalUse
      - document
      type: string
      description: Intake submission communication method.
    IntakeSubmissionCreated:
      type: object
      properties:
        id:
          type:
          - string
          - 'null'
        href:
          type:
          - string
          - 'null'
        relation:
          type:
          - string
          - 'null'
        method:
          type:
          - string
          - 'null'
          default: GET
        self:
          allOf:
          - $ref: '#/components/schemas/Link'
        link:
          type:
          - string
          - 'null'
          description: URL to complete the intake submission.
          example: https://example.smokeball.com/intake/submissions/e8b673fe-5493-4b1f-986c-af82542fb6d8
      additionalProperties: false
      description: Intake submission created response.
    IntakeFormPagedCollection:
      type: object
      properties:
        id:
          type:
          - string
          - 'null'
        href:
          type:
          - string
          - 'null'
        relation:
          type:
          - string
          - 'null'
        method:
          type:
          - string
          - 'null'
          default: GET
        self:
          allOf:
          - $ref: '#/components/schemas/Link'
        value:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/IntakeForm'
        offset:
          type:
          - integer
          - 'null'
          format: int32
        limit:
          type:
          - integer
          - 'null'
          format: int32
        size:
          type: integer
          format: int64
        first:
          allOf:
          - $ref: '#/components/schemas/Link'
        previous:
          allOf:
          - $ref: '#/components/schemas/Link'
        next:
          allOf:
          - $ref: '#/components/schemas/Link'
        last:
          allOf:
          - $ref: '#/components/schemas/Link'
      additionalProperties: false
    ProblemDetails:
      type: object
      properties:
        type:
          type:
          - string
          - 'null'
        title:
          type:
          - string
          - 'null'
        status:
          type:
          - integer
          - 'null'
          format: int32
        detail:
          type:
          - string
          - 'null'
        instance:
          type:
          - string
          - 'null'
      additionalProperties: {}
    IntakeSubmissionStatus:
      enum:
      - draft
      - active
      - completed
      - cancelled
      type: string
      description: Intake submission status.
    CreateSubmissionCommunicationMethod:
      enum:
      - email
      - communicate
      type: string
      description: Specifies the communication method used when creating an intake submission
    IntakeSubmissionResponseSectionDto:
      type: object
      properties:
        sectionTitle:
          type:
          - string
          - 'null'
          description: Title of the section.
          example: Contact Details
        groups:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/IntakeSubmissionResponseGroupDto'
          description: Groups within the section.
        fields:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/IntakeSubmissionResponseFieldDto'
          description: Fields directly under the section.
      additionalProperties: false
    IntakeSubmissionDetail:
      type: object
      properties:
        id:
          type:
          - string
          - 'null'
        href:
          type:
          - string
          - 'null'
        relation:
          type:
          - string
          - 'null'
        method:
          type:
          - string
          - 'null'
          default: GET
        self:
          allOf:
          - $ref: '#/components/schemas/Link'
        formId:
          type:
          - string
          - 'null'
          description: Id of the form that the submission is for.
          example: ae4bc84e-b601-4767-9d0f-5d078832418e
        formTitle:
          type:
          - string
          - 'null'
          description: Title of the form that the submission is for.
          example: Client Intake Form
        status:
          allOf:
          - $ref: '#/components/schemas/IntakeSubmissionStatus'
          description: Current status of the submission.
          example: draft
        communicationMethod:
          allOf:
          - $ref: '#/components/schemas/IntakeSubmissionCommunicationMethod'
          description: How the form was sent.
          example: email
        matter:
          allOf:
          - $ref: '#/components/schemas/Link'
          description: Link to matter that the submission is associated with.
        createdDate:
          type: string
          description: When the submission was created.
          format: date-time
          example: '2026-01-01T00:00:00.0000000+00:00'
        lastUpdated:
          type: string
          description: When the submission was last updated.
          format: date-time
          example: '2026-01-01T00:00:00.0000000+00:00'
        recipient:
          allOf:
          - $ref: '#/components/schemas/IntakeRecipientDto'
          description: Recipient that the submission is sent to.
        responses:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/IntakeSubmissionResponseSectionDto'
          description: Ordered list of sections with submitted values.
      additionalProperties: false
      description: Intake submission detail.
    IntakeFormCategory:
      enum:
      - lead
      - matter
      type: string
    IntakeSubmissionResponseFieldDto:
      type: object
      properties:
        type:
          allOf:
          - $ref: '#/components/schemas/SubmissionResponseFieldType'
          description: Field control type.
          example: text
        label:
          type:
          - string
          - 'null'
          description: Display label for the field.
          example: Phone number
        value:
          type:
          - string
          - 'null'
          description: Submitted value as a string.
          example: 0400 000 000
      additionalProperties: false
    IntakeForm:
      type: object
      properties:
        id:
          type:
          - string
          - 'null'
        href:
          type:
          - string
          - 'null'
        relation:
          type:
          - string
          - 'null'
        method:
          type:
          - string
          - 'null'
          default: GET
        self:
          allOf:
          - $ref: '#/components/schemas/Link'
        isSmokeballForm:
          type: boolean
          description: 'Whether the form is a Smokeball form.


            There are some forms that are created / can only be modified by Smokeball staff. The user can choose to use these “preset” forms if they don’t want to create their own ones.'
          example: true
        title:
          type:
          - string
          - 'null'
          description: Display title of the intake form.
          example: Client Intake Form
        category:
          allOf:
          - $ref: '#/components/schemas/IntakeFormCategory'
          description: Category of the form.
          example: matter
        matterTypes:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/Link'
          description: Links to matter types that this form is available for.
        active:
          type:
          - boolean
          - 'null'
          description: Whether the form is active.
          example: true
        createdDate:
          type: string
          description: When the form was created.
          format: date-time
          example: '2026-01-01T00:00:00.0000000+00:00'
        lastUpdated:
          type: string
          description: When the form was last updated.
          format: date-time
          example: '2026-01-01T00:00:00.0000000+00:00'
      additionalProperties: false
      description: Intake form.
  securitySchemes:
    api-key:
      type: apiKey
      name: x-api-key
      in: header
    token:
      type: apiKey
      name: Authorization
      in: header
      x-amazon-apigateway-authtype: cognito_user_pools