Smokeball Intake API

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

OpenAPI Specification

smokeball-intake-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Smokeball Activity Codes 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:
    CreateIntakeSubmissionRequestDto:
      type: object
      properties:
        formId:
          type: string
          description: Id of the intake form to create a submission for.
          nullable: true
          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.
          nullable: true
      additionalProperties: false
    IntakeSubmissionStatus:
      enum:
      - draft
      - active
      - completed
      - cancelled
      type: string
      description: Intake submission status.
    IntakeFormCategory:
      enum:
      - lead
      - matter
      type: string
    IntakeFormPagedCollection:
      type: object
      properties:
        id:
          type: string
          nullable: true
        href:
          type: string
          nullable: true
        relation:
          type: string
          nullable: true
        method:
          type: string
          default: GET
          nullable: true
        self:
          allOf:
          - $ref: '#/components/schemas/Link'
          nullable: true
        value:
          type: array
          items:
            $ref: '#/components/schemas/IntakeForm'
          nullable: true
        offset:
          type: integer
          format: int32
          nullable: true
        limit:
          type: integer
          format: int32
          nullable: true
        size:
          type: integer
          format: int64
        first:
          allOf:
          - $ref: '#/components/schemas/Link'
          nullable: true
        previous:
          allOf:
          - $ref: '#/components/schemas/Link'
          nullable: true
        next:
          allOf:
          - $ref: '#/components/schemas/Link'
          nullable: true
        last:
          allOf:
          - $ref: '#/components/schemas/Link'
          nullable: true
      additionalProperties: false
    IntakeForm:
      type: object
      properties:
        id:
          type: string
          nullable: true
        href:
          type: string
          nullable: true
        relation:
          type: string
          nullable: true
        method:
          type: string
          default: GET
          nullable: true
        self:
          allOf:
          - $ref: '#/components/schemas/Link'
          nullable: true
        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
          description: Display title of the intake form.
          nullable: true
          example: Client Intake Form
        category:
          allOf:
          - $ref: '#/components/schemas/IntakeFormCategory'
          description: Category of the form.
          example: matter
        matterTypes:
          type: array
          items:
            $ref: '#/components/schemas/Link'
          description: Links to matter types that this form is available for.
          nullable: true
        active:
          type: boolean
          description: Whether the form is active.
          nullable: true
          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.
    CreateSubmissionCommunicationMethod:
      enum:
      - email
      - communicate
      type: string
      description: Specifies the communication method used when creating an intake submission
    IntakeSubmissionResponseSectionDto:
      type: object
      properties:
        sectionTitle:
          type: string
          description: Title of the section.
          nullable: true
          example: Contact Details
        groups:
          type: array
          items:
            $ref: '#/components/schemas/IntakeSubmissionResponseGroupDto'
          description: Groups within the section.
          nullable: true
        fields:
          type: array
          items:
            $ref: '#/components/schemas/IntakeSubmissionResponseFieldDto'
          description: Fields directly under the section.
          nullable: true
      additionalProperties: false
    IntakeSubmissionPagedCollection:
      type: object
      properties:
        id:
          type: string
          nullable: true
        href:
          type: string
          nullable: true
        relation:
          type: string
          nullable: true
        method:
          type: string
          default: GET
          nullable: true
        self:
          allOf:
          - $ref: '#/components/schemas/Link'
          nullable: true
        value:
          type: array
          items:
            $ref: '#/components/schemas/IntakeSubmission'
          nullable: true
        offset:
          type: integer
          format: int32
          nullable: true
        limit:
          type: integer
          format: int32
          nullable: true
        size:
          type: integer
          format: int64
        first:
          allOf:
          - $ref: '#/components/schemas/Link'
          nullable: true
        previous:
          allOf:
          - $ref: '#/components/schemas/Link'
          nullable: true
        next:
          allOf:
          - $ref: '#/components/schemas/Link'
          nullable: true
        last:
          allOf:
          - $ref: '#/components/schemas/Link'
          nullable: true
      additionalProperties: false
    IntakeSubmissionCreated:
      type: object
      properties:
        id:
          type: string
          nullable: true
        href:
          type: string
          nullable: true
        relation:
          type: string
          nullable: true
        method:
          type: string
          default: GET
          nullable: true
        self:
          allOf:
          - $ref: '#/components/schemas/Link'
          nullable: true
        link:
          type: string
          description: URL to complete the intake submission.
          nullable: true
          example: https://example.smokeball.com/intake/submissions/e8b673fe-5493-4b1f-986c-af82542fb6d8
      additionalProperties: false
      description: Intake submission created response.
    IntakeSubmission:
      type: object
      properties:
        id:
          type: string
          nullable: true
        href:
          type: string
          nullable: true
        relation:
          type: string
          nullable: true
        method:
          type: string
          default: GET
          nullable: true
        self:
          allOf:
          - $ref: '#/components/schemas/Link'
          nullable: true
        formId:
          type: string
          description: Id of the form that the submission is for.
          nullable: true
          example: ae4bc84e-b601-4767-9d0f-5d078832418e
        formTitle:
          type: string
          description: Title of the form that the submission is for.
          nullable: true
          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.
          nullable: true
        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.
          nullable: true
      additionalProperties: false
      description: Intake submission.
    Link:
      type: object
      properties:
        id:
          type: string
          nullable: true
        href:
          type: string
          nullable: true
        relation:
          type: string
          nullable: true
        method:
          type: string
          default: GET
          nullable: true
      additionalProperties: false
    IntakeSubmissionResponseFieldDto:
      type: object
      properties:
        type:
          allOf:
          - $ref: '#/components/schemas/SubmissionResponseFieldType'
          description: Field control type.
          example: text
        label:
          type: string
          description: Display label for the field.
          nullable: true
          example: Phone number
        value:
          type: string
          description: Submitted value as a string.
          nullable: true
          example: 0400 000 000
      additionalProperties: false
    IntakeSubmissionCommunicationMethod:
      enum:
      - email
      - communicate
      - embed
      - internalUse
      - document
      type: string
      description: Intake submission communication method.
    ProblemDetails:
      type: object
      properties:
        type:
          type: string
          nullable: true
        title:
          type: string
          nullable: true
        status:
          type: integer
          format: int32
          nullable: true
        detail:
          type: string
          nullable: true
        instance:
          type: string
          nullable: true
      additionalProperties: {}
    IntakeSubmissionDetail:
      type: object
      properties:
        id:
          type: string
          nullable: true
        href:
          type: string
          nullable: true
        relation:
          type: string
          nullable: true
        method:
          type: string
          default: GET
          nullable: true
        self:
          allOf:
          - $ref: '#/components/schemas/Link'
          nullable: true
        formId:
          type: string
          description: Id of the form that the submission is for.
          nullable: true
          example: ae4bc84e-b601-4767-9d0f-5d078832418e
        formTitle:
          type: string
          description: Title of the form that the submission is for.
          nullable: true
          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.
          nullable: true
        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.
          nullable: true
        responses:
          type: array
          items:
            $ref: '#/components/schemas/IntakeSubmissionResponseSectionDto'
          description: Ordered list of sections with submitted values.
          nullable: true
      additionalProperties: false
      description: Intake submission detail.
    IntakeSubmissionResponseGroupDto:
      type: object
      properties:
        label:
          type: string
          description: Display label for the group.
          nullable: true
          example: Primary Contact
        fields:
          type: array
          items:
            $ref: '#/components/schemas/IntakeSubmissionResponseFieldDto'
          description: Fields within the group.
          nullable: true
      additionalProperties: false
    IntakeRecipientDto:
      type: object
      properties:
        contactId:
          type: string
          description: Contact id that the submission is sent to.
          nullable: true
          example: 5d9b8697-8c6f-45dd-b22d-87045ed4df35
        email:
          type: string
          description: Email address of the recipient.
          nullable: true
          example: client@example.com
        name:
          type: string
          description: Display name of the recipient.
          nullable: true
          example: Sample Client
      additionalProperties: false
    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.
  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