SkySlope Partnership (Forms) API

Create and manage SkySlope listing and transaction files and their documents, contacts, envelopes, forms, libraries, and templates. Retrieve signed documents and subscribe to a signed-documents webhook. Authenticated with OAuth 2.0 authorization-code flow (PKCE) via accounts.skyslope.com, scope forms.files. Some endpoints are marked as partner-only / coming soon in the published reference.

OpenAPI Specification

skyslope-forms-partnership-openapi.yml Raw ↑
openapi: 3.1.3
info:
  x-logo:
    url: https://s3.amazonaws.com/cdn.skyslope.com/forms/forms-logo-w-top-padding.png
    href: https://skyslope.com/
    altText: SkySlope
  title: SkySlope Partnership API Reference
  version: 1.0.0
  description: "# Introduction\n  The SkySlope Forms API is organized around [REST](https://en.wikipedia.org/wiki/Representational_state_transfer).\n\
    \  Our API has predictable resource-oriented URLs, accepts JSON-encoded request bodies, returns JSON-encoded\
    \ responses,\n  and uses standard HTTP response codes, authentication, and verbs.<br/><br/>\n  NOTE:\
    \ Endpoints marked with an asterisk (*) will be available to our partners in the near future.\n  #\
    \ Authentication\n  This API uses [OAuth 2.0 authorization code flow](https://www.oauth.com/oauth2-servers/server-side-apps/authorization-code/)\n\
    \  to obtain an access token that can be used to authenticate subsequent API requests.\n  ## Access\
    \ Tokens\n  ### Request\n  To obtain an access token, first redirect the user to the authorization\
    \ endpoint:\n  ```\n  https://accounts.skyslope.com/oauth2/authorize?\n    response_type=code\n  \
    \  &client_id={YOUR_CLIENT_ID}\n    &redirect_uri={YOUR_REDIRECT_URI}\n    &scope=forms.files\n  \
    \  &state={RANDOM_STATE_VALUE}\n    &code_challenge={CODE_CHALLENGE}\n    &code_challenge_method=S256\n\
    \  ```\n  After the user authorizes your application, they'll be redirected back to your redirect\
    \ URI with an authorization code.\n  Exchange this code for an access token by making a POST request\
    \ to the token endpoint:\n  ```\n  POST /oauth2/token HTTP/1.1\n  Host: accounts.skyslope.com\n  Content-Type:\
    \ application/x-www-form-urlencoded\n  \n  grant_type=authorization_code\n  &client_id={YOUR_CLIENT_ID}\n\
    \  &client_secret={YOUR_CLIENT_SECRET}\n  &code={AUTHORIZATION_CODE}\n  &redirect_uri={YOUR_REDIRECT_URI}\n\
    \  &code_verifier={CODE_VERIFIER}\n  ```\n  ### Usage\n  Authentication to the API is performed by\
    \ including your access token in the **Authorization** header of your\n  API requests with the Bearer\
    \ authentication scheme:\n  ```\n  GET /partner/api/files HTTP/1.1\n  Host: forms.skyslope.com\n \
    \ Authorization: Bearer {YOUR_ACCESS_TOKEN}\n  ```\n  All API requests must be made over [HTTPS](https://en.wikipedia.org/wiki/HTTPS).\
    \ Calls made over plain HTTP will fail.\n  API requests without authentication will also fail.\n \
    \ ## Refresh Tokens\n  Refresh tokens allow you to obtain new access tokens without requiring the\
    \ user to re-authenticate. When you first\n  complete the OAuth flow, you'll receive both an access\
    \ token and a refresh token.\n  ### Request\n  To receive a refresh token, include the `offline_access`\
    \ scope in your initial authorization request:\n  ```\n  https://accounts.skyslope.com/oauth2/authorize?\n\
    \    response_type=code\n    &client_id={YOUR_CLIENT_ID}\n    &scope=forms.files offline_access\n\
    \    &redirect_uri={YOUR_REDIRECT_URI}\n  ```\n  ### Usage\n  When your access token expires, make\
    \ a POST request to the token endpoint:\n  ```\n  POST /oauth2/token HTTP/1.1\n  Host: accounts.skyslope.com\n\
    \  Content-Type: application/x-www-form-urlencoded\n  \n  grant_type=refresh_token\n  &client_id={YOUR_CLIENT_ID}\n\
    \  &client_secret={YOUR_CLIENT_SECRET}\n  &refresh_token={YOUR_REFRESH_TOKEN}\n  ```\n  This will\
    \ return a new access token and refresh token pair.\n  ### Security Best Practices\n  - Store refresh\
    \ tokens securely on your backend server, never on client side\n  - Encrypt refresh tokens at rest\
    \ using strong encryption\n  - Rotate refresh token on each use\n  - Set up monitoring for unusual\
    \ refresh token usage patterns\n  - If a refresh token is compromised, revoke it immediately using\
    \ the token revocation endpoint\n  - Implement automatic cleanup of unused refresh tokens"
  termsOfService: https://skyslope.com/terms-conditions/
  contact:
    name: Support
    url: https://support.skyslope.com/hc/en-us
    email: support@skyslope.com
