Encompass Loan Management API

Create, read, update, and delete Encompass loan files and read/write the values of loan data fields between applications and Encompass. Includes moving loans between folders and retrieving UCD field definitions. Path-based versioning (v3 current; v1 deprecated).

OpenAPI Specification

encompass-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Encompass Developer Connect API
  description: >-
    Encompass Developer Connect is the ICE Mortgage Technology (formerly Ellie Mae)
    REST API platform for the Encompass loan origination system (LOS). It lets partners
    and lenders configure, customize, and administer loan information and resources
    programmatically - loan manufacturing, loan pipeline, borrower pairs, contacts,
    eFolder documents and attachments, milestones, conditions, users, and event
    webhooks.


    Access is partner/tenant-gated: every call is authenticated with an OAuth 2.0
    bearer token issued for a specific Encompass instance. Credentials (Client ID and
    secret / API key) are provisioned in the developer portal and distributed by an
    Encompass user with the super administrator persona. The data and features a token
    can reach are governed by the caller's assigned Encompass persona.


    Versioning is path-based; v3 is current and v1/v2 are deprecated. This document
    grounds endpoints in the public API reference at developer.icemortgagetechnology.com.
    Endpoints tagged x-endpoint-status "confirmed" are read directly from the public
    reference; those tagged "modeled" follow Encompass's documented, consistent path
    conventions but were authored behind the login-gated request builder and should be
    verified against the live reference before use.
  version: '2026-07-04'
  contact:
    name: ICE Mortgage Technology - Encompass Developer Connect
    url: https://developer.icemortgagetechnology.com/developer-connect/docs/welcome
  x-lineage: >-
    Encompass is a product of ICE Mortgage Technology, formerly Ellie Mae, acquired by
    Intercontinental Exchange (ICE) in 2020. The API host api.elliemae.com reflects the
    Ellie Mae lineage.
servers:
  - url: https://api.elliemae.com
    description: Encompass Developer Connect production API host (Ellie Mae lineage)
security:
  - oAuth2: []
  - bearerAuth: []
tags:
  - name: Authentication
    description: OAuth 2.0 token issuance.
  - name: Loan Management
    description: Create, read, update, and delete Encompass loan files and loan data.
  - name: Loan Pipeline
    description: Search loans and loan fields across the pipeline with cursor pagination.
  - name: Borrower Pairs
    description: Borrower/co-borrower application entities within a loan (modeled).
  - name: Contacts
    description: Borrower (consumer) and business contacts (modeled).
  - name: eFolder
    description: Documents and attachments in a loan's eFolder.
  - name: Milestones
    description: Loan workflow milestones and associates (modeled).
  - name: Conditions
    description: Underwriting, preliminary, and post-closing conditions (modeled).
  - name: Users
    description: Internal Encompass user administration (modeled).
  - name: Webhooks
    description: Event subscriptions, resources, events, and custom auth functions.
