Scrive Signing API
Manage the signatory-facing signing process - retrieve signing data and sign-link QR codes, remind and resend to signatories, forward and restart documents, change signatory contact details, and run bulk sends.
Manage the signatory-facing signing process - retrieve signing data and sign-link QR codes, remind and resend to signatories, forward and restart documents, change signatory contact details, and run bulk sends.
openapi: 3.0.3
info:
title: Scrive Document API
version: 2.0.0
description: >-
The Scrive Document API (eSign Online, Version 2) is a RESTful, JSON-over-HTTPS
interface that creates, prepares, sends, and manages the full lifecycle of
documents for electronic signing, with identity verification through Nordic and
European e-ID methods (BankID, MitID, Freja, Smart-ID, and more). Document status
changes are delivered to consumers via HTTP callback (webhook) URLs. Endpoints
are grounded in the public documentation at https://apidocs.scrive.com/. Request
and response schemas are modeled and should be verified against the live docs.
contact:
name: API Evangelist
email: kin@apievangelist.com
license:
name: Proprietary
url: https://www.scrive.com/
servers:
- url: https://scrive.com/api/v2
description: Production
- url: https://api-testbed.scrive.com/api/v2
description: API Testbed (development)
security:
- oauth2: []
- oauth1: []
tags:
- name: Monitor
- name: Documents
- name: Templates
- name: Signing
- name: e-ID Authentication
- name: Attachments
- name: Callbacks
- name: Access Control
paths:
/monitor/status:
get:
tags: [Monitor]
operationId: monitorStatus
summary: System status check
responses:
'200':
description: Service status.
/documents/new:
post:
tags: [Documents]
operationId: newDocument
summary: Create a new document
requestBody:
content:
multipart/form-data:
schema:
type: object
properties:
file:
type: string
format: binary
saved:
type: boolean
responses:
'201':
description: Created document.
content:
application/json:
schema:
$ref: '#/components/schemas/Document'
/documents/newfromtemplate/{document_id}:
post:
tags: [Templates]
operationId: newFromTemplate
summary: Create a new document from a template
parameters:
- $ref: '#/components/parameters/DocumentId'
responses:
'201':
description: Document created from template.
content:
application/json:
schema:
$ref: '#/components/schemas/Document'
/documents/{document_id}/clone:
post:
tags: [Templates]
operationId: cloneDocument
summary: Clone a document
parameters:
- $ref: '#/components/parameters/DocumentId'
responses:
'201':
description: Cloned document.
content:
application/json:
schema:
$ref: '#/components/schemas/Document'
/documents/{document_id}/update:
post:
tags: [Documents]
operationId: updateDocument
summary: Update a document
parameters:
- $ref: '#/components/parameters/DocumentId'
requestBody:
content:
multipart/form-data:
schema:
type: object
properties:
document:
type: string
description: JSON document definition.
responses:
'200':
description: Updated document.
content:
application/json:
schema:
$ref: '#/components/schemas/Document'
/documents/{document_id}/setfile:
post:
tags: [Documents]
operationId: setFile
summary: Set the main file of a document
parameters:
- $ref: '#/components/parameters/DocumentId'
requestBody:
content:
multipart/form-data:
schema:
type: object
properties:
file:
type: string
format: binary
responses:
'200':
description: File set.
content:
application/json:
schema:
$ref: '#/components/schemas/Document'
/documents/{document_id}/appendfile:
post:
tags: [Documents]
operationId: appendFile
summary: Append a PDF to a document
parameters:
- $ref: '#/components/parameters/DocumentId'
responses:
'200':
description: File appended.
/documents/{document_id}/start:
post:
tags: [Documents]
operationId: startDocument
summary: Start the signing process
parameters:
- $ref: '#/components/parameters/DocumentId'
responses:
'200':
description: Signing process started; document is pending.
content:
application/json:
schema:
$ref: '#/components/schemas/Document'
/documents/{document_id}/get:
get:
tags: [Documents]
operationId: getDocument
summary: Retrieve a document
parameters:
- $ref: '#/components/parameters/DocumentId'
responses:
'200':
description: Document.
content:
application/json:
schema:
$ref: '#/components/schemas/Document'
/documents/{short_document_id}/getbyshortid:
get:
tags: [Documents]
operationId: getByShortId
summary: Retrieve a document by short ID
parameters:
- name: short_document_id
in: path
required: true
schema:
type: string
responses:
'200':
description: Document.
content:
application/json:
schema:
$ref: '#/components/schemas/Document'
/documents/list:
get:
tags: [Documents]
operationId: listDocuments
summary: List documents
parameters:
- name: filter
in: query
schema:
type: string
description: JSON-encoded filter.
- name: sorting
in: query
schema:
type: string
- name: offset
in: query
schema:
type: integer
- name: max
in: query
schema:
type: integer
responses:
'200':
description: A list of documents.
content:
application/json:
schema:
type: object
properties:
total_matching:
type: integer
documents:
type: array
items:
$ref: '#/components/schemas/Document'
/documents/{document_id}/canbestarted:
get:
tags: [Documents]
operationId: canBeStarted
summary: Validate a document is ready to start
parameters:
- $ref: '#/components/parameters/DocumentId'
responses:
'200':
description: Readiness result.
/documents/{document_id}/remind:
post:
tags: [Signing]
operationId: remind
summary: Remind signatories
parameters:
- $ref: '#/components/parameters/DocumentId'
responses:
'200':
description: Reminder sent.
/documents/{document_id}/prolong:
post:
tags: [Documents]
operationId: prolong
summary: Extend document expiry
parameters:
- $ref: '#/components/parameters/DocumentId'
responses:
'200':
description: Expiry extended.
/documents/{document_id}/cancel:
post:
tags: [Documents]
operationId: cancel
summary: Cancel a pending document
parameters:
- $ref: '#/components/parameters/DocumentId'
responses:
'200':
description: Document canceled.
/documents/{document_id}/trash:
post:
tags: [Documents]
operationId: trash
summary: Move a document to trash
parameters:
- $ref: '#/components/parameters/DocumentId'
responses:
'200':
description: Document trashed.
/documents/{document_id}/delete:
post:
tags: [Documents]
operationId: deleteDocument
summary: Delete a document
parameters:
- $ref: '#/components/parameters/DocumentId'
responses:
'200':
description: Document deleted.
/documents/{document_id}/forward:
post:
tags: [Signing]
operationId: forward
summary: Forward a document
parameters:
- $ref: '#/components/parameters/DocumentId'
responses:
'200':
description: Document forwarded.
/documents/{document_id}/restart:
post:
tags: [Signing]
operationId: restart
summary: Restart a document
parameters:
- $ref: '#/components/parameters/DocumentId'
responses:
'201':
description: New document created from the restarted one.
/documents/{document_id}/{signatory_id}/resend:
post:
tags: [Signing]
operationId: resend
summary: Resend an invitation to a signatory
parameters:
- $ref: '#/components/parameters/DocumentId'
- $ref: '#/components/parameters/SignatoryId'
responses:
'200':
description: Invitation resent.
/documents/{document_id}/{signatory_id}/getqrcode:
get:
tags: [Signing]
operationId: getQrCode
summary: Get a sign-link QR code for a signatory
parameters:
- $ref: '#/components/parameters/DocumentId'
- $ref: '#/components/parameters/SignatoryId'
responses:
'200':
description: QR code image or data.
/documents/{document_id}/{signatory_id}/signingdata:
get:
tags: [Signing]
operationId: signingData
summary: Get signing data for a signatory
parameters:
- $ref: '#/components/parameters/DocumentId'
- $ref: '#/components/parameters/SignatoryId'
responses:
'200':
description: Signing data.
/documents/{document_id}/{signatory_id}/changemobile:
post:
tags: [Signing]
operationId: changeMobile
summary: Change a signatory's contact info
parameters:
- $ref: '#/components/parameters/DocumentId'
- $ref: '#/components/parameters/SignatoryId'
responses:
'200':
description: Contact info updated.
/documents/{document_id}/{signatory_id}/setauthenticationtoview:
post:
tags: [e-ID Authentication]
operationId: setAuthToView
summary: Set the e-ID method required to view
parameters:
- $ref: '#/components/parameters/DocumentId'
- $ref: '#/components/parameters/SignatoryId'
requestBody:
content:
multipart/form-data:
schema:
$ref: '#/components/schemas/AuthenticationSetting'
responses:
'200':
description: Authentication-to-view set.
/documents/{document_id}/{signatory_id}/setauthenticationtosign:
post:
tags: [e-ID Authentication]
operationId: setAuthToSign
summary: Set the e-ID method required to sign
parameters:
- $ref: '#/components/parameters/DocumentId'
- $ref: '#/components/parameters/SignatoryId'
requestBody:
content:
multipart/form-data:
schema:
$ref: '#/components/schemas/AuthenticationSetting'
responses:
'200':
description: Authentication-to-sign set.
/documents/{document_id}/{signatory_id}/setauthenticationtoviewarchived:
post:
tags: [e-ID Authentication]
operationId: setAuthToViewArchived
summary: Set the e-ID method required to view archived
parameters:
- $ref: '#/components/parameters/DocumentId'
- $ref: '#/components/parameters/SignatoryId'
requestBody:
content:
multipart/form-data:
schema:
$ref: '#/components/schemas/AuthenticationSetting'
responses:
'200':
description: Authentication-to-view-archived set.
/documents/{document_id}/setattachments:
post:
tags: [Attachments]
operationId: setAttachments
summary: Set author attachments on a document
parameters:
- $ref: '#/components/parameters/DocumentId'
responses:
'200':
description: Attachments set.
/documents/{document_id}/{signatory_id}/setfiletosignatory:
post:
tags: [Attachments]
operationId: setFileToSignatory
summary: Attach a file to a signatory
parameters:
- $ref: '#/components/parameters/DocumentId'
- $ref: '#/components/parameters/SignatoryId'
responses:
'200':
description: File attached to signatory.
/documents/{document_id}/files/main/{filename}:
get:
tags: [Attachments]
operationId: getMainFile
summary: Download the main file
parameters:
- $ref: '#/components/parameters/DocumentId'
- name: filename
in: path
required: true
schema:
type: string
responses:
'200':
description: PDF file.
content:
application/pdf: {}
/documents/{document_id}/files/zip/{filename}:
get:
tags: [Attachments]
operationId: getZip
summary: Download all files as a ZIP
parameters:
- $ref: '#/components/parameters/DocumentId'
- name: filename
in: path
required: true
schema:
type: string
responses:
'200':
description: ZIP archive.
content:
application/zip: {}
/attachments/list:
get:
tags: [Attachments]
operationId: listAttachments
summary: List reusable attachments
responses:
'200':
description: A list of attachments.
/attachments/new:
post:
tags: [Attachments]
operationId: newAttachment
summary: Create a reusable attachment
responses:
'201':
description: Attachment created.
/attachments/{attachment_id}/download:
get:
tags: [Attachments]
operationId: downloadAttachment
summary: Download an attachment
parameters:
- $ref: '#/components/parameters/AttachmentId'
responses:
'200':
description: Attachment file.
/attachments/{attachment_id}/share:
post:
tags: [Attachments]
operationId: shareAttachment
summary: Share or unshare an attachment
parameters:
- $ref: '#/components/parameters/AttachmentId'
responses:
'200':
description: Share state updated.
/attachments/{attachment_id}:
delete:
tags: [Attachments]
operationId: deleteAttachment
summary: Delete an attachment
parameters:
- $ref: '#/components/parameters/AttachmentId'
responses:
'200':
description: Attachment deleted.
/documents/{document_id}/callback:
post:
tags: [Callbacks]
operationId: triggerCallback
summary: Trigger a manual callback
description: >-
Triggers a callback (HTTP POST) to the document's configured api_callback_url.
Scrive also automatically POSTs a callback when a document changes to pending,
closed, canceled, timedout, or rejected, retrying failed deliveries.
parameters:
- $ref: '#/components/parameters/DocumentId'
responses:
'200':
description: Callback triggered.
/usergroups/create:
post:
tags: [Access Control]
operationId: createUserGroup
summary: Create a user group
responses:
'201':
description: User group created.
/usergroups/{group_id}/get:
get:
tags: [Access Control]
operationId: getUserGroup
summary: Get a user group
parameters:
- $ref: '#/components/parameters/GroupId'
responses:
'200':
description: User group.
/usergroups/{group_id}/users:
get:
tags: [Access Control]
operationId: listGroupUsers
summary: List members of a user group
parameters:
- $ref: '#/components/parameters/GroupId'
responses:
'200':
description: A list of users.
/accessroles/{user_id}:
get:
tags: [Access Control]
operationId: listAccessRoles
summary: List a user's access roles
parameters:
- $ref: '#/components/parameters/UserId'
responses:
'200':
description: A list of access roles.
post:
tags: [Access Control]
operationId: grantAccessRole
summary: Grant an access role to a user
parameters:
- $ref: '#/components/parameters/UserId'
responses:
'201':
description: Access role granted.
/accessroles/{user_id}/{role_id}:
delete:
tags: [Access Control]
operationId: deleteAccessRole
summary: Revoke an access role
parameters:
- $ref: '#/components/parameters/UserId'
- name: role_id
in: path
required: true
schema:
type: string
responses:
'200':
description: Access role revoked.
/folders/create:
post:
tags: [Access Control]
operationId: createFolder
summary: Create a folder
responses:
'201':
description: Folder created.
/folders/{folder_id}:
get:
tags: [Access Control]
operationId: getFolder
summary: View a folder
parameters:
- $ref: '#/components/parameters/FolderId'
responses:
'200':
description: Folder.
delete:
tags: [Access Control]
operationId: deleteFolder
summary: Delete a folder
parameters:
- $ref: '#/components/parameters/FolderId'
responses:
'200':
description: Folder deleted.
components:
parameters:
DocumentId:
name: document_id
in: path
required: true
schema:
type: string
SignatoryId:
name: signatory_id
in: path
required: true
schema:
type: string
AttachmentId:
name: attachment_id
in: path
required: true
schema:
type: string
GroupId:
name: group_id
in: path
required: true
schema:
type: string
UserId:
name: user_id
in: path
required: true
schema:
type: string
FolderId:
name: folder_id
in: path
required: true
schema:
type: string
schemas:
Document:
type: object
properties:
id:
type: string
title:
type: string
status:
type: string
enum: [preparation, pending, closed, canceled, timedout, rejected, document_error]
parties:
type: array
items:
$ref: '#/components/schemas/Signatory'
file:
type: object
nullable: true
api_callback_url:
type: string
nullable: true
ctime:
type: string
format: date-time
mtime:
type: string
format: date-time
Signatory:
type: object
properties:
id:
type: string
is_author:
type: boolean
is_signatory:
type: boolean
fields:
type: array
items:
type: object
authentication_method_to_view:
type: string
authentication_method_to_sign:
type: string
AuthenticationSetting:
type: object
properties:
authentication_type:
type: string
description: >-
e-ID method, e.g. se_bankid, no_bankid, fi_tupas, dk_mitid, freja,
smart_id_qes, sms_pin, standard, verimi.
personal_number:
type: string
mobile_number:
type: string
securitySchemes:
oauth2:
type: oauth2
flows:
authorizationCode:
authorizationUrl: https://oauth2.scrive.com/oauth2/authorization
tokenUrl: https://oauth2.scrive.com/oauth2/token
scopes:
doc:create: Create documents
doc:check: Read documents
doc:send: Send documents
full: Full access
offline_access: Refresh tokens
openid: OpenID Connect
oauth1:
type: apiKey
in: header
name: Authorization
description: >-
OAuth 1.0 or personal access credentials passed in the Authorization header
using PLAINTEXT signatures (oauth_consumer_key, oauth_token, oauth_signature).