SingleFile organizations API

Organizations that own entities — CRUD plus contacts, documents, entities, orders and tasks

OpenAPI Specification

singlefile-organizations-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: SingleFile External API Documentation documents organizations API
  description: Formation and compliance documents
  termsOfService: https://www.singlefile.io/
  contact:
    email: support@singlefile.io
  license:
    name: BSD License
  version: v1
  x-apievangelist-provenance:
    method: searched
    source: https://docs.singlefile.ai/ (ReadMe per-operation OpenAPI fragments merged; OAuth2 scheme added from the documented Authentication guide)
    generated: '2026-07-21'
servers:
- url: https://api.demo.singlefile.ai/external-api/v1
security:
- OAuth2ClientCredentials:
  - read
  - write
tags:
- name: organizations
  description: Organizations that own entities — CRUD plus contacts, documents, entities, orders and tasks
paths:
  /organizations/{organization_id}/contacts/create:
    parameters:
    - name: organization_id
      in: path
      required: true
      schema:
        type: string
    post:
      operationId: organizations_contacts_create_create
      description: View to create contacts for an organization
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrganizationContactCreateRequest'
        required: true
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrganizationContactCreateRequest'
      tags:
      - organizations
  /organizations/{organization_id}/contacts:
    parameters:
    - name: organization_id
      in: path
      required: true
      schema:
        type: string
    get:
      operationId: organizations_contacts_list
      description: View to list all contacts associated with an organization
      parameters:
      - name: ordering
        in: query
        description: Which field to use when ordering the results.
        required: false
        schema:
          type: string
      - name: search
        in: query
        description: A search term.
        required: false
        schema:
          type: string
      - name: page_number
        in: query
        description: A page number within the paginated result set.
        required: false
        schema:
          type: integer
      - name: page_size
        in: query
        description: Number of results to return per page.
        required: false
        schema:
          type: integer
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                required:
                - count
                - results
                type: object
                properties:
                  count:
                    type: integer
                  next:
                    type: string
                    format: uri
                    nullable: true
                  previous:
                    type: string
                    format: uri
                    nullable: true
                  results:
                    type: array
                    items:
                      $ref: '#/components/schemas/ContactList'
      tags:
      - organizations
  /organizations/{organization_id}/contacts/{contact_id}:
    parameters:
    - name: organization_id
      in: path
      required: true
      schema:
        type: string
    - name: contact_id
      in: path
      required: true
      schema:
        type: string
    patch:
      operationId: organizations_contacts_partial_update
      description: View to retrieve and update a specific contact for an organization
      requestBody:
        $ref: '#/components/requestBodies/ContactUpdate'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContactUpdate'
      tags:
      - organizations
    get:
      operationId: organizations_contacts_read
      description: View to retrieve and update a specific contact for an organization
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContactDetail'
      tags:
      - organizations
    put:
      operationId: organizations_contacts_update
      description: View to retrieve and update a specific contact for an organization
      requestBody:
        $ref: '#/components/requestBodies/ContactUpdate'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContactUpdate'
      tags:
      - organizations
  /organizations/create:
    parameters: []
    post:
      operationId: organizations_create_create
      description: ''
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrganizationCreate'
        required: true
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrganizationCreate'
      tags:
      - organizations
  /organizations/{organization_id}/documents:
    parameters:
    - name: organization_id
      in: path
      required: true
      schema:
        type: string
    get:
      operationId: organizations_documents_list
      description: ''
      parameters:
      - name: entity_id
        in: query
        description: entity_id
        required: false
        schema:
          type: string
      - name: jurisdiction
        in: query
        description: jurisdiction
        required: false
        schema:
          type: string
      - name: created_before
        in: query
        description: created_before
        required: false
        schema:
          type: string
      - name: created_after
        in: query
        description: created_after
        required: false
        schema:
          type: string
      - name: ordering
        in: query
        description: Which field to use when ordering the results.
        required: false
        schema:
          type: string
      - name: search
        in: query
        description: A search term.
        required: false
        schema:
          type: string
      - name: page_number
        in: query
        description: A page number within the paginated result set.
        required: false
        schema:
          type: integer
      - name: page_size
        in: query
        description: Number of results to return per page.
        required: false
        schema:
          type: integer
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                required:
                - count
                - results
                type: object
                properties:
                  count:
                    type: integer
                  next:
                    type: string
                    format: uri
                    nullable: true
                  previous:
                    type: string
                    format: uri
                    nullable: true
                  results:
                    type: array
                    items:
                      $ref: '#/components/schemas/DocumentList'
      tags:
      - organizations
  /organizations/{organization_id}/documents/upload:
    parameters:
    - name: organization_id
      in: path
      required: true
      schema:
        type: string
    post:
      operationId: organizations_documents_upload_create
      description: ''
      requestBody:
        $ref: '#/components/requestBodies/DocumentUpload'
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DocumentUpload'
      tags:
      - organizations
  /organizations/{organization_id}/entities:
    parameters:
    - name: organization_id
      in: path
      required: true
      schema:
        type: string
    get:
      operationId: organizations_entities_list
      description: ''
      parameters:
      - name: ordering
        in: query
        description: Which field to use when ordering the results.
        required: false
        schema:
          type: string
      - name: search
        in: query
        description: A search term.
        required: false
        schema:
          type: string
      - name: page_number
        in: query
        description: A page number within the paginated result set.
        required: false
        schema:
          type: integer
      - name: page_size
        in: query
        description: Number of results to return per page.
        required: false
        schema:
          type: integer
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                required:
                - count
                - results
                type: object
                properties:
                  count:
                    type: integer
                  next:
                    type: string
                    format: uri
                    nullable: true
                  previous:
                    type: string
                    format: uri
                    nullable: true
                  results:
                    type: array
                    items:
                      $ref: '#/components/schemas/EntityList'
      tags:
      - organizations
  /organizations/{organization_id}/entity/create:
    parameters:
    - name: organization_id
      in: path
      required: true
      schema:
        type: string
    post:
      operationId: organizations_entity_create_create
      description: ''
      requestBody:
        $ref: '#/components/requestBodies/EntityCreate'
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntityCreate'
      tags:
      - organizations
  /organizations/list:
    parameters: []
    get:
      operationId: organizations_list_list
      description: ''
      parameters:
      - name: ordering
        in: query
        description: Which field to use when ordering the results.
        required: false
        schema:
          type: string
      - name: search
        in: query
        description: A search term.
        required: false
        schema:
          type: string
      - name: page_number
        in: query
        description: A page number within the paginated result set.
        required: false
        schema:
          type: integer
      - name: page_size
        in: query
        description: Number of results to return per page.
        required: false
        schema:
          type: integer
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                required:
                - count
                - results
                type: object
                properties:
                  count:
                    type: integer
                  next:
                    type: string
                    format: uri
                    nullable: true
                  previous:
                    type: string
                    format: uri
                    nullable: true
                  results:
                    type: array
                    items:
                      $ref: '#/components/schemas/OrganizationList'
      tags:
      - organizations
  /organizations/{organization_id}/orders:
    parameters:
    - name: organization_id
      in: path
      required: true
      schema:
        type: string
    get:
      operationId: organizations_orders_list
      description: ''
      parameters:
      - name: ordering
        in: query
        description: Which field to use when ordering the results.
        required: false
        schema:
          type: string
      - name: search
        in: query
        description: A search term.
        required: false
        schema:
          type: string
      - name: page_number
        in: query
        description: A page number within the paginated result set.
        required: false
        schema:
          type: integer
      - name: page_size
        in: query
        description: Number of results to return per page.
        required: false
        schema:
          type: integer
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                required:
                - count
                - results
                type: object
                properties:
                  count:
                    type: integer
                  next:
                    type: string
                    format: uri
                    nullable: true
                  previous:
                    type: string
                    format: uri
                    nullable: true
                  results:
                    type: array
                    items:
                      $ref: '#/components/schemas/OrderList'
      tags:
      - organizations
  /organizations/{organization_id}:
    parameters:
    - name: organization_id
      in: path
      required: true
      schema:
        type: string
    get:
      operationId: organizations_read
      description: ''
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrganizationDetail'
      tags:
      - organizations
  /organizations/{organization_id}/tasks:
    parameters:
    - name: organization_id
      in: path
      required: true
      schema:
        type: string
    get:
      operationId: organizations_tasks_list
      description: ''
      parameters:
      - name: ordering
        in: query
        description: Which field to use when ordering the results.
        required: false
        schema:
          type: string
      - name: search
        in: query
        description: A search term.
        required: false
        schema:
          type: string
      - name: page_number
        in: query
        description: A page number within the paginated result set.
        required: false
        schema:
          type: integer
      - name: page_size
        in: query
        description: Number of results to return per page.
        required: false
        schema:
          type: integer
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                required:
                - count
                - results
                type: object
                properties:
                  count:
                    type: integer
                  next:
                    type: string
                    format: uri
                    nullable: true
                  previous:
                    type: string
                    format: uri
                    nullable: true
                  results:
                    type: array
                    items:
                      $ref: '#/components/schemas/TaskInstance'
      tags:
      - organizations