paths:
  /oauth2/v1/token:
    post:
      operationId: getToken
      tags:
        - Authentication
      summary: Request an OAuth 2.0 access token
      description: >-
        Exchange client credentials (client_credentials grant for server-to-server, or
        authorization_code for user-delegated access) for a bearer access token scoped
        to an Encompass instance.
      x-endpoint-status: confirmed
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                grant_type:
                  type: string
                  example: client_credentials
                client_id:
                  type: string
                client_secret:
                  type: string
                scope:
                  type: string
      responses:
        '200':
          description: An access token.
          content:
            application/json:
              schema:
                type: object
                properties:
                  access_token:
                    type: string
                  token_type:
                    type: string
                    example: Bearer
                  expires_in:
                    type: integer
        '401':
          $ref: '#/components/responses/Unauthorized'

  /encompass/v3/loans:
    post:
      operationId: createLoan
      tags:
        - Loan Management
      summary: Create a loan
      description: Create a new Encompass loan file, optionally from a loan template set.
      x-endpoint-status: confirmed
      responses:
        '201':
          description: The created loan.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Loan'
        '401':
          $ref: '#/components/responses/Unauthorized'

  /encompass/v3/loans/{loanId}:
    get:
      operationId: getLoan
      tags:
        - Loan Management
      summary: Retrieve a loan
      description: Retrieve a loan file and its data by loan GUID.
      x-endpoint-status: confirmed
      parameters:
        - $ref: '#/components/parameters/LoanId'
        - name: entities
          in: query
          description: Comma-separated list of loan entities to include in the response.
          schema:
            type: string
      responses:
        '200':
          description: The requested loan.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Loan'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    patch:
      operationId: updateLoan
      tags:
        - Loan Management
      summary: Update a loan
      description: Write values to loan data fields. Supports append/replace of collections.
      x-endpoint-status: confirmed
      parameters:
        - $ref: '#/components/parameters/LoanId'
      responses:
        '200':
          description: The updated loan.
        '401':
          $ref: '#/components/responses/Unauthorized'
    delete:
      operationId: deleteLoan
      tags:
        - Loan Management
      summary: Delete a loan
      description: Delete a loan file.
      x-endpoint-status: confirmed
      parameters:
        - $ref: '#/components/parameters/LoanId'
      responses:
        '204':
          description: Loan deleted.
        '401':
          $ref: '#/components/responses/Unauthorized'

  /encompass/v3/loans/{loanId}/ucdFields:
    get:
      operationId: getLoanUcdFields
      tags:
        - Loan Management
      summary: Retrieve UCD field definitions for a loan
      description: Retrieve Uniform Closing Dataset (UCD) field definitions for a loan.
      x-endpoint-status: confirmed
      parameters:
        - $ref: '#/components/parameters/LoanId'
      responses:
        '200':
          description: UCD field definitions.
        '401':
          $ref: '#/components/responses/Unauthorized'

  /encompass/v1/loans/{loanId}/moveToFolder:
    patch:
      operationId: moveLoanToFolder
      tags:
        - Loan Management
      summary: Move a loan to a folder
      description: Move a loan file into a different loan folder.
      x-endpoint-status: confirmed
      parameters:
        - $ref: '#/components/parameters/LoanId'
      responses:
        '200':
          description: Loan moved.
        '401':
          $ref: '#/components/responses/Unauthorized'

  /encompass/v3/loanPipeline:
    post:
      operationId: viewPipeline
      tags:
        - Loan Pipeline
      summary: Query the loan pipeline
      description: >-
        Search for loans and loan fields on the pipeline using canonical field names and
        filter criteria (CanonicalName, Value, MatchType, Terms, Operator, Precision,
        Include). Supports cursor-based pagination via the Cursor and Start/Limit query
        parameters.
      x-endpoint-status: confirmed
      parameters:
        - name: cursor
          in: query
          schema:
            type: string
        - name: start
          in: query
          schema:
            type: integer
        - name: limit
          in: query
          schema:
            type: integer
      responses:
        '200':
          description: Matching pipeline rows.
        '401':
          $ref: '#/components/responses/Unauthorized'

  /encompass/v3/loanPipeline/cursor:
    post:
      operationId: createPipelineCursor
      tags:
        - Loan Pipeline
      summary: Create a pipeline cursor
      description: Create a cursor for a pipeline report to page through large result sets.
      x-endpoint-status: confirmed
      responses:
        '200':
          description: Cursor created.
        '401':
          $ref: '#/components/responses/Unauthorized'

  /encompass/v3/loanPipeline/canonicalNames:
    get:
      operationId: getPipelineCanonicalNames
      tags:
        - Loan Pipeline
      summary: Get canonical field names
      description: Retrieve the list of canonical (queryable) field names for the pipeline.
      x-endpoint-status: confirmed
      responses:
        '200':
          description: List of canonical names.
        '401':
          $ref: '#/components/responses/Unauthorized'

  /encompass/v3/loans/{loanId}/applications:
    get:
      operationId: listBorrowerPairs
      tags:
        - Borrower Pairs
      summary: List borrower pairs (applications)
      description: >-
        List the borrower/co-borrower application entities (borrower pairs) on a loan.
      x-endpoint-status: modeled
      parameters:
        - $ref: '#/components/parameters/LoanId'
      responses:
        '200':
          description: A list of borrower pairs.
        '401':
          $ref: '#/components/responses/Unauthorized'
    post:
      operationId: createBorrowerPair
      tags:
        - Borrower Pairs
      summary: Create a borrower pair
      description: Add a new borrower pair (application) to a loan.
      x-endpoint-status: modeled
      parameters:
        - $ref: '#/components/parameters/LoanId'
      responses:
        '201':
          description: Borrower pair created.
        '401':
          $ref: '#/components/responses/Unauthorized'

  /encompass/v3/loans/{loanId}/applications/{applicationId}:
    get:
      operationId: getBorrowerPair
      tags:
        - Borrower Pairs
      summary: Retrieve a borrower pair
      x-endpoint-status: modeled
      parameters:
        - $ref: '#/components/parameters/LoanId'
        - $ref: '#/components/parameters/ApplicationId'
      responses:
        '200':
          description: The borrower pair.
        '401':
          $ref: '#/components/responses/Unauthorized'
    delete:
      operationId: deleteBorrowerPair
      tags:
        - Borrower Pairs
      summary: Delete a borrower pair
      x-endpoint-status: modeled
      parameters:
        - $ref: '#/components/parameters/LoanId'
        - $ref: '#/components/parameters/ApplicationId'
      responses:
        '204':
          description: Borrower pair deleted.
        '401':
          $ref: '#/components/responses/Unauthorized'

  /encompass/v1/borrowerContacts:
    get:
      operationId: listBorrowerContacts
      tags:
        - Contacts
      summary: List borrower contacts
      description: List consumer (borrower) contacts in the contact database.
      x-endpoint-status: modeled
      responses:
        '200':
          description: A list of borrower contacts.
        '401':
          $ref: '#/components/responses/Unauthorized'
    post:
      operationId: createBorrowerContact
      tags:
        - Contacts
      summary: Create a borrower contact
      x-endpoint-status: modeled
      responses:
        '201':
          description: Borrower contact created.
        '401':
          $ref: '#/components/responses/Unauthorized'

  /encompass/v1/borrowerContacts/{contactId}:
    get:
      operationId: getBorrowerContact
      tags:
        - Contacts
      summary: Retrieve a borrower contact
      x-endpoint-status: modeled
      parameters:
        - $ref: '#/components/parameters/ContactId'
      responses:
        '200':
          description: The borrower contact.
        '401':
          $ref: '#/components/responses/Unauthorized'
    patch:
      operationId: updateBorrowerContact
      tags:
        - Contacts
      summary: Update a borrower contact
      x-endpoint-status: modeled
      parameters:
        - $ref: '#/components/parameters/ContactId'
      responses:
        '200':
          description: The updated borrower contact.
        '401':
          $ref: '#/components/responses/Unauthorized'

  /encompass/v1/businessContacts:
    get:
      operationId: listBusinessContacts
      tags:
        - Contacts
      summary: List business contacts
      description: List business (service provider / vendor) contacts.
      x-endpoint-status: modeled
      responses:
        '200':
          description: A list of business contacts.
        '401':
          $ref: '#/components/responses/Unauthorized'
    post:
      operationId: createBusinessContact
      tags:
        - Contacts
      summary: Create a business contact
      x-endpoint-status: modeled
      responses:
        '201':
          description: Business contact created.
        '401':
          $ref: '#/components/responses/Unauthorized'

  /encompass/v3/loans/{loanId}/documents:
    get:
      operationId: listEfolderDocuments
      tags:
        - eFolder
      summary: List eFolder documents
      description: List the documents (placeholders) in a loan's eFolder.
      x-endpoint-status: confirmed
      parameters:
        - $ref: '#/components/parameters/LoanId'
      responses:
        '200':
          description: A list of eFolder documents.
        '401':
          $ref: '#/components/responses/Unauthorized'
    post:
      operationId: createEfolderDocument
      tags:
        - eFolder
      summary: Create an eFolder document
      description: Create a document placeholder in a loan's eFolder.
      x-endpoint-status: confirmed
      parameters:
        - $ref: '#/components/parameters/LoanId'
      responses:
        '201':
          description: Document created.
        '401':
          $ref: '#/components/responses/Unauthorized'

  /encompass/v3/loans/{loanId}/attachments:
    get:
      operationId: listEfolderAttachments
      tags:
        - eFolder
      summary: List eFolder attachments
      description: >-
        List the attachments in a loan's eFolder. V3 returns cloud-storage URLs for
        uploading and retrieving attachment media. (Several v1 attachment endpoints are
        being deprecated in favor of v3.)
      x-endpoint-status: confirmed
      parameters:
        - $ref: '#/components/parameters/LoanId'
      responses:
        '200':
          description: A list of attachments.
        '401':
          $ref: '#/components/responses/Unauthorized'

  /encompass/v3/loans/{loanId}/attachments/{attachmentId}:
    get:
      operationId: getEfolderAttachment
      tags:
        - eFolder
      summary: Retrieve an eFolder attachment
      description: Retrieve an attachment's metadata and cloud-storage retrieval URL.
      x-endpoint-status: confirmed
      parameters:
        - $ref: '#/components/parameters/LoanId'
        - $ref: '#/components/parameters/AttachmentId'
      responses:
        '200':
          description: The attachment.
        '401':
          $ref: '#/components/responses/Unauthorized'

  /encompass/v3/loans/{loanId}/milestones:
    get:
      operationId: listMilestones
      tags:
        - Milestones
      summary: List loan milestones
      description: List the milestones marking a loan's progress through origination.
      x-endpoint-status: modeled
      parameters:
        - $ref: '#/components/parameters/LoanId'
      responses:
        '200':
          description: A list of milestones.
        '401':
          $ref: '#/components/responses/Unauthorized'

  /encompass/v3/loans/{loanId}/milestones/{milestoneId}:
    patch:
      operationId: updateMilestone
      tags:
        - Milestones
      summary: Update / complete a milestone
      description: Finish or update a milestone and its assigned associate.
      x-endpoint-status: modeled
      parameters:
        - $ref: '#/components/parameters/LoanId'
        - $ref: '#/components/parameters/MilestoneId'
      responses:
        '200':
          description: The updated milestone.
        '401':
          $ref: '#/components/responses/Unauthorized'

  /encompass/v3/loans/{loanId}/associates:
    get:
      operationId: listLoanAssociates
      tags:
        - Milestones
      summary: List loan associates
      description: List the associates (loan team members) assigned to a loan's milestones.
      x-endpoint-status: modeled
      parameters:
        - $ref: '#/components/parameters/LoanId'
      responses:
        '200':
          description: A list of associates.
        '401':
          $ref: '#/components/responses/Unauthorized'

  /encompass/v1/loans/{loanId}/conditions/underwriting:
    get:
      operationId: listUnderwritingConditions
      tags:
        - Conditions
      summary: List underwriting conditions
      description: List the underwriting conditions tracked on a loan.
      x-endpoint-status: modeled
      parameters:
        - $ref: '#/components/parameters/LoanId'
      responses:
        '200':
          description: A list of underwriting conditions.
        '401':
          $ref: '#/components/responses/Unauthorized'
    post:
      operationId: createUnderwritingCondition
      tags:
        - Conditions
      summary: Create an underwriting condition
      x-endpoint-status: modeled
      parameters:
        - $ref: '#/components/parameters/LoanId'
      responses:
        '201':
          description: Condition created.
        '401':
          $ref: '#/components/responses/Unauthorized'

  /encompass/v1/loans/{loanId}/conditions/underwriting/{conditionId}:
    patch:
      operationId: updateUnderwritingCondition
      tags:
        - Conditions
      summary: Update an underwriting condition
      description: Update or clear an underwriting condition.
      x-endpoint-status: modeled
      parameters:
        - $ref: '#/components/parameters/LoanId'
        - $ref: '#/components/parameters/ConditionId'
      responses:
        '200':
          description: The updated condition.
        '401':
          $ref: '#/components/responses/Unauthorized'

  /encompass/v1/users:
    get:
      operationId: listUsers
      tags:
        - Users
      summary: List Encompass users
      description: List the internal Encompass users in the lender's instance.
      x-endpoint-status: modeled
      parameters:
        - name: start
          in: query
          schema:
            type: integer
        - name: limit
          in: query
          schema:
            type: integer
      responses:
        '200':
          description: A list of users.
        '401':
          $ref: '#/components/responses/Unauthorized'
    post:
      operationId: createUser
      tags:
        - Users
      summary: Create an Encompass user
      x-endpoint-status: modeled
      responses:
        '201':
          description: User created.
        '401':
          $ref: '#/components/responses/Unauthorized'

  /encompass/v1/users/{userId}:
    get:
      operationId: getUser
      tags:
        - Users
      summary: Retrieve an Encompass user
      x-endpoint-status: modeled
      parameters:
        - $ref: '#/components/parameters/UserId'
      responses:
        '200':
          description: The user.
        '401':
          $ref: '#/components/responses/Unauthorized'
    patch:
      operationId: updateUser
      tags:
        - Users
      summary: Update an Encompass user
      x-endpoint-status: modeled
      parameters:
        - $ref: '#/components/parameters/UserId'
      responses:
        '200':
          description: The updated user.
        '401':
          $ref: '#/components/responses/Unauthorized'

  /webhook/v1/subscriptions:
    get:
      operationId: listWebhookSubscriptions
      tags:
        - Webhooks
      summary: Get all subscriptions
      description: List all webhook subscriptions for the instance.
      x-endpoint-status: confirmed
      responses:
        '200':
          description: A list of subscriptions.
        '401':
          $ref: '#/components/responses/Unauthorized'
    post:
      operationId: createWebhookSubscription
      tags:
        - Webhooks
      summary: Create a subscription
      description: >-
        Subscribe to resource events (for example loan.created, loan.updated,
        loan.deleted, loan.locked, loan.unlocked) delivered to an HTTPS endpoint.
      x-endpoint-status: confirmed
      responses:
        '201':
          description: Subscription created.
        '401':
          $ref: '#/components/responses/Unauthorized'

  /webhook/v1/subscriptions/{id}:
    get:
      operationId: getWebhookSubscription
      tags:
        - Webhooks
      summary: Get a subscription
      x-endpoint-status: confirmed
      parameters:
        - $ref: '#/components/parameters/SubscriptionId'
      responses:
        '200':
          description: The subscription.
        '401':
          $ref: '#/components/responses/Unauthorized'
    put:
      operationId: updateWebhookSubscription
      tags:
        - Webhooks
      summary: Update a subscription
      x-endpoint-status: confirmed
      parameters:
        - $ref: '#/components/parameters/SubscriptionId'
      responses:
        '200':
          description: The updated subscription.
        '401':
          $ref: '#/components/responses/Unauthorized'
    delete:
      operationId: deleteWebhookSubscription
      tags:
        - Webhooks
      summary: Delete a subscription
      x-endpoint-status: confirmed
      parameters:
        - $ref: '#/components/parameters/SubscriptionId'
      responses:
        '204':
          description: Subscription deleted.
        '401':
          $ref: '#/components/responses/Unauthorized'

  /webhook/v1/resources:
    get:
      operationId: listWebhookResources
      tags:
        - Webhooks
      summary: Get all resources
      description: List the resource types available for webhook subscriptions.
      x-endpoint-status: confirmed
      responses:
        '200':
          description: A list of resources.
        '401':
          $ref: '#/components/responses/Unauthorized'

  /webhook/v1/resources/{id}/events:
    get:
      operationId: getWebhookResourceEvents
      tags:
        - Webhooks
      summary: Get resource events
      description: List the events available for a given webhook resource.
      x-endpoint-status: confirmed
      parameters:
        - $ref: '#/components/parameters/ResourceId'
      responses:
        '200':
          description: A list of resource events.
        '401':
          $ref: '#/components/responses/Unauthorized'

  /webhook/v1/events:
    get:
      operationId: listWebhookEvents
      tags:
        - Webhooks
      summary: Get all events
      description: Query the history of webhook events delivered to your subscriptions.
      x-endpoint-status: confirmed
      responses:
        '200':
          description: A list of events.
        '401':
          $ref: '#/components/responses/Unauthorized'

  /webhook/v1/events/{id}:
    get:
      operationId: getWebhookEvent
      tags:
        - Webhooks
      summary: Get an event
      x-endpoint-status: confirmed
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The event.
        '401':
          $ref: '#/components/responses/Unauthorized'