components:
  schemas: {}
paths:
  /files:
    post:
      summary: Create Listing or Transaction File
      tags:
      - Files
      description: 'Creates a listing or a transaction file and returns the file id.<div style="color:
        rgba(38, 50, 56, 0.5); border-bottom: 1px solid rgba(38, 50, 56, 0.3); padding-bottom: 1px;">REQUIRED
        SCOPES:</div><div style="display: inline-flex; gap: 5px; padding: 5px;"><div style="border-radius:
        2px; border: 1px solid rgba(128,128,255,0.5); background-color: rgba(64,64,255,0.25); padding:
        0px 5px;">forms.files</div></div>'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              additionalProperties: false
              properties:
                name:
                  type: string
                  description: The name of the file.
                representationType:
                  type: string
                  enum:
                  - Buyer
                  - Seller
                  - Tenant
                  - Landlord
                  description: The representation type of the file.
                property:
                  type: object
                  description: The property that the file is associated with.
                  additionalProperties: false
                  properties:
                    streetNumber:
                      type: string
                      description: The street number of the property.
                    streetName:
                      type: string
                      description: The street name of the property.
                    unitNumber:
                      type: string
                      description: The unit number of the property.
                    city:
                      type: string
                      description: The city of the property.
                    state:
                      type: string
                      description: The abbreviation for the state/province of the property.
                      minLength: 2
                      maxLength: 2
                    postalCode:
                      type: string
                      description: The postal code of the property.
                    county:
                      type: string
                      description: The county of the property.
                  required:
                  - streetNumber
                  - streetName
                  - city
                  - state
                  - postalCode
      responses:
        '200':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  fileId:
                    type: number
                    description: The id of the file that was created.
              example:
                fileId: 477309
        default:
          description: An object containing the error that occurred.
          content:
            application/json:
              schema:
                type: object
                description: An object containing the error that occurred.
                properties:
                  code:
                    type: string
                    description: A code that represents the error that occurred.
                  message:
                    type: string
                    description: A description of the error that occurred.
                  errors:
                    type: array
                    description: An array of the errors that occurred.
                    items:
                      type: string
                  traceId:
                    type: string
                    description: A request correlation ID.
    get:
      summary: Get Files
      tags:
      - Files
      description: 'Retrieve the files that the user has access to.<div style="color: rgba(38, 50, 56,
        0.5); border-bottom: 1px solid rgba(38, 50, 56, 0.3); padding-bottom: 1px;">REQUIRED SCOPES:</div><div
        style="display: inline-flex; gap: 5px; padding: 5px;"><div style="border-radius: 2px; border:
        1px solid rgba(128,128,255,0.5); background-color: rgba(64,64,255,0.25); padding: 0px 5px;">forms.files</div><div
        style="border-radius: 2px; border: 1px solid rgba(128,128,255,0.5); background-color: rgba(64,64,255,0.25);
        padding: 0px 5px;">forms.files.read</div></div>'
      parameters:
      - schema:
          type: integer
          minimum: 1
          default: 1
        in: query
        name: page
        required: false
        description: The page number to retrieve.
      - schema:
          type: integer
          minimum: 1
          maximum: 500
          default: 10
        in: query
        name: pageSize
        required: false
        description: The number of files returned per page.
      - schema:
          type: string
        in: query
        name: filters
        required: false
        description: 'A comma separated sieve filter to that will be applied to the results. Ex: filters=representationtype==Buyer,(createddate)>=2024-01-01,(createddate)<=2024-01-31'
      - schema:
          type: string
        in: query
        name: sorts
        required: false
        description: A sieve list of sort fields to sort the results by.
      responses:
        '200':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  totalRecords:
                    type: number
                    description: The total number of files found for the authenticated user.
                  files:
                    type: array
                    description: An array containing the files found for the authenticated user.
                    items:
                      type: object
                      properties:
                        id:
                          type: number
                          description: The id of the file.
                        ownedBy:
                          type: string
                          description: The id of the user who owns the file.
                        createdDate:
                          type: string
                          description: The date and time the file was created.
                        createdBy:
                          type: string
                          description: The id of the user who created the file.
                        lastUpdated:
                          type: string
                          description: The date and time the file was last updated.
                        updatedBy:
                          type: string
                          description: The id of the user who last updated the file.
                        name:
                          type: string
                          description: The name of the file.
                        address:
                          type: string
                          description: The address of the file combined into a single string.
                        contactInfo:
                          type: string
                          description: A semicolon seperated list of all of the contacts in the file.
                        type:
                          type: string
                          enum:
                          - File
                          - Template
                          - BrokerTemplate
                          description: The type of the file.
                        representationType:
                          type: string
                          enum:
                          - Buyer
                          - Seller
                          - Tenant
                          - Landlord
                          description: The representation type of the file.
                        templateCategory:
                          type: string
                          enum:
                          - Buyer
                          - Seller
                          - Tenant
                          - Landlord
                          - Other
                          description: The category of the template of the file.
                        documentCount:
                          type: number
                          description: The number of documents in the file.
                        envelopeCount:
                          type: number
                          description: The number of envelopes in the file.
                        isArchived:
                          type: boolean
                          description: Evaluates to true if the file has been archived.
                        meta:
                          type:
                          - 'null'
                          - object
                          description: The meta data of the file.
                          properties:
                            externalId:
                              type: string
                              description: The external id of the file.
                            regions:
                              type: array
                              description: An array of regions for the file.
                              items:
                                type: object
                                properties:
                                  country:
                                    type: string
                                    description: The country of the account group.
                                  region:
                                    type: string
                                    description: The region of the account group.
                            brokerTemplateStatus:
                              type: string
                              enum:
                              - Draft
                              - Published
                              description: The status of the broker template for the file.
                            brokerTemplateStatusUpdatedOn:
                              type: string
                              description: The date and time the broker template status was last updated.
                            accountGroups:
                              type: array
                              description: An array of account groups for the file.
                              items:
                                type: object
                                properties:
                                  groupId:
                                    type: string
                                    description: The id of the account group.
                        mlsNumber:
                          type: string
                          description: The mls number of the file.
                        mlsMarketName:
                          type: string
                          description: The mls market name of the file.
                        photoUrl:
                          type: string
                          description: The url of the photo for the file.
                        transactionMeta:
                          type:
                          - 'null'
                          - object
                          description: The transaction meta data of the file.
                          additionalProperties: true
              example:
                totalRecords: 1
                files:
                - id: 1
                  name: File Name
                  address: 111 One Drive Sacramento, CA 95826
                  contactInfo: Contact info
                  type: File
                  representationType: Buyer
                  templateCategory: Landlord
                  documentCount: 1
                  envelopeCount: 0
                  isArchived: false
                  createdDate: '2023-12-31T12:12:12.123Z'
                  createdBy: iajv98j498j98vasj4h
                  lastUpdated: '2023-12-31T12:12:12.123Z'
                  updatedBy: iajv98j498j98vasj4h
                  ownedBy: iajv98j498j98vasj4h
                  meta:
                    status: pre-contract
                  mlsNumber: '1589519'
                  mlsMarketName: treb
                  photoUrl: http://image-source.com/image.png
                  transactionMeta:
                    status: pre-contract
        default:
          description: An object containing the error that occurred.
          content:
            application/json:
              schema:
                type: object
                description: An object containing the error that occurred.
                properties:
                  code:
                    type: string
                    description: A code that represents the error that occurred.
                  message:
                    type: string
                    description: A description of the error that occurred.
                  errors:
                    type: array
                    description: An array of the errors that occurred.
                    items:
                      type: string
                  traceId:
                    type: string
                    description: A request correlation ID.
  /files/{fileId}:
    patch:
      summary: Update File Details
      tags:
      - Files
      description: 'Update the file details of a listing or transaction file.<div style="color: rgba(38,
        50, 56, 0.5); border-bottom: 1px solid rgba(38, 50, 56, 0.3); padding-bottom: 1px;">REQUIRED SCOPES:</div><div
        style="display: inline-flex; gap: 5px; padding: 5px;"><div style="border-radius: 2px; border:
        1px solid rgba(128,128,255,0.5); background-color: rgba(64,64,255,0.25); padding: 0px 5px;">forms.files</div></div>'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              additionalProperties: false
              properties:
                name:
                  type: string
                  description: The name of the file.
                fileData:
                  type: object
                  description: File data that can be updated.
                  additionalProperties: true
                  properties:
                    mlsNumber:
                      type: string
                      description: The mls number of the file.
                    purchasePrice:
                      type: number
                      description: The purchase price of the property.
                    closingDate:
                      type: string
                      description: The closing date of the file in the format of YYYY-MM-DDTHH:MM:SSZ.
                    acceptanceDate:
                      type: string
                      description: The acceptanced date of the file in the format of YYYY-MM-DDTHH:MM:SSZ.
                    premisesAddress:
                      type: object
                      description: The property that the file is associated with.
                      additionalProperties: false
                      properties:
                        streetNumber:
                          type: string
                          description: The street number of the property.
                        streetName:
                          type: string
                          description: The street name of the property.
                        unitNumber:
                          type: string
                          description: The unit number of the property.
                        city:
                          type: string
                          description: The city of the property.
                        state:
                          type: string
                          description: The abbreviation for the state/province of the property.
                          minLength: 2
                          maxLength: 2
                        postalCode:
                          type: string
                          description: The postal code of the property.
                        county:
                          type: string
                          description: The county of the property.
                      required:
                      - streetNumber
                      - streetName
                      - city
                      - state
                      - postalCode
      parameters:
      - schema:
          type: integer
        in: path
        name: fileId
        required: true
        description: The id of the file to update.
      responses:
        '200':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  fileId:
                    type: number
                    description: The id of the file that was updated.
                  didAddendumsChange:
                    type: boolean
                    description: Evaluates to true if addendums were changed.
              example:
                fileId: 477309
                didAddendumsChange: false
        default:
          description: An object containing the error that occurred.
          content:
            application/json:
              schema:
                type: object
                description: An object containing the error that occurred.
                properties:
                  code:
                    type: string
                    description: A code that represents the error that occurred.
                  message:
                    type: string
                    description: A description of the error that occurred.
                  errors:
                    type: array
                    description: An array of the errors that occurred.
                    items:
                      type: string
                  traceId:
                    type: string
                    description: A request correlation ID.
    put:
      summary: Update File
      tags:
      - Files
      description: 'Update the file of a listing or transaction file.<div style="color: rgba(38, 50, 56,
        0.5); border-bottom: 1px solid rgba(38, 50, 56, 0.3); padding-bottom: 1px;">REQUIRED SCOPES:</div><div
        style="display: inline-flex; gap: 5px; padding: 5px;"><div style="border-radius: 2px; border:
        1px solid rgba(128,128,255,0.5); background-color: rgba(64,64,255,0.25); padding: 0px 5px;">forms.files</div></div>'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              additionalProperties: false
              required:
              - property
              - commissions
              - contacts
              properties:
                mlsNumber:
                  type: string
                  description: The mls number of the file.
                purchasePrice:
                  type: number
                  description: The purchase price of the property.
                closingDateTime:
                  type: string
                  description: The closing date of the file in the format of YYYY-MM-DDTHH:MM:SSZ.
                acceptanceDateTime:
                  type: string
                  description: The acceptanced date of the file in the format of YYYY-MM-DDTHH:MM:SSZ.
                property:
                  type: object
                  description: The property that the file is associated with.
                  additionalProperties: false
                  properties:
                    streetNumber:
                      type: string
                      description: The street number of the property.
                    streetName:
                      type: string
                      description: The street name of the property.
                    unitNumber:
                      type: string
                      description: The unit number of the property.
                    city:
                      type: string
                      description: The city of the property.
                    state:
                      type: string
                      description: The abbreviation for the state/province of the property.
                      minLength: 2
                      maxLength: 2
                    postalCode:
                      type: string
                      description: The postal code of the property.
                    county:
                      type: string
                      description: The county of the property.
                  required:
                  - streetNumber
                  - streetName
                  - city
                  - state
                  - postalCode
                commissions:
                  type: array
                  description: An array of the commissions for the file.
                  items:
                    type: object
                    properties:
                      id:
                        type: string
                        description: The id of the commission.
                      type:
                        type: string
                        enum:
                        - Listing
                        - Referral
                        - Sale
                        description: The type of the commission.
                      calculationType:
                        type: string
                        enum:
                        - Flat
                        - Percent
                        description: The calculation type of the commission.
                      amount:
                        type: number
                        description: The amount of the commission.
                      createdBy:
                        type: string
                        description: The id of the user who created the commission.
                      updatedBy:
                        type: string
                        description: The id of the user who last updated the commission.
                      createdOn:
                        type: string
                        description: The date and time the commission was created.
                      updatedOn:
                        type: string
                        description: The date and time the commission was last updated.
                      ownedBy:
                        type: string
                        description: The id of the user who owns the commission.
                contacts:
                  type: array
                  description: An array of contacts for the file.
                  items:
                    type: object
                    additionalProperties: false
                    properties:
                      id:
                        type: string
                        description: The id of the contact.
                      type:
                        type: string
                        description: The role that a contact has been assigned.
                        enum:
                        - Broker
                        - Buyer
                        - BuyerAgent
                        - BuyersLawyer
                        - EscrowOfficer
                        - LoanOfficer
                        - Other
                        - Seller
                        - SellerAgent
                        - SellersLawyer
                        - TitleOfficer
                      actionAttribute:
                        type: string
                        description: Actions for contact to participate in.
                        enum:
                        - Empty
                        - NeedsToSign
                        - CanView
                        - ReceivesCopy
                        - NoAction
                      firstName:
                        type: string
                        description: The first name of the contact.
                      middleName:
                        type: string
                        description: The middle name of the contact.
                      lastName:
                        type: string
                        description: The last name of the contact.
                      suffix:
                        type: string
                        description: The suffix of the contact.
                      email:
                        type: string
                        description: The email of the contact.
                      primaryPhoneNumber:
                        type: string
                        description: The primary phone number of the contact.
                      brokeragePhoneNumber:
                        type: string
                        description: The brokerage phone number of the contact.
                      faxPhoneNumber:
                        type: string
                        description: The fax phone number of the contact.
                      companyName:
                        type: string
                        description: The company name that the contact belongs to.
                      isEntity:
                        type: boolean
                        description: Evaluates to true if the contact is an entity.
                      isUser:
                        type: boolean
                        description: Evaluates to true if the contact is the also the agent (self).
                      isFileOwner:
                        type: boolean
                        description: Evaluates to true if the contact is the file owner.
                      lenderLicenseNumber:
                        type: string
                        description: The lender license number of the contact.
                      agentLicenseNumber:
                        type: string
                        description: The agent license number of the contact.
                      agentMLSCode:
                        type: string
                        description: The agent mls code of the contact.
                      brokerLicenseNumber:
                        type: string
                        description: The broker license number of the contact.
                      brokerMLSCode:
                        type: string
                        description: The broker mls code of the contact.
                      brokerageLicenseNumber:
                        type: string
                        description: The brokerage license number of the contact.
                      brokerageMLSCode:
                        type: string
                        description: The brokerage mls code of the contact.
                      primaryAddress:
                        type: object
                        description: The primary address of the contact.
                        additionalProperties: false
                        properties:
                          streetNumber:
                            type: string
                            description: The street number of the property.
                          streetName:
                            type: string
                            description: The street name of the property.
                          unitNumber:
                            type: string
                            description: The unit number of the property.
                          city:
                            type: string
                            description: The city of the property.
                          state:
                            type: string
                            description: The abbreviation for the state/province of the property.
                            minLength: 2
                            maxLength: 2
                          postalCode:
                            type: string
                            description: The postal code of the property.
                          county:
                            type: string
                            description: The county of the property.
                        required:
                        - streetNumber
                        - streetName
                        - city
                        - state
                        - postalCode
                      contactInformation:
                        type: object
                        description

# --- truncated at 32 KB (188 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/skyslope/refs/heads/main/openapi/skyslope-forms-partnership-openapi.yml