components:
  schemas:
    Address:
      type: object
      properties:
        id:
          title: ID
          type: integer
          readOnly: true
        serializer:
          title: Serializer
          type: string
          readOnly: true
        state_long_name:
          title: State long name
          type: string
          readOnly: true
          minLength: 1
        external_id:
          title: External id
          type: string
          format: uuid
          readOnly: true
        street_address:
          title: Street address
          type: string
          maxLength: 200
          nullable: true
        city:
          title: City
          type: string
          maxLength: 100
          nullable: true
        state:
          title: State
          type: string
          maxLength: 100
          nullable: true
        postal_code:
          title: Postal code
          type: string
          maxLength: 20
          nullable: true
        country:
          title: Country
          type: string
          maxLength: 100
          nullable: true
        country_code:
          title: Country code
          type: string
          maxLength: 10
          nullable: true
        country_area:
          title: Country area
          type: string
          maxLength: 100
          nullable: true
        city_area:
          title: City area
          type: string
          maxLength: 100
          nullable: true
        sorting_code:
          title: Sorting code
          type: string
          maxLength: 100
          nullable: true
      nullable: true
    User:
      required:
      - email
      - first_name
      - last_name
      type: object
      properties:
        id:
          title: Id
          type: string
          readOnly: true
          nullable: true
        email:
          title: Email
          type: string
          format: email
          minLength: 1
        first_name:
          title: First name
          type: string
          minLength: 1
        last_name:
          title: Last name
          type: string
          minLength: 1
        job_title:
          title: Job title
          type: string
          nullable: true
        telephone_number:
          title: Telephone number
          type: string
          nullable: true
        address:
          $ref: '#/components/schemas/ExternalAddress'
    OrganizationDetail:
      type: object
      properties:
        id:
          title: Id
          type: string
          readOnly: true
          nullable: true
        name:
          title: Name
          type: string
          maxLength: 500
          nullable: true
        representing_organizations:
          title: Representing organizations
          type: string
          readOnly: true
        primary_contact_email:
          title: Primary contact email
          type: string
          readOnly: true
        billing_contact_email:
          title: Billing contact email
          type: string
          readOnly: true
        authorized_signatory_email:
          title: Authorized signatory email
          type: string
          readOnly: true
        created_at:
          title: Created at
          type: string
          format: date-time
        updated_at:
          title: Updated at
          type: string
          format: date-time
    EntityCreate:
      required:
      - name
      - entity_type
      - mailing_address
      - primary_address
      - primary_contact
      - jurisdictions
      - organization_id
      type: object
      properties:
        name:
          title: Name
          type: string
          minLength: 1
        entity_type:
          title: Entity type
          type: string
          minLength: 1
        primary_jurisdiction:
          title: Primary jurisdiction
          type: string
          readOnly: true
        nature_of_business:
          title: Nature of business
          type: string
          maxLength: 500
        specific_business_purpose:
          title: Specific business purpose
          type: string
          maxLength: 250
          nullable: true
        fein:
          title: Fein
          type: string
          maxLength: 10
          minLength: 1
        taxid_type:
          title: Taxid type
          type: string
          enum:
          - FEIN
          - SSN
          - ITIN
          - FOREIGN
        taxid:
          title: Taxid
          type: string
          maxLength: 50
          minLength: 1
        telephone_number:
          title: Telephone number
          type: string
          maxLength: 25
          nullable: true
        website_url:
          title: Website url
          type: string
          maxLength: 250
          nullable: true
        fiscal_year_end:
          title: Fiscal year end
          type: string
          format: date
        mailing_address:
          $ref: '#/components/schemas/ExternalAddress'
        primary_address:
          $ref: '#/components/schemas/ExternalAddress'
        incorporator:
          $ref: '#/components/schemas/User'
        primary_contact:
          $ref: '#/components/schemas/User'
        entity_authorized_contact:
          $ref: '#/components/schemas/User'
        jurisdictions:
          type: array
          items:
            $ref: '#/components/schemas/Jurisdiction'
        gross_assets:
          type: array
          items:
            $ref: '#/components/schemas/GrossAsset'
        share_classes:
          type: array
          items:
            $ref: '#/components/schemas/ShareClass'
        governing_persons:
          type: array
          items:
            $ref: '#/components/schemas/Governor'
        organization_id:
          title: Organization id
          type: string
          format: uuid
    ContactDetail:
      required:
      - email
      type: object
      properties:
        id:
          title: Id
          type: string
          readOnly: true
          nullable: true
        name:
          title: Name
          type: string
          readOnly: true
        first_name:
          title: First name
          type: string
          maxLength: 100
          nullable: true
        middle_name:
          title: Middle name
          type: string
          maxLength: 100
          nullable: true
        last_name:
          title: Last name
          type: string
          maxLength: 100
          nullable: true
        email:
          title: Email
          type: string
          format: email
          maxLength: 254
          minLength: 1
        phone:
          title: Phone
          type: string
          readOnly: true
          minLength: 1
          nullable: true
        address:
          $ref: '#/components/schemas/ExternalAddress'
        roles:
          type: array
          items:
            type: string
            minLength: 1
          readOnly: true
        created_at:
          title: Created at
          type: string
          format: date-time
        updated_at:
          title: Updated at
          type: string
          format: date-time
        updated_by:
          title: Updated by
          type: string
          readOnly: true
    ContactList:
      type: object
      properties:
        id:
          title: Id
          type: string
          readOnly: true
          nullable: true
        name:
          title: Name
          type: string
          readOnly: true
        email:
          title: Email
          type: string
          format: email
          readOnly: true
          minLength: 1
        phone:
          title: Phone
          type: string
          readOnly: true
          minLength: 1
          nullable: true
        roles:
          type: array
          items:
            type: string
            minLength: 1
          readOnly: true
        created_at:
          title: Created at
          type: string
          format: date-time
        updated_at:
          title: Updated at
          type: string
          format: date-time
    OrganizationCreate:
      type: object
      properties:
        name:
          title: Name
          type: string
          maxLength: 500
          nullable: true
        domain:
          title: Domain
          description: Domain name for the company's email addresses.
          type: string
          maxLength: 500
          nullable: true
        notes:
          title: Notes
          description: Internal notes regarding this company.
          type: string
          nullable: true
        do_not_email:
          title: Do not email
          type: boolean
        send_all_state_notice:
          title: Send all state notice
          description: Users will always receive state compliance notice emails
          type: boolean
          nullable: true
        invoice_only:
          title: Invoice only
          description: 'If True, the Stripe customer for this company (& it''s child entities) will always have invoices sent to them (no auto-charge).<br/><br/><strong>Note: Individual orders may override this setting if they have a payment method assigned at the order level (e.g., for filings requiring immediate payment like DEARs).</strong>'
          type: boolean
    ContactCreate:
      required:
      - first_name
      - last_name
      - email
      type: object
      properties:
        first_name:
          title: First name
          type: string
          maxLength: 100
          nullable: true
        last_name:
          title: Last name
          type: string
          maxLength: 100
          nullable: true
        middle_name:
          title: Middle name
          type: string
          maxLength: 100
          nullable: true
        email:
          title: Email
          type: string
          format: email
          maxLength: 254
          minLength: 1
        phone:
          title: Phone
          type: string
          maxLength: 25
          nullable: true
        address:
          $ref: '#/components/schemas/ExternalAddress'
        is_active:
          title: Is active
          type: boolean
          default: true
      nullable: true
    ContactUpdate:
      required:
      - email
      type: object
      properties:
        first_name:
          title: First name
          type: string
          maxLength: 100
          nullable: true
        last_name:
          title: Last name
          type: string
          maxLength: 100
          nullable: true
        middle_name:
          title: Middle name
          type: string
          maxLength: 100
          nullable: true
        email:
          title: Email
          type: string
          format: email
          maxLength: 254
          minLength: 1
        phone:
          title: Phone
          type: string
          maxLength: 25
          nullable: true
        address:
          $ref: '#/components/schemas/ExternalAddress'
        is_active:
          title: Is active
          type: boolean
    ShareClass:
      required:
      - class_name
      - authorized_shares
      type: object
      properties:
        start_date:
          title: Start date
          type: string
          format: date
          nullable: true
        class_name:
          title: Class name
          type: string
          maxLength: 100
          minLength: 1
        authorized_shares:
          title: Authorized shares
          type: integer
          maximum: 9223372036854776000
          minimum: -9223372036854776000
        par_value:
          title: Par value
          type: string
          format: decimal
          nullable: true
        issued_shares:
          title: Issued shares
          type: integer
          maximum: 9223372036854776000
          minimum: -9223372036854776000
          nullable: true
    ExternalAddress:
      type: object
      properties:
        id:
          title: Id
          type: string
          readOnly: true
          nullable: true
        street_address:
          title: Street address
          type: string
          maxLength: 200
          nullable: true
        city:
          title: City
          type: string
          maxLength: 100
          nullable: true
        state:
          title: State
          type: string
          maxLength: 100
          nullable: true
        postal_code:
          title: Postal code
          type: string
          maxLength: 20
          nullable: true
        country:
          title: Country
          type: string
          maxLength: 100
          nullable: true
        country_code:
          title: Country code
          type: string
          maxLength: 10
          nullable: true
        country_area:
          title: Country area
          type: string
          maxLength: 100
          nullable: true
        city_area:
          title: City area
          type: string
          maxLength: 100
          nullable: true
        sorting_code:
          title: Sorting code
          type: string
          maxLength: 100
          nullable: true
    DocumentList:
      required:
      - document_type
      - filing_type
      type: object
      properties:
        id:
          title: Id
          type: string
          readOnly: true
          nullable: true
        title:
          title: Title
          type: string
          maxLength: 1000
          nullable: true
        entity_name:
          title: Entity name
          type: string
          minLength: 1
          nullable: true
        organization_id:
          title: Organization id
          type: string
          readOnly: true
        entity_id:
          title: Entity id
          type: string
          readOnly: true
        jurisdiction:
          title: Jurisdiction
          type: string
          maxLength: 500
          nullable: true
        document_type:
          title: Document type
          type: string
          minLength: 1
        filing_type:
          title: Filing type
          type: string
          minLength: 1
        certified:
          title: Certified
          description: Check this if this document is a certified copy.
          type: boolean
        created_at:
          title: Created at
          type: string
          format: date-time
    OrderList:
      type: object
      properties:
        id:
          title: Id
          type: string
          readOnly: true
          nullable: true
        order_id:
          title: Order id
          type: string
          maxLength: 50
          minLength: 1
        display_name:
          title: Display name
          type: string
          readOnly: true
        filing_type:
          title: Filing type
          type: string
          enum:
          - NONE
          - ANY
          - AMENDED ANNUAL REPORT
          - AMENDMENT
          - ANNUAL REPORT
          - APOSTILLE
          - BOI
          - BRINGDOWN LETTER
          - BUNDLE
          - CERTIFIED DOCUMENT
          - CHANGE IN CAPITAL
          - COGS
          - CONVERSION
          - DFPI_VCC_REGISTRATION
          - DFPI_VCC_REPORT
          - DISSOLUTION
          - FOREIGN QUALIFICATION
          - FOREIGN QUALIFICATION AMENDMENT
          - FORMATION
          - INDEPENDENT DIRECTOR SERVICE
          - INITIAL REPORT
          - INTERNATIONAL REQUEST
          - MERGER
          - NAME RESERVATION
          - PUBLICATION
          - QUARTERLY ESTIMATED FRANCHISE TAX PAYMENT
          - REGISTERED AGENT CHANGE
          - REGISTERED AGENT RESIGNATION
          - STATEMENT OF CORRECTION
          - SUBSCRIBE_TO_AR
          - SUBSCRIBE_TO_DFPI_VCC
          - SUBSCRIBE_TO_FINCEN_BOI
          - SUBSCRIPTION RENEWAL
          - TRANSPARENCY_ACT
          - INITIAL TRANSPARENCY ACT
          - ANNUAL TRANSPARENCY ACT
          - EXEMPT AFFIDAVIT REPORT
          - INITIAL EXEMPT TRANSPARENCY ACT
          - ANNUAL EXEMPT TRANSPARENCY ACT
          - REVIVAL
          - UCC
          - STATE UCC SEARCH
          - COUNTY UCC STL FTL JL SEARCH
          - COUNTY LITIGATION SEARCH
          - FEDERAL LITIGATION SEARCH
          - BANKRUPTCY SEARCH
          - PATRIOT ACT SEARCH
          - UCC BUNDLE
          - EIN
          - DOING BUSINESS AS NAME
          - WITHDRAWAL
          - OTHER
          - REJECTED
        entity_id:
          title: Entity id
          type: string
          readOnly: true
        entity_name:
          title: Entity name
          type: string
          readOnly: true
          minLength: 1
        status:
          title: Status
          type: string
          readOnly: true
          minLength: 1
        created_at:
          title: Created at
          type: string
          format: date-time
        created_by:
          title: Created by
          type: string
          readOnly: true
    OrganizationContactCreateRequest:
      type: object
      properties:
        primary_contact:
          $ref: '#/components/schemas/ContactCreate'
        billing_contact:
          $ref: '#/components/schemas/ContactCreate'
        authorized_contact_override:
          $ref: '#/components/schemas/ContactCreate'
    Jurisdiction:
      type: object
      properties:
        id:
          title: ID


# --- truncated at 32 KB (47 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/singlefile/refs/heads/main/openapi/singlefile-organizations-api-openapi.yml