components:
  securitySchemes:
    oAuth2:
      type: oauth2
      description: >-
        OAuth 2.0 client credentials / authorization code issued per Encompass instance.
      flows:
        clientCredentials:
          tokenUrl: https://api.elliemae.com/oauth2/v1/token
          scopes: {}
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
  parameters:
    LoanId:
      name: loanId
      in: path
      required: true
      description: The loan GUID.
      schema:
        type: string
    ApplicationId:
      name: applicationId
      in: path
      required: true
      description: The borrower pair (application) identifier.
      schema:
        type: string
    ContactId:
      name: contactId
      in: path
      required: true
      description: The contact identifier.
      schema:
        type: string
    AttachmentId:
      name: attachmentId
      in: path
      required: true
      description: The eFolder attachment identifier.
      schema:
        type: string
    MilestoneId:
      name: milestoneId
      in: path
      required: true
      description: The milestone identifier.
      schema:
        type: string
    ConditionId:
      name: conditionId
      in: path
      required: true
      description: The condition identifier.
      schema:
        type: string
    UserId:
      name: userId
      in: path
      required: true
      description: The Encompass user identifier.
      schema:
        type: string
    SubscriptionId:
      name: id
      in: path
      required: true
      description: The webhook subscription identifier.
      schema:
        type: string
    ResourceId:
      name: id
      in: path
      required: true
      description: The webhook resource identifier.
      schema:
        type: string
  responses:
    Unauthorized:
      description: Missing or invalid OAuth 2.0 bearer token.
    NotFound:
      description: The requested resource was not found.
  schemas:
    Loan:
      type: object
      description: An Encompass loan file. The full data model is large and persona-scoped.
      properties:
        id:
          type: string
          description: The loan GUID.
        loanNumber:
          type: string
        loanFolder:
          type: string
        applications:
          type: array
          items:
            type: object