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 Agents, Listings Documents API 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.

\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 servers: - url: https://forms.skyslope.com/partner/api description: Production server - url: https://staging-forms.skyslope.com/partner/api description: Staging server - url: https://integ-forms.skyslope.com/partner/api description: Integration server tags: - name: Documents paths: /documents/{documentId}: get: summary: Get Document tags: - Documents description: 'Retrieve the details and field definitions for a document by its id.
REQUIRED SCOPES:
forms.documents
forms.documents.read
' parameters: - schema: type: integer minimum: 1 default: 1 in: query name: page required: false description: The page number of fields to retrieve. - schema: type: integer minimum: 1 maximum: 500 default: 10 in: query name: pageSize required: false description: The number of fields returned per page. - schema: type: integer minimum: 1 in: path name: documentId required: true description: The id of the document to retrieve. responses: '200': description: Default Response content: application/json: schema: type: object description: An object containing the details of the document. properties: id: type: number description: The id of the document. formName: type: string description: The name of the document. formId: type: - 'null' - number description: The id of the form. formVersionId: type: number description: The id of the form version. fileId: type: number description: The id of the file that the document belongs to. formURL: type: string description: The URL to the form in storage. thumbnailURL: type: string description: The url of the thumbnail of the document. pageCount: type: - 'null' - number description: The number of pages in the document. documentType: type: string description: The type of the document. createdBy: type: string description: The id of the user who created the document. updatedBy: type: - 'null' - string description: The id of the user who last updated the document. createdOn: type: string description: The date and time the document was created. updatedOn: type: string description: The date and time the document was last updated. ownedBy: type: string description: The id of the user who owns the document. page: type: number description: The current page number. pageSize: type: number description: The number of fields returned per page. totalItems: type: number description: The total number of fields on the document. totalPages: type: number description: The total number of pages available. fields: type: array description: A paginated array of the fields defined on the document. items: type: object properties: id: type: string description: The unique identifier for the field. name: type: string description: The name of the field. dataRef: type: string description: The data reference key for the field. type: type: string description: The field type (e.g. "text", "checkbox"). originalType: type: string description: The original field type as defined in the form template. xCoordinate: type: number description: The X coordinate position of the field on the page. yCoordinate: type: number description: The Y coordinate position of the field on the page. width: type: number description: The width of the field. height: type: number description: The height of the field. pageNumber: type: number description: The zero-based page number the field appears on. fontSize: type: number description: The font size for the field. isReadOnly: type: boolean description: Evaluates to true if the field is read-only. isTabbable: type: boolean description: Evaluates to true if the field is reachable via tab. isFirstAggregateField: type: boolean description: Evaluates to true if the field is the first in an aggregate group. isGlobal: type: boolean description: Evaluates to true if the field is globally scoped across forms. isOptional: type: boolean description: Evaluates to true if the field is optional. isDefaultToday: type: boolean description: Evaluates to true if the field defaults to today's date. digisignAllowOverrideIsOptional: type: boolean description: Evaluates to true if DigiSign is allowed to override the optional setting. format: type: - 'null' - string description: The format string applied to the field value. order: type: - 'null' - number description: The tab order of the field. clientType: type: - 'null' - string description: The contact type associated with the field. position: type: - 'null' - number description: The position of the field within its group. entityDisplayRule: type: - 'null' - string description: Display rule controlling field visibility. fieldDisplay: type: - 'null' - string description: Additional display metadata for the field. listingFieldName: type: - 'null' - string description: The listing field name mapped to this field. listingTableName: type: - 'null' - string description: The listing table name mapped to this field. referenceListingFieldName: type: - 'null' - string description: The reference listing field name mapped to this field. group: type: - 'null' - object description: The field group this field belongs to. domainFieldMetaData: type: - 'null' - object description: Domain-specific metadata for the field. associatedDataRefs: type: array description: Data references associated with this field. items: type: string example: id: 211469 formName: Purchase Agreement Form formId: null formVersionId: 28081 fileId: 582186 formURL: https://s3.us-west-2.amazonaws.com/example-bucket/forms/28081.pdf thumbnailURL: https://s3.us-west-2.amazonaws.com/example-bucket/thumbnails/28081.png pageCount: 3 documentType: Forms createdBy: 00u1j6qlmwclWMB9O357 updatedBy: null createdOn: '2024-01-15T10:30:00Z' updatedOn: '2026-02-02T18:32:58Z' ownedBy: 00u1j6qlmwclWMB9O357 page: 1 pageSize: 10 totalItems: 1 totalPages: 1 fields: - id: Text1-482.70001220703125-104.5369873046875-0 name: Text1 dataRef: Text1 type: text originalType: textinputblock xCoordinate: 482.70001220703125 yCoordinate: 104.5369873046875 width: 92.16796875 height: 11.880000114440918 pageNumber: 0 fontSize: 8 isReadOnly: false isTabbable: true isFirstAggregateField: false isGlobal: false isOptional: false isDefaultToday: false digisignAllowOverrideIsOptional: true format: null order: null clientType: null position: null entityDisplayRule: null fieldDisplay: null listingFieldName: null listingTableName: null referenceListingFieldName: null group: null domainFieldMetaData: null associatedDataRefs: [] 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. patch: summary: Update Document tags: - Documents description: 'Update the field values of a document. Only the fields supplied in the request body will be updated; existing values of other fields are preserved.
REQUIRED SCOPES:
forms.documents
' requestBody: content: application/json: schema: type: object additionalProperties: true description: A JSON object containing the document field data references and their values to be updated. Only the fields supplied will be updated; existing values of other fields are preserved. description: A JSON object containing the document field data references and their values to be updated. Only the fields supplied will be updated; existing values of other fields are preserved. parameters: - schema: type: integer minimum: 1 in: path name: documentId required: true description: The id of the document to update. responses: '200': description: Default Response content: application/json: schema: type: object properties: documentId: type: number description: The id of the document that was updated. didAddendumsChange: type: boolean description: Evaluates to true if the number of addendum pages changed as a result of the update. example: documentId: 123456 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. delete: summary: Delete Document. tags: - Documents description: 'Delete a document.
REQUIRED SCOPES:
forms.documents
' parameters: - schema: type: integer minimum: 1 in: path name: documentId required: true description: The id of the document to delete. responses: '200': description: Default Response content: application/json: schema: type: object required: - documentId properties: documentId: type: number description: The id of the document that was deleted from the file. example: documentId: 123456 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}/documents: get: summary: Get File Documents tags: - Documents description: 'Retrieve the documents metadata for a file. To download documents with proper branding and data stamping, use the /files/:fileId/documents/download or /files/:fileId/documents/download/pdf endpoints.
REQUIRED SCOPES:
forms.documents
forms.documents.read
' parameters: - schema: type: integer minimum: 1 in: path name: fileId required: true description: The id of the file to retrieve documents for. responses: '200': description: Default Response content: application/json: schema: type: object description: An object containing the documents found for the file. properties: totalRecords: type: number description: The total number of documents found for the file. documents: type: array description: An array containing the documents found for the file. items: type: object properties: id: type: number description: The id of the document. formName: type: string description: The name of the document. formId: type: number description: The id of the form. formVersionId: type: number description: The id of the form version. fileId: type: number description: The id of the file that the document belongs to. thumbnailURL: type: string description: The url of the thumbnail of the document. pageCount: type: - 'null' - number description: The number of pages in the document. documentType: type: string description: The type of the document. createdBy: type: string description: The id of the user who created the document. updatedBy: type: string description: The id of the user who last updated the document. createdOn: type: string description: The date and time the document was created. updatedOn: type: string description: The date and time the document was last updated. ownedBy: type: string description: The id of the user who owns the document. example: totalRecords: 1 documents: - id: 123456 formName: Purchase Agreement Form formId: 789 formVersionId: 1011 fileId: 456789 thumbnailURL: https://example.com/thumbnails/form-12345.png pageCount: 5 documentType: Forms createdBy: 00u123456789abcdef updatedBy: 00u123456789abcdef createdOn: '2024-01-15T10:30:00Z' updatedOn: '2024-01-15T10:30:00Z' ownedBy: 00u123456789abcdef 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. patch: summary: Add Documents to File tags: - Documents description: 'Add one or more documents to a file.
REQUIRED SCOPES:
forms.files
forms.documents
' requestBody: content: application/json: schema: type: object additionalProperties: false required: - formIds properties: formIds: type: array description: An array of the Form Ids of the Forms to add to the file. minItems: 1 items: type: integer description: A Form Id of the Form to add to the file. required: true parameters: - schema: type: integer minimum: 1 in: path name: fileId required: true description: The id of the file to add the documents to. responses: '200': description: Default Response content: application/json: schema: type: object properties: documentIds: type: array description: An array of the documentIds that were added to the file. items: type: number example: documentIds: - 1 - 2 - 3 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. /documents/signed/{fileId}: get: summary: Get Signed Documents tags: - Documents description: 'Retrieve the signed documents for a file.
REQUIRED SCOPES:
forms.documents
forms.documents.read
' parameters: - schema: type: integer minimum: 1 in: path name: fileId required: true description: The id of the file to retrieve signed documents for. responses: '200': description: Default Response content: application/json: schema: type: object description: An object containing the signed documents found for the authenticated user. properties: totalRecords: type: number description: The total number of signed documents found for the authenticated user. documents: type: array description: An array containing the signed documents found for the authenticated user. items: type: object properties: documentId: type: number description: The id of the document. documentName: type: string description: The name of the document. filename: type: string description: The name of the file that the document belongs to. pageCount: type: number description: The number of pages in the document. externalDocumentId: type: string description: The external id of the document. fileId: type: number description: The id of the file that the document belongs to. envelopeId: type: string description: The id of the envelope that the document belongs to. envelopeName: type: string description: The name of the envelope that the document belongs to. envelopeDocumentId: type: number description: The id of the envelope document. digisignDocumentGuid: type: string description: The digisign document guid of the document. documentUrl: type: string description: The url that can be used to download the document. thumbnailUrl: type: string description: The url of the thumbnail of the document. documentAddedDate: type: string description: The date and time the document was added. ownedBy: type: string description: The id of the user who owns the document. example: - envelopeDocumentId: 1 envelopeId: 1 digisignDocumentGuid: asdimfao9im38-a98sdng-9 envelopeName: Envelope Name dateSigned: '2023-12-31T12:12:12.123Z' fileId: 1 documentId: 1 externalDocumentId: asdimfao9im38-a98sdng-9 documentAddedDate: '2024-01-02T17:51:38Z' documentName: Addendum documentUrl: https://document-url/document1.pdf pageCount: 6 filename: document1.pdf thumbnailUrl: https://thumbnail-url/document1.pdf ownedBy: 00u24fri71ChN970u357 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. /documents/sign/subscribe/{fileId}: post: summary: Subscribe To Signed Documents Webhook tags: - Documents description: 'Subscribe a file to the signed documents webhook.
REQUIRED SCOPES:
forms.webhooks
' requestBody: content: application/json: schema: type: object additionalProperties: false required: - webhookUrl properties: webhookUrl: type: string description: The url to send the webhook response to when documents are signed documents. required: true parameters: - schema: type: integer minimum: 1 in: path name: fileId required: true description: The id of the file to subscribe to the signed documents webhook. responses: '200': description: Default Response content: application/json: schema: type: object additionalProperties: false properties: subscribed: type: boolean description: Evaluates to true if the user was successfully subscribed to the webhook. '208': 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. 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}/documents/upload: post: summary: Upload Document to File tags: - Documents description: 'Upload a PDF document to a file. Max size 25MB. Accepts multipart/form-data with fields: DocumentName (string), DocumentBody (binary PDF file), IsSignedDocument (true/false, optional).
REQUIRED SCOPES:
forms.files
forms.documents
' parameters: - schema: type: integer minimum: 1 in: path name: fileId required: true description: The id of the file to upload the document to. responses: '200': description: Document uploaded successfully content: application/json: schema: type: object required: - documentId properties: documentId: type: integer default: description: Default Response content: application/json: schema: type: object required: - code - message - errors - traceId 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 items: type: string description: An array of the errors that occurred. traceId: type: string description: A request correlation ID.