NAV -image
bash php python javascript

Introduction

This documentation provides all the information you need to work with the signteq.io API.

The signteq.io API is organized around REST. Our API has predictable resource-oriented URLs, returns JSON-encoded responses, and uses standard HTTP response codes, authentication, and verbs.

Base URL

https://api.signteq.io

How we charge

The usage of the signteq API is not free and requires a paid API plan. The API will return HTTP 402 if such requests are made without a proper plan. We understand that you may want to test the API before paying for it.

Contact us to get a free API test token.

Rate limits

Rate limit information is returned in the HTTP headers of any API request:

HTTP/1.1 200 OK X-Ratelimit-Limit: 100 X-Ratelimit-Remaining: 99 X-Ratelimit-Reset: 1430170900

By default, you can make up to 100 requests per minute via the API. With a free API test token you can make 10 requests per minute. Exceptions can be made for customers with higher volumes. Please contact us for more information.

If your application triggers this rate limit, you'll receive the following response:

HTTP/1.1 429 Too Many Requests { "message": "Too Many Attempts." }

Errors

signteq.io uses conventional HTTP response codes to indicate the success or failure of an API request. In general: Codes in the 2xx range indicate success. Codes in the 4xx range indicate an error that failed given the information provided (e.g. a required parameter was omitted, a parameter has a wrong type, etc.). Codes in the 5xx range indicate an error with signteq.io's servers (these are rare).

Organization Selection

curl -X GET \
    -G "https://api.signteq.io.test/v1/organizations?organization_id=a25da8ee-3773-4ce4-8dee-40e63ad6fb25" \
    -H "Authorization: Bearer {YOUR_AUTH_KEY}" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json"

Each API request made to the signteq API should carry the organization_id GET parameter within the API request URL. You can access your organizations ID by logging in to one of your organizations and navigating to the Organizations settings section.

You can also list all available organizations by making a GET request to the Organization endpoint.

Pagination

Most top-level API resources have support for bulk fetches. For instance, you can list requests or list recipients. Paginated responses always contain meta and links keys with information about the paginator's state. The data array contains the actual response elements, paginated by any request parameters.

Webhooks

General

Once the recipients successfully completes a document, signteq will verify and process the signature and document(s) asynchronously, as the processing is happening at a later time and not directly in response to your code’s execution. signteq will notify your system about changes in regards to the status of the signature process so your integration can take subsequent steps.

This is where a webhook comes in place. signteq can notify you once we have finished processing all the documents. You can set up webhooks in your developer dashboard's webhook section. There are also other events about which you will be informed via webhook. Read more about them in the "Event Types" section below.

1. Webhook Configuration

To properly receive incoming webhooks, your server should provide an endpoint supporting:

You can use a service like e.g. https://webhook.site/ to test receiving webhooks from your developer dashboard. For local testing, you can use a CLI tool such as ngrok to forward the requests to your local development server.

When you receive an signteq event, your endpoint should return a HTTP 2xx status code indicating that the event has been successfully received. Webhooks are autmatically retried for up to 24 hours if no HTTP 200 status code is returned. The call will also be considered failed if your endpoint doesn't respond within 10 seconds.

When a webhook call fails, we'll retry the call 6 more times. By default, we wait 10 seconds between the first and second attempt, 100 seconds between the third and the fourth, 1000 between the fourth and the fifth and 10000 for the last attempt.

2. Event Types

Events posted to your callback url will be formatted as a JSON string contained in the json POST param.

Event Type Description
request_viewed The Request has been viewed by a recipient.
document_viewed A Document has been viewed by a recipient.
document_signed A recipient has completed / signed all required fields of a document.
document_completed All recipients have signed the document and it is ready to be downloaded.
request_declined The SignatureRequest was declined by a recipient.

3. Security

Webhooks are a crucial node to ensure the functionality of your integration, as such, they can be the target of a malicious user aiming to disrupt the service or impersonate your users. In order to protect your application from these threats, a secret will be used to sign the request body.

We will add a header called Signature that will contain a signature of the event payload. You can use this signature to verify that the payload hasn't been manipulated. The signature is a HMAC using your Webhook Secret as a key and the SHA256 hash algorithm.

There will also be a header User-Agent with the value signteq.io API on each callback request to help you identify us.

This is how that signature is calculated (PHP example):

$payload = [ 'event' => 'request_signed' /// ... ]; $payloadJson = json_encode($payload); $signature = hash_hmac('sha256', $payloadJson, $secret);

Authenticating requests

This API is authenticated by sending an Authorization header with the value "Bearer {YOUR_API_TOKEN}".

All authenticated endpoints are marked with a requires authentication badge in the documentation below.

You can retrieve your token by visiting your user settings and clicking Generate API token.

Documents

When you create a request, you need to upload documents to be signed. With the following /document endpoints you can access or download theese documents.

Get Document

requires authentication

Example request:

curl -X GET \
    -G "https://api.signteq.io/v1/documents/f5cfac16-3275-4e77-b33c-72bccace0130" \
    -H "Authorization: Bearer {YOUR_API_TOKEN}" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json"

$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://api.signteq.io/v1/documents/f5cfac16-3275-4e77-b33c-72bccace0130',
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_API_TOKEN}',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.signteq.io/v1/documents/f5cfac16-3275-4e77-b33c-72bccace0130'
headers = {
  'Authorization': 'Bearer {YOUR_API_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
const url = new URL(
    "https://api.signteq.io/v1/documents/f5cfac16-3275-4e77-b33c-72bccace0130"
);

let headers = {
    "Authorization": "Bearer {YOUR_API_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

{
    "id": null,
    "name": "Harum rerum corporis alias quis id enim quo..pdf",
    "size": 12655,
    "type": "pdf",
    "meta": null,
    "versions": [],
    "pages": []
}

Request      

GET v1/documents/{document}

URL Parameters

document  string  
The ID of the document.

Download Document

requires authentication

Example request:

curl -X GET \
    -G "https://api.signteq.io/v1/documents/f5cfac16-3275-4e77-b33c-72bccace0130/download?type=completed" \
    -H "Authorization: Bearer {YOUR_API_TOKEN}" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json"

$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://api.signteq.io/v1/documents/f5cfac16-3275-4e77-b33c-72bccace0130/download',
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_API_TOKEN}',
            'Accept' => 'application/json',
        ],
        'query' => [
            'type'=> 'completed',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.signteq.io/v1/documents/f5cfac16-3275-4e77-b33c-72bccace0130/download'
params = {
  'type': 'completed',
}
headers = {
  'Authorization': 'Bearer {YOUR_API_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
const url = new URL(
    "https://api.signteq.io/v1/documents/f5cfac16-3275-4e77-b33c-72bccace0130/download"
);

let params = {
    "type": "completed",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

let headers = {
    "Authorization": "Bearer {YOUR_API_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

<Binary data> -  The PDF document

Request      

GET v1/documents/{document}/download

URL Parameters

document  string  
The ID of the document.

Query Parameters

type  string  
Either original or completed.

Endpoints

v1/ekyc/verify

requires authentication

Example request:

curl -X POST \
    "https://api.signteq.io/v1/ekyc/verify" \
    -H "Authorization: Bearer {YOUR_API_TOKEN}" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json"

$client = new \GuzzleHttp\Client();
$response = $client->post(
    'https://api.signteq.io/v1/ekyc/verify',
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_API_TOKEN}',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.signteq.io/v1/ekyc/verify'
headers = {
  'Authorization': 'Bearer {YOUR_API_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers)
response.json()
const url = new URL(
    "https://api.signteq.io/v1/ekyc/verify"
);

let headers = {
    "Authorization": "Bearer {YOUR_API_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST v1/ekyc/verify

v1/ksv/report

requires authentication

Example request:

curl -X POST \
    "https://api.signteq.io/v1/ksv/report" \
    -H "Authorization: Bearer {YOUR_API_TOKEN}" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json"

$client = new \GuzzleHttp\Client();
$response = $client->post(
    'https://api.signteq.io/v1/ksv/report',
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_API_TOKEN}',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.signteq.io/v1/ksv/report'
headers = {
  'Authorization': 'Bearer {YOUR_API_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers)
response.json()
const url = new URL(
    "https://api.signteq.io/v1/ksv/report"
);

let headers = {
    "Authorization": "Bearer {YOUR_API_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST v1/ksv/report

v1/address/verify

requires authentication

Example request:

curl -X POST \
    "https://api.signteq.io/v1/address/verify" \
    -H "Authorization: Bearer {YOUR_API_TOKEN}" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json"

$client = new \GuzzleHttp\Client();
$response = $client->post(
    'https://api.signteq.io/v1/address/verify',
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_API_TOKEN}',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.signteq.io/v1/address/verify'
headers = {
  'Authorization': 'Bearer {YOUR_API_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers)
response.json()
const url = new URL(
    "https://api.signteq.io/v1/address/verify"
);

let headers = {
    "Authorization": "Bearer {YOUR_API_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST v1/address/verify

v1/data/sanitize

requires authentication

Example request:

curl -X POST \
    "https://api.signteq.io/v1/data/sanitize" \
    -H "Authorization: Bearer {YOUR_API_TOKEN}" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json"

$client = new \GuzzleHttp\Client();
$response = $client->post(
    'https://api.signteq.io/v1/data/sanitize',
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_API_TOKEN}',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.signteq.io/v1/data/sanitize'
headers = {
  'Authorization': 'Bearer {YOUR_API_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers)
response.json()
const url = new URL(
    "https://api.signteq.io/v1/data/sanitize"
);

let headers = {
    "Authorization": "Bearer {YOUR_API_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST v1/data/sanitize

Organization Settings

Get Organization Notifications

requires authentication

Example request:

curl -X GET \
    -G "https://api.signteq.io/v1/organizations/f5cfac16-3275-4e77-b33c-72bccace0130/notifications" \
    -H "Authorization: Bearer {YOUR_API_TOKEN}" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json"

$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://api.signteq.io/v1/organizations/f5cfac16-3275-4e77-b33c-72bccace0130/notifications',
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_API_TOKEN}',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.signteq.io/v1/organizations/f5cfac16-3275-4e77-b33c-72bccace0130/notifications'
headers = {
  'Authorization': 'Bearer {YOUR_API_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
const url = new URL(
    "https://api.signteq.io/v1/organizations/f5cfac16-3275-4e77-b33c-72bccace0130/notifications"
);

let headers = {
    "Authorization": "Bearer {YOUR_API_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

{
    "recipient_reminder": null,
    "document_viewed": null,
    "document_signed": null,
    "document_declined": null,
    "document_completed": null,
    "copy_document_completed": null,
    "copy_recipients_document_completed": null
}

Request      

GET v1/organizations/{organization}/notifications

URL Parameters

organization  string  
The ID of the organization.

Update Organization Notifications

requires authentication

Updates the specified organization notification settings by setting the values of the parameters passed. Any parameters not provided will be left unchanged.

Example request:

curl -X PATCH \
    "https://api.signteq.io/v1/organizations/f5cfac16-3275-4e77-b33c-72bccace0130/notifications" \
    -H "Authorization: Bearer {YOUR_API_TOKEN}" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"recipient_reminder":false,"document_viewed":true,"document_signed":false,"document_declined":false,"document_completed":false,"copy_document_completed":false,"copy_recipients_document_completed":false}'

$client = new \GuzzleHttp\Client();
$response = $client->patch(
    'https://api.signteq.io/v1/organizations/f5cfac16-3275-4e77-b33c-72bccace0130/notifications',
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_API_TOKEN}',
            'Accept' => 'application/json',
        ],
        'json' => [
            'recipient_reminder' => false,
            'document_viewed' => true,
            'document_signed' => false,
            'document_declined' => false,
            'document_completed' => false,
            'copy_document_completed' => false,
            'copy_recipients_document_completed' => false,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.signteq.io/v1/organizations/f5cfac16-3275-4e77-b33c-72bccace0130/notifications'
payload = {
    "recipient_reminder": false,
    "document_viewed": true,
    "document_signed": false,
    "document_declined": false,
    "document_completed": false,
    "copy_document_completed": false,
    "copy_recipients_document_completed": false
}
headers = {
  'Authorization': 'Bearer {YOUR_API_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('PATCH', url, headers=headers, json=payload)
response.json()
const url = new URL(
    "https://api.signteq.io/v1/organizations/f5cfac16-3275-4e77-b33c-72bccace0130/notifications"
);

let headers = {
    "Authorization": "Bearer {YOUR_API_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "recipient_reminder": false,
    "document_viewed": true,
    "document_signed": false,
    "document_declined": false,
    "document_completed": false,
    "copy_document_completed": false,
    "copy_recipients_document_completed": false
}

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):

{
    "recipient_reminder": null,
    "document_viewed": null,
    "document_signed": null,
    "document_declined": null,
    "document_completed": null,
    "copy_document_completed": null,
    "copy_recipients_document_completed": null
}

Request      

PATCH v1/organizations/{organization}/notifications

URL Parameters

organization  string  
The ID of the organization.

Body Parameters

recipient_reminder  boolean optional  
If activated, recipients will be automatically reminded after 1, 3 and 7 days of unsigned documents.

document_viewed  boolean optional  
If activated, you will receive a notification if a document has been viewed.

document_signed  boolean optional  
If activated, you will receive a notification if a document has been signed.

document_declined  boolean optional  
If activated, you will receive a notification if a document has been declined.

document_completed  boolean optional  
If activated, you will receive a notification if a document has been completed.

copy_document_completed  boolean optional  
If activated, you will receive the completed document after all recipients have signed.

copy_recipients_document_completed  boolean optional  
If activated, the documents recipients will receive the completed document after all recipients have signed.

Get Organization Signature Settings

requires authentication

Example request:

curl -X GET \
    -G "https://api.signteq.io/v1/organizations/f5cfac16-3275-4e77-b33c-72bccace0130/signatures" \
    -H "Authorization: Bearer {YOUR_API_TOKEN}" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json"

$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://api.signteq.io/v1/organizations/f5cfac16-3275-4e77-b33c-72bccace0130/signatures',
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_API_TOKEN}',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.signteq.io/v1/organizations/f5cfac16-3275-4e77-b33c-72bccace0130/signatures'
headers = {
  'Authorization': 'Bearer {YOUR_API_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
const url = new URL(
    "https://api.signteq.io/v1/organizations/f5cfac16-3275-4e77-b33c-72bccace0130/signatures"
);

let headers = {
    "Authorization": "Bearer {YOUR_API_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

{
    "allow_draw": null,
    "allow_type": null,
    "allow_upload": null,
    "allow_mobilephone": null,
    "include_document_id": null,
    "include_docutrust_seal": null
}

Request      

GET v1/organizations/{organization}/signatures

URL Parameters

organization  string  
The ID of the organization.

Update Organization Signature Settings

requires authentication

Updates the specified organization signature settings by setting the values of the parameters passed. Any parameters not provided will be left unchanged.

Example request:

curl -X PATCH \
    "https://api.signteq.io/v1/organizations/f5cfac16-3275-4e77-b33c-72bccace0130/signatures" \
    -H "Authorization: Bearer {YOUR_API_TOKEN}" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"signature_settings":{"allow_draw":false,"allow_type":false,"allow_upload":false,"allow_mobilephone":false,"include_document_id":false,"include_docutrust_seal":false},"document_password":{"password":"dolor","encryption_level":"256"},"allow_draw":true,"allow_type":true,"allow_upload":true,"allow_mobilephone":true,"include_document_id":false,"include_docutrust_seal":true}'

$client = new \GuzzleHttp\Client();
$response = $client->patch(
    'https://api.signteq.io/v1/organizations/f5cfac16-3275-4e77-b33c-72bccace0130/signatures',
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_API_TOKEN}',
            'Accept' => 'application/json',
        ],
        'json' => [
            'signature_settings' => [
                'allow_draw' => false,
                'allow_type' => false,
                'allow_upload' => false,
                'allow_mobilephone' => false,
                'include_document_id' => false,
                'include_docutrust_seal' => false,
            ],
            'document_password' => [
                'password' => 'dolor',
                'encryption_level' => '256',
            ],
            'allow_draw' => true,
            'allow_type' => true,
            'allow_upload' => true,
            'allow_mobilephone' => true,
            'include_document_id' => false,
            'include_docutrust_seal' => true,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.signteq.io/v1/organizations/f5cfac16-3275-4e77-b33c-72bccace0130/signatures'
payload = {
    "signature_settings": {
        "allow_draw": false,
        "allow_type": false,
        "allow_upload": false,
        "allow_mobilephone": false,
        "include_document_id": false,
        "include_docutrust_seal": false
    },
    "document_password": {
        "password": "dolor",
        "encryption_level": "256"
    },
    "allow_draw": true,
    "allow_type": true,
    "allow_upload": true,
    "allow_mobilephone": true,
    "include_document_id": false,
    "include_docutrust_seal": true
}
headers = {
  'Authorization': 'Bearer {YOUR_API_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('PATCH', url, headers=headers, json=payload)
response.json()
const url = new URL(
    "https://api.signteq.io/v1/organizations/f5cfac16-3275-4e77-b33c-72bccace0130/signatures"
);

let headers = {
    "Authorization": "Bearer {YOUR_API_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "signature_settings": {
        "allow_draw": false,
        "allow_type": false,
        "allow_upload": false,
        "allow_mobilephone": false,
        "include_document_id": false,
        "include_docutrust_seal": false
    },
    "document_password": {
        "password": "dolor",
        "encryption_level": "256"
    },
    "allow_draw": true,
    "allow_type": true,
    "allow_upload": true,
    "allow_mobilephone": true,
    "include_document_id": false,
    "include_docutrust_seal": true
}

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):

{
    "allow_draw": null,
    "allow_type": null,
    "allow_upload": null,
    "allow_mobilephone": null,
    "include_document_id": null,
    "include_docutrust_seal": null
}

Request      

PATCH v1/organizations/{organization}/signatures

URL Parameters

organization  string  
The ID of the organization.

Body Parameters

signature_settings  object optional  

signature_settings.allow_draw  boolean optional  

signature_settings.allow_type  boolean optional  

signature_settings.allow_upload  boolean optional  

signature_settings.allow_mobilephone  boolean optional  

signature_settings.include_document_id  boolean optional  

signature_settings.include_docutrust_seal  boolean optional  

document_password  object optional  

document_password.password  string optional  

document_password.encryption_level  string optional  
The value must be one of 128 or 256.

allow_draw  boolean optional  
If activated, recipients are allowed to draw their signature.

allow_type  boolean optional  
If activated, recipients are allowed to type their signature.

allow_upload  boolean optional  
If activated, recipients are allowed to upload an image of their signature.

allow_mobilephone  boolean optional  
If activated, recipients are allowed to draw their signature on an mobile device.

include_document_id  boolean optional  
If activated, the document ID is inserted on each document page.

include_docutrust_seal  boolean optional  
If activated, the secured by signteq logo is inserted on each document page.

Get Organization Branding

requires authentication

Example request:

curl -X GET \
    -G "https://api.signteq.io/v1/organizations/f5cfac16-3275-4e77-b33c-72bccace0130/branding" \
    -H "Authorization: Bearer {YOUR_API_TOKEN}" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json"

$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://api.signteq.io/v1/organizations/f5cfac16-3275-4e77-b33c-72bccace0130/branding',
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_API_TOKEN}',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.signteq.io/v1/organizations/f5cfac16-3275-4e77-b33c-72bccace0130/branding'
headers = {
  'Authorization': 'Bearer {YOUR_API_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
const url = new URL(
    "https://api.signteq.io/v1/organizations/f5cfac16-3275-4e77-b33c-72bccace0130/branding"
);

let headers = {
    "Authorization": "Bearer {YOUR_API_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

{
    "primary_bg_color": null,
    "logo_online_light": null,
    "logo_online_dark": null,
    "logo_email": null
}

Request      

GET v1/organizations/{organization}/branding

URL Parameters

organization  string  
The ID of the organization.

Update Organization Branding

requires authentication

Updates the specified organizations branding settings by setting the values of the parameters passed. Any parameters not provided will be left unchanged.

Example request:

curl -X PATCH \
    "https://api.signteq.io/v1/organizations/f5cfac16-3275-4e77-b33c-72bccace0130/branding" \
    -H "Authorization: Bearer {YOUR_API_TOKEN}" \
    -H "Content-Type: multipart/form-data" \
    -H "Accept: application/json" \
    -F "primary_bg_color=#bb0000" \
    -F "logo_online_light=@/private/var/folders/b8/61scclls1w39xj5y8062g5lw0000gn/T/php1jbEgi"     -F "logo_online_dark=@/private/var/folders/b8/61scclls1w39xj5y8062g5lw0000gn/T/phpnAQUui"     -F "logo_email=@/private/var/folders/b8/61scclls1w39xj5y8062g5lw0000gn/T/phpDv8KFY" 

$client = new \GuzzleHttp\Client();
$response = $client->patch(
    'https://api.signteq.io/v1/organizations/f5cfac16-3275-4e77-b33c-72bccace0130/branding',
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_API_TOKEN}',
            'Accept' => 'application/json',
        ],
        'multipart' => [
            [
                'name' => 'primary_bg_color',
                'contents' => '#bb0000'
            ],
            [
                'name' => 'logo_online_light',
                'contents' => fopen('/private/var/folders/b8/61scclls1w39xj5y8062g5lw0000gn/T/php1jbEgi', 'r')
            ],
            [
                'name' => 'logo_online_dark',
                'contents' => fopen('/private/var/folders/b8/61scclls1w39xj5y8062g5lw0000gn/T/phpnAQUui', 'r')
            ],
            [
                'name' => 'logo_email',
                'contents' => fopen('/private/var/folders/b8/61scclls1w39xj5y8062g5lw0000gn/T/phpDv8KFY', 'r')
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.signteq.io/v1/organizations/f5cfac16-3275-4e77-b33c-72bccace0130/branding'
files = {
  'logo_online_light': open('/private/var/folders/b8/61scclls1w39xj5y8062g5lw0000gn/T/php1jbEgi', 'rb')  'logo_online_dark': open('/private/var/folders/b8/61scclls1w39xj5y8062g5lw0000gn/T/phpnAQUui', 'rb')  'logo_email': open('/private/var/folders/b8/61scclls1w39xj5y8062g5lw0000gn/T/phpDv8KFY', 'rb')
}
payload = {
    "primary_bg_color": "#bb0000"
}
headers = {
  'Authorization': 'Bearer {YOUR_API_TOKEN}',
  'Content-Type': 'multipart/form-data',
  'Accept': 'application/json'
}

response = requests.request('PATCH', url, headers=headers, files=files, data=payload)
response.json()
const url = new URL(
    "https://api.signteq.io/v1/organizations/f5cfac16-3275-4e77-b33c-72bccace0130/branding"
);

let headers = {
    "Authorization": "Bearer {YOUR_API_TOKEN}",
    "Content-Type": "multipart/form-data",
    "Accept": "application/json",
};

const body = new FormData();
body.append('primary_bg_color', '#bb0000');
body.append('logo_online_light', document.querySelector('input[name="logo_online_light"]').files[0]);
body.append('logo_online_dark', document.querySelector('input[name="logo_online_dark"]').files[0]);
body.append('logo_email', document.querySelector('input[name="logo_email"]').files[0]);

fetch(url, {
    method: "PATCH",
    headers,
    body,
}).then(response => response.json());

Example response (200):

{
    "primary_bg_color": null,
    "logo_online_light": null,
    "logo_online_dark": null,
    "logo_email": null
}

Request      

PATCH v1/organizations/{organization}/branding

URL Parameters

organization  string  
The ID of the organization.

Body Parameters

primary_bg_color  string optional  
HEX color code. This color is used online and in emails for all buttons and links.

logo_online_light  file optional  
This logo is displayed on all pages with a dark background.

logo_online_dark  file optional  
This logo is displayed on all pages with a light background.

logo_email  file optional  
This logo will be displayed in all e-mails to recipients.

Get Organization Stamp

requires authentication

Example request:

curl -X GET \
    -G "https://api.signteq.io/v1/organizations/f5cfac16-3275-4e77-b33c-72bccace0130/stamp" \
    -H "Authorization: Bearer {YOUR_API_TOKEN}" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json"

$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://api.signteq.io/v1/organizations/f5cfac16-3275-4e77-b33c-72bccace0130/stamp',
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_API_TOKEN}',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.signteq.io/v1/organizations/f5cfac16-3275-4e77-b33c-72bccace0130/stamp'
headers = {
  'Authorization': 'Bearer {YOUR_API_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
const url = new URL(
    "https://api.signteq.io/v1/organizations/f5cfac16-3275-4e77-b33c-72bccace0130/stamp"
);

let headers = {
    "Authorization": "Bearer {YOUR_API_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (201):


{
    "preview_url":"https://api.signteq.io/v1/organizations/f5cfac16-3275-4e77-b33c-72bccace0130/stamp/8d3d1503-9521-4c98-a1dc-fc2c544b1a11?signature=944acb357153d0498e33ce2b1774f0ccad86dea2a7e207c0c033f1273ced3796",
}

Request      

GET v1/organizations/{organization}/stamp

URL Parameters

organization  string  
The ID of the organization.

Update Organization Stamp

requires authentication

Updates the specified organization stamp.

Example request:

curl -X PATCH \
    "https://api.signteq.io/v1/organizations/f5cfac16-3275-4e77-b33c-72bccace0130/stamp" \
    -H "Authorization: Bearer {YOUR_API_TOKEN}" \
    -H "Content-Type: multipart/form-data" \
    -H "Accept: application/json" \
    -F "stamp=@/private/var/folders/b8/61scclls1w39xj5y8062g5lw0000gn/T/phpefOZrq" 

$client = new \GuzzleHttp\Client();
$response = $client->patch(
    'https://api.signteq.io/v1/organizations/f5cfac16-3275-4e77-b33c-72bccace0130/stamp',
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_API_TOKEN}',
            'Accept' => 'application/json',
        ],
        'multipart' => [
            [
                'name' => 'stamp',
                'contents' => fopen('/private/var/folders/b8/61scclls1w39xj5y8062g5lw0000gn/T/phpefOZrq', 'r')
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.signteq.io/v1/organizations/f5cfac16-3275-4e77-b33c-72bccace0130/stamp'
files = {
  'stamp': open('/private/var/folders/b8/61scclls1w39xj5y8062g5lw0000gn/T/phpefOZrq', 'rb')
}
headers = {
  'Authorization': 'Bearer {YOUR_API_TOKEN}',
  'Content-Type': 'multipart/form-data',
  'Accept': 'application/json'
}

response = requests.request('PATCH', url, headers=headers, files=files)
response.json()
const url = new URL(
    "https://api.signteq.io/v1/organizations/f5cfac16-3275-4e77-b33c-72bccace0130/stamp"
);

let headers = {
    "Authorization": "Bearer {YOUR_API_TOKEN}",
    "Content-Type": "multipart/form-data",
    "Accept": "application/json",
};

const body = new FormData();
body.append('stamp', document.querySelector('input[name="stamp"]').files[0]);

fetch(url, {
    method: "PATCH",
    headers,
    body,
}).then(response => response.json());

Example response (201):


{
    "preview_url":"https://api.signteq.io/v1/organizations/f5cfac16-3275-4e77-b33c-72bccace0130/stamp/8d3d1503-9521-4c98-a1dc-fc2c544b1a11?signature=944acb357153d0498e33ce2b1774f0ccad86dea2a7e207c0c033f1273ced3796",
}

Request      

PATCH v1/organizations/{organization}/stamp

URL Parameters

organization  string  
The ID of the organization.

Body Parameters

stamp  file optional  
The organization stamp.

Delete Organization Stamp

requires authentication

Deletes the specified organization stamp.

Example request:

curl -X DELETE \
    "https://api.signteq.io/v1/organizations/f5cfac16-3275-4e77-b33c-72bccace0130/stamp" \
    -H "Authorization: Bearer {YOUR_API_TOKEN}" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json"

$client = new \GuzzleHttp\Client();
$response = $client->delete(
    'https://api.signteq.io/v1/organizations/f5cfac16-3275-4e77-b33c-72bccace0130/stamp',
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_API_TOKEN}',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.signteq.io/v1/organizations/f5cfac16-3275-4e77-b33c-72bccace0130/stamp'
headers = {
  'Authorization': 'Bearer {YOUR_API_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()
const url = new URL(
    "https://api.signteq.io/v1/organizations/f5cfac16-3275-4e77-b33c-72bccace0130/stamp"
);

let headers = {
    "Authorization": "Bearer {YOUR_API_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Example response (200):

{}

Request      

DELETE v1/organizations/{organization}/stamp

URL Parameters

organization  string  
The ID of the organization.

Organizations

signteq is multi-organizations capable. All requests, documents, recipients, etc. are not only assigned to a user but also to a specific organization.

List Organizations

requires authentication

List all of your organizations associated with an account.

Example request:

curl -X GET \
    -G "https://api.signteq.io/v1/organizations" \
    -H "Authorization: Bearer {YOUR_API_TOKEN}" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json"

$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://api.signteq.io/v1/organizations',
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_API_TOKEN}',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.signteq.io/v1/organizations'
headers = {
  'Authorization': 'Bearer {YOUR_API_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
const url = new URL(
    "https://api.signteq.io/v1/organizations"
);

let headers = {
    "Authorization": "Bearer {YOUR_API_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

[
    {
        "id": "48f43beb-38d0-4e08-b782-67b4362390fa",
        "created_at": "2022-09-07T13:50:10.000000Z",
        "updated_at": "2022-09-07T13:50:10.000000Z",
        "name": "Streich-Ward",
        "sender_name": null,
        "reply_to": null
    },
    {
        "id": "1e18a4f8-acba-410e-9ff4-ad8d5a9dd510",
        "created_at": "2022-09-07T13:50:10.000000Z",
        "updated_at": "2022-09-07T13:50:10.000000Z",
        "name": "Wisozk, Schroeder and Farrell",
        "sender_name": null,
        "reply_to": null
    }
]

Request      

GET v1/organizations

Create Organization

requires authentication

Please note that when you create organizations, a booking (according to the signteq.io price list) is initiated and a monthly subscription is created.

Example request:

curl -X POST \
    "https://api.signteq.io/v1/organizations" \
    -H "Authorization: Bearer {YOUR_API_TOKEN}" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"name":"Demo GmbH","sender_name":"Demo","reply_to":"[email protected]"}'

$client = new \GuzzleHttp\Client();
$response = $client->post(
    'https://api.signteq.io/v1/organizations',
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_API_TOKEN}',
            'Accept' => 'application/json',
        ],
        'json' => [
            'name' => 'Demo GmbH',
            'sender_name' => 'Demo',
            'reply_to' => '[email protected]',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.signteq.io/v1/organizations'
payload = {
    "name": "Demo GmbH",
    "sender_name": "Demo",
    "reply_to": "[email protected]"
}
headers = {
  'Authorization': 'Bearer {YOUR_API_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
const url = new URL(
    "https://api.signteq.io/v1/organizations"
);

let headers = {
    "Authorization": "Bearer {YOUR_API_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "Demo GmbH",
    "sender_name": "Demo",
    "reply_to": "[email protected]"
}

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):

{
    "id": "2f311495-b721-46e8-8129-9cd756f9ae19",
    "created_at": "2022-09-07T13:50:10.000000Z",
    "updated_at": "2022-09-07T13:50:10.000000Z",
    "name": "Thompson-Zulauf",
    "sender_name": null,
    "reply_to": null
}

Request      

POST v1/organizations

Body Parameters

name  string  
The organization’s full name or business name. This may be up to 255 characters.

sender_name  string optional  
The name that is displayed to recipients as sender. This may be up to 255 characters.

reply_to  string optional  
The e-mail address to which e-mails are sent when recipients reply to signteq's e-mails.

Get Organization

requires authentication

Retrieves the details of an existing organization. You only need to supply the unique organization identifier.

Example request:

curl -X GET \
    -G "https://api.signteq.io/v1/organizations/f5cfac16-3275-4e77-b33c-72bccace0130" \
    -H "Authorization: Bearer {YOUR_API_TOKEN}" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json"

$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://api.signteq.io/v1/organizations/f5cfac16-3275-4e77-b33c-72bccace0130',
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_API_TOKEN}',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.signteq.io/v1/organizations/f5cfac16-3275-4e77-b33c-72bccace0130'
headers = {
  'Authorization': 'Bearer {YOUR_API_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
const url = new URL(
    "https://api.signteq.io/v1/organizations/f5cfac16-3275-4e77-b33c-72bccace0130"
);

let headers = {
    "Authorization": "Bearer {YOUR_API_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

{
    "id": "8612f06d-06bc-4056-b859-96243453265f",
    "created_at": "2022-09-07T13:50:10.000000Z",
    "updated_at": "2022-09-07T13:50:10.000000Z",
    "name": "Kirlin and Sons",
    "sender_name": null,
    "reply_to": null
}

Request      

GET v1/organizations/{organization}

URL Parameters

organization  string  
The ID of the organization.

Update Organization

requires authentication

Updates the specified organization by setting the values of the parameters passed. Any parameters not provided will be left unchanged.

Example request:

curl -X PATCH \
    "https://api.signteq.io/v1/organizations/f5cfac16-3275-4e77-b33c-72bccace0130" \
    -H "Authorization: Bearer {YOUR_API_TOKEN}" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"name":"Demo GmbH","sender_name":"Demo","reply_to":"[email protected]"}'

$client = new \GuzzleHttp\Client();
$response = $client->patch(
    'https://api.signteq.io/v1/organizations/f5cfac16-3275-4e77-b33c-72bccace0130',
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_API_TOKEN}',
            'Accept' => 'application/json',
        ],
        'json' => [
            'name' => 'Demo GmbH',
            'sender_name' => 'Demo',
            'reply_to' => '[email protected]',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.signteq.io/v1/organizations/f5cfac16-3275-4e77-b33c-72bccace0130'
payload = {
    "name": "Demo GmbH",
    "sender_name": "Demo",
    "reply_to": "[email protected]"
}
headers = {
  'Authorization': 'Bearer {YOUR_API_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('PATCH', url, headers=headers, json=payload)
response.json()
const url = new URL(
    "https://api.signteq.io/v1/organizations/f5cfac16-3275-4e77-b33c-72bccace0130"
);

let headers = {
    "Authorization": "Bearer {YOUR_API_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "Demo GmbH",
    "sender_name": "Demo",
    "reply_to": "[email protected]"
}

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):

{
    "id": "7118c80b-ba24-4f1b-8c07-b61007b71799",
    "created_at": "2022-09-07T13:50:10.000000Z",
    "updated_at": "2022-09-07T13:50:10.000000Z",
    "name": "Deckow and Sons",
    "sender_name": null,
    "reply_to": null
}

Request      

PATCH v1/organizations/{organization}

URL Parameters

organization  string  
The ID of the organization.

Body Parameters

name  string  
The organization’s full name or business name. This may be up to 255 characters.

sender_name  string optional  
The name that is displayed to recipients as sender. This may be up to 255 characters.

reply_to  string optional  
The e-mail address to which e-mails are sent when recipients reply to signteq's e-mails.

Delete Organization

requires authentication

Permanently deletes a organization. This cannot be undone. Also immediately cancels all outstanding requests from the organization. If you delete an organization, the associated billing plan will be canceled at the end of the current period.

Example request:

curl -X DELETE \
    "https://api.signteq.io/v1/organizations/f5cfac16-3275-4e77-b33c-72bccace0130" \
    -H "Authorization: Bearer {YOUR_API_TOKEN}" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json"

$client = new \GuzzleHttp\Client();
$response = $client->delete(
    'https://api.signteq.io/v1/organizations/f5cfac16-3275-4e77-b33c-72bccace0130',
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_API_TOKEN}',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.signteq.io/v1/organizations/f5cfac16-3275-4e77-b33c-72bccace0130'
headers = {
  'Authorization': 'Bearer {YOUR_API_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()
const url = new URL(
    "https://api.signteq.io/v1/organizations/f5cfac16-3275-4e77-b33c-72bccace0130"
);

let headers = {
    "Authorization": "Bearer {YOUR_API_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Example response (200):

{}

Request      

DELETE v1/organizations/{organization}

URL Parameters

organization  string  
The ID of the organization.

Recipients

List Recipients

requires authentication

Returns a paginated list of your recipients.

Example request:

curl -X GET \
    -G "https://api.signteq.io/v1/recipients" \
    -H "Authorization: Bearer {YOUR_API_TOKEN}" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json"

$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://api.signteq.io/v1/recipients',
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_API_TOKEN}',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.signteq.io/v1/recipients'
headers = {
  'Authorization': 'Bearer {YOUR_API_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
const url = new URL(
    "https://api.signteq.io/v1/recipients"
);

let headers = {
    "Authorization": "Bearer {YOUR_API_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

{
    "data": [
        {
            "id": "3f874027-2451-4e78-a67b-cec93d43fb18",
            "email": "[email protected]",
            "name": "Ellis Wehner",
            "phonenumber": null
        },
        {
            "id": "70840e63-d9ff-4c0b-8092-592519230853",
            "email": "[email protected]",
            "name": "Holden Wilkinson",
            "phonenumber": null
        }
    ],
    "links": {
        "first": "\/?page=1",
        "last": "\/?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Zurück",
                "active": false
            },
            {
                "url": "\/?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Weiter &raquo;",
                "active": false
            }
        ],
        "path": "\/",
        "per_page": "15",
        "to": 2,
        "total": 2
    }
}

Request      

GET v1/recipients

Create Recipient

requires authentication

Example request:

curl -X POST \
    "https://api.signteq.io/v1/recipients" \
    -H "Authorization: Bearer {YOUR_API_TOKEN}" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"name":"John Doe","email":"[email protected]","phonenumber":"+43 664 123 456"}'

$client = new \GuzzleHttp\Client();
$response = $client->post(
    'https://api.signteq.io/v1/recipients',
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_API_TOKEN}',
            'Accept' => 'application/json',
        ],
        'json' => [
            'name' => 'John Doe',
            'email' => '[email protected]',
            'phonenumber' => '+43 664 123 456',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.signteq.io/v1/recipients'
payload = {
    "name": "John Doe",
    "email": "[email protected]",
    "phonenumber": "+43 664 123 456"
}
headers = {
  'Authorization': 'Bearer {YOUR_API_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
const url = new URL(
    "https://api.signteq.io/v1/recipients"
);

let headers = {
    "Authorization": "Bearer {YOUR_API_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "John Doe",
    "email": "[email protected]",
    "phonenumber": "+43 664 123 456"
}

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):

{
    "id": "f5f7ff37-8c6d-4fb4-8c52-50cb6afd94a1",
    "email": "[email protected]",
    "name": "Noelia White",
    "phonenumber": null
}

Request      

POST v1/recipients

Body Parameters

name  string  
The name of the recipient.

email  email  
The email address of the recipient.

phonenumber  string optional  
An E.164 formatted phone number.

Get Recipient

requires authentication

Retrieves the details of an existing recipient. You need only supply the unique recipient identifier.

Example request:

curl -X GET \
    -G "https://api.signteq.io/v1/recipients/f5cfac16-3275-4e77-b33c-72bccace0130" \
    -H "Authorization: Bearer {YOUR_API_TOKEN}" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json"

$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://api.signteq.io/v1/recipients/f5cfac16-3275-4e77-b33c-72bccace0130',
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_API_TOKEN}',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.signteq.io/v1/recipients/f5cfac16-3275-4e77-b33c-72bccace0130'
headers = {
  'Authorization': 'Bearer {YOUR_API_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
const url = new URL(
    "https://api.signteq.io/v1/recipients/f5cfac16-3275-4e77-b33c-72bccace0130"
);

let headers = {
    "Authorization": "Bearer {YOUR_API_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

{
    "id": "d43ef57c-c927-47db-b408-1b49f997ad0c",
    "email": "[email protected]",
    "name": "Montana Hayes",
    "phonenumber": null
}

Request      

GET v1/recipients/{recipient}

URL Parameters

recipient  string  
The ID of the recipient.

Update Recipient

requires authentication

Example request:

curl -X PATCH \
    "https://api.signteq.io/v1/recipients/f5cfac16-3275-4e77-b33c-72bccace0130" \
    -H "Authorization: Bearer {YOUR_API_TOKEN}" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"name":"laborum"}'

$client = new \GuzzleHttp\Client();
$response = $client->patch(
    'https://api.signteq.io/v1/recipients/f5cfac16-3275-4e77-b33c-72bccace0130',
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_API_TOKEN}',
            'Accept' => 'application/json',
        ],
        'json' => [
            'name' => 'laborum',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.signteq.io/v1/recipients/f5cfac16-3275-4e77-b33c-72bccace0130'
payload = {
    "name": "laborum"
}
headers = {
  'Authorization': 'Bearer {YOUR_API_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('PATCH', url, headers=headers, json=payload)
response.json()
const url = new URL(
    "https://api.signteq.io/v1/recipients/f5cfac16-3275-4e77-b33c-72bccace0130"
);

let headers = {
    "Authorization": "Bearer {YOUR_API_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "laborum"
}

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):

{
    "id": "3cfcd90e-a724-4232-a9cf-e9a3922849e2",
    "email": "[email protected]",
    "name": "Major Gutkowski",
    "phonenumber": null
}

Request      

PATCH v1/recipients/{recipient}

URL Parameters

recipient  string  
The ID of the recipient.

Body Parameters

name  string  
The name of the Recipient.

Delete Recipient

requires authentication

Example request:

curl -X DELETE \
    "https://api.signteq.io/v1/recipients/f5cfac16-3275-4e77-b33c-72bccace0130" \
    -H "Authorization: Bearer {YOUR_API_TOKEN}" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json"

$client = new \GuzzleHttp\Client();
$response = $client->delete(
    'https://api.signteq.io/v1/recipients/f5cfac16-3275-4e77-b33c-72bccace0130',
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_API_TOKEN}',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.signteq.io/v1/recipients/f5cfac16-3275-4e77-b33c-72bccace0130'
headers = {
  'Authorization': 'Bearer {YOUR_API_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()
const url = new URL(
    "https://api.signteq.io/v1/recipients/f5cfac16-3275-4e77-b33c-72bccace0130"
);

let headers = {
    "Authorization": "Bearer {YOUR_API_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Example response (200):

{}

Request      

DELETE v1/recipients/{recipient}

URL Parameters

recipient  string  
The ID of the recipient.

Requests

In order to obtain signatures or send documents, you must create a request. Any number of documents can be attached to this request.

List Requests

requires authentication

Returns a paginated list of your requests. The requests are returned sorted by creation date, with the most recent request appearing first. By appending the API's state parameter to the API request URL and setting it to a request status you can filter your results accordingly.

Example request:

curl -X GET \
    -G "https://api.signteq.io/v1/requests" \
    -H "Authorization: Bearer {YOUR_API_TOKEN}" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json"

$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://api.signteq.io/v1/requests',
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_API_TOKEN}',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.signteq.io/v1/requests'
headers = {
  'Authorization': 'Bearer {YOUR_API_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
const url = new URL(
    "https://api.signteq.io/v1/requests"
);

let headers = {
    "Authorization": "Bearer {YOUR_API_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

{
    "data": [
        {
            "id": "4be02d1d-f05a-44a7-bcaf-2ec9bbf810b8",
            "type": "signature",
            "subject": "Impedit et sint aut voluptatum quia.",
            "message": "Quia distinctio quidem voluptatibus consequatur ea debitis consectetur. Aliquam voluptas illum deleniti sint maiores quidem. Nisi sunt eaque omnis nulla laborum voluptatibus. Hic repudiandae est deleniti officia qui accusamus.",
            "sandbox": null,
            "created_at": "2022-09-07T15:50:10+02:00",
            "updated_at": "2022-09-07T15:50:10+02:00",
            "canceled_at": null,
            "released_at": null,
            "declined_at": null,
            "completed_at": null,
            "settings": {
                "deadline_at": "2022-09-09T15:50:10+02:00",
                "auto_reminders": true,
                "retention_policy": null,
                "delete_after_download": false,
                "copy_document_completed": true,
                "copy_recipients_document_completed": true,
                "close_on_success": false,
                "redirect_success_url": null,
                "redirect_error_url": null
            },
            "meta": null
        },
        {
            "id": "502e2ed6-ae19-492b-84b5-024ff8be9ac4",
            "type": "signature",
            "subject": "Impedit velit quo dolorem sed ea voluptatum similique.",
            "message": "Eaque saepe sed earum est dolorem eum. Autem qui aut dolores velit voluptas. Aut similique est sed aut odit sed aliquid vitae.",
            "sandbox": null,
            "created_at": "2022-09-07T15:50:10+02:00",
            "updated_at": "2022-09-07T15:50:10+02:00",
            "canceled_at": null,
            "released_at": null,
            "declined_at": null,
            "completed_at": null,
            "settings": {
                "deadline_at": "2022-10-04T15:50:10+02:00",
                "auto_reminders": true,
                "retention_policy": null,
                "delete_after_download": false,
                "copy_document_completed": true,
                "copy_recipients_document_completed": true,
                "close_on_success": false,
                "redirect_success_url": null,
                "redirect_error_url": null
            },
            "meta": null
        }
    ],
    "links": {
        "first": "\/?page=1",
        "last": "\/?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Zurück",
                "active": false
            },
            {
                "url": "\/?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Weiter &raquo;",
                "active": false
            }
        ],
        "path": "\/",
        "per_page": "15",
        "to": 2,
        "total": 2
    }
}

Request      

GET v1/requests

URL Parameters

state  string optional  
The state of the request. One of trashed, draft, sent, completed, declined, canceled.

Create Request

requires authentication

There are two types of requests. Requesting signatures (signature) or sending documents (information).

Example request:

curl -X POST \
    "https://api.signteq.io/v1/requests" \
    -H "Authorization: Bearer {YOUR_API_TOKEN}" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"type":"signature","subject":"Non-disclosure agreement","message":"Hi John, please sign the NDA. If you have any questions, feel free to contact me.","settings":{"deadline_at":"2021-09-26T21:40:29+02:00","auto_reminders":false,"copy_document_completed":true,"copy_recipients_document_completed":false,"retention_policy":30,"delete_after_download":true,"close_on_success":false,"redirect_success_url":"https:\/\/example.com\/redirect","redirect_error_url":"https:\/\/example.com\/redirect"},"meta":{"internal_id":123},"documents":[{"name":"voluptatem","html":{"0":{"content":"sequi","orientation":"quia","size":"eius"},"1":[],"content":"molestiae","orientation":"landscape","size":"c6"},"fields":[{"anchor":"a","anchor_position":"TOP","page":1,"type":"signature","width":200,"height":9,"x":550,"y":200,"required":true,"read_only":false,"value":"rem","placeholder":"Your Name","meta":{"font":"Arial","font_size":16,"line_height":18,"bold":false,"italic":"false","underline":"false"},"recipient_id":"123"},[]],"meta":[]},{"name":"voluptatem","fields":[[],[]],"meta":[]}],"recipients":[{"id":"1","type":"signatory","email":"[email protected]","name":"John Doe","access_pin":"1234","phonenumber":"+43 664 123 456","do_not_notify":true,"language":"ipsa","notification_phonenumber":"odit","notification_channels":"maiores"},{"id":"1","type":"signatory","email":"[email protected]","name":"John Doe","do_not_notify":true,"language":"ipsa","notification_phonenumber":"odit","notification_channels":"maiores"}]}'

$client = new \GuzzleHttp\Client();
$response = $client->post(
    'https://api.signteq.io/v1/requests',
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_API_TOKEN}',
            'Accept' => 'application/json',
        ],
        'json' => [
            'type' => 'signature',
            'subject' => 'Non-disclosure agreement',
            'message' => 'Hi John, please sign the NDA. If you have any questions, feel free to contact me.',
            'settings' => [
                'deadline_at' => '2021-09-26T21:40:29+02:00',
                'auto_reminders' => false,
                'copy_document_completed' => true,
                'copy_recipients_document_completed' => false,
                'retention_policy' => 30,
                'delete_after_download' => true,
                'close_on_success' => false,
                'redirect_success_url' => 'https://example.com/redirect',
                'redirect_error_url' => 'https://example.com/redirect',
            ],
            'meta' => [
                'internal_id' => 123,
            ],
            'documents' => [
                [
                    'name' => 'voluptatem',
                    'html' => [
                        [
                            'content' => 'sequi',
                            'orientation' => 'quia',
                            'size' => 'eius',
                        ],
                        [],
                        'content' => 'molestiae',
                        'orientation' => 'landscape',
                        'size' => 'c6',
                    ],
                    'fields' => [
                        [
                            'anchor' => 'a',
                            'anchor_position' => 'TOP',
                            'page' => 1,
                            'type' => 'signature',
                            'width' => 200,
                            'height' => 9,
                            'x' => 550,
                            'y' => 200,
                            'required' => true,
                            'read_only' => false,
                            'value' => 'rem',
                            'placeholder' => 'Your Name',
                            'meta' => [
                                'font' => 'Arial',
                                'font_size' => 16,
                                'line_height' => 18,
                                'bold' => false,
                                'italic' => 'false',
                                'underline' => 'false',
                            ],
                            'recipient_id' => '123',
                        ],
                        [],
                    ],
                    'meta' => [],
                ],
                [
                    'name' => 'voluptatem',
                    'fields' => [
                        [],
                        [],
                    ],
                    'meta' => [],
                ],
            ],
            'recipients' => [
                [
                    'id' => '1',
                    'type' => 'signatory',
                    'email' => '[email protected]',
                    'name' => 'John Doe',
                    'access_pin' => '1234',
                    'phonenumber' => '+43 664 123 456',
                    'do_not_notify' => true,
                    'language' => 'ipsa',
                    'notification_phonenumber' => 'odit',
                    'notification_channels' => 'maiores',
                ],
                [
                    'id' => '1',
                    'type' => 'signatory',
                    'email' => '[email protected]',
                    'name' => 'John Doe',
                    'do_not_notify' => true,
                    'language' => 'ipsa',
                    'notification_phonenumber' => 'odit',
                    'notification_channels' => 'maiores',
                ],
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.signteq.io/v1/requests'
payload = {
    "type": "signature",
    "subject": "Non-disclosure agreement",
    "message": "Hi John, please sign the NDA. If you have any questions, feel free to contact me.",
    "settings": {
        "deadline_at": "2021-09-26T21:40:29+02:00",
        "auto_reminders": false,
        "copy_document_completed": true,
        "copy_recipients_document_completed": false,
        "retention_policy": 30,
        "delete_after_download": true,
        "close_on_success": false,
        "redirect_success_url": "https:\/\/example.com\/redirect",
        "redirect_error_url": "https:\/\/example.com\/redirect"
    },
    "meta": {
        "internal_id": 123
    },
    "documents": [
        {
            "name": "voluptatem",
            "html": {
                "0": {
                    "content": "sequi",
                    "orientation": "quia",
                    "size": "eius"
                },
                "1": [],
                "content": "molestiae",
                "orientation": "landscape",
                "size": "c6"
            },
            "fields": [
                {
                    "anchor": "a",
                    "anchor_position": "TOP",
                    "page": 1,
                    "type": "signature",
                    "width": 200,
                    "height": 9,
                    "x": 550,
                    "y": 200,
                    "required": true,
                    "read_only": false,
                    "value": "rem",
                    "placeholder": "Your Name",
                    "meta": {
                        "font": "Arial",
                        "font_size": 16,
                        "line_height": 18,
                        "bold": false,
                        "italic": "false",
                        "underline": "false"
                    },
                    "recipient_id": "123"
                },
                []
            ],
            "meta": []
        },
        {
            "name": "voluptatem",
            "fields": [
                [],
                []
            ],
            "meta": []
        }
    ],
    "recipients": [
        {
            "id": "1",
            "type": "signatory",
            "email": "[email protected]",
            "name": "John Doe",
            "access_pin": "1234",
            "phonenumber": "+43 664 123 456",
            "do_not_notify": true,
            "language": "ipsa",
            "notification_phonenumber": "odit",
            "notification_channels": "maiores"
        },
        {
            "id": "1",
            "type": "signatory",
            "email": "[email protected]",
            "name": "John Doe",
            "do_not_notify": true,
            "language": "ipsa",
            "notification_phonenumber": "odit",
            "notification_channels": "maiores"
        }
    ]
}
headers = {
  'Authorization': 'Bearer {YOUR_API_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
const url = new URL(
    "https://api.signteq.io/v1/requests"
);

let headers = {
    "Authorization": "Bearer {YOUR_API_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "type": "signature",
    "subject": "Non-disclosure agreement",
    "message": "Hi John, please sign the NDA. If you have any questions, feel free to contact me.",
    "settings": {
        "deadline_at": "2021-09-26T21:40:29+02:00",
        "auto_reminders": false,
        "copy_document_completed": true,
        "copy_recipients_document_completed": false,
        "retention_policy": 30,
        "delete_after_download": true,
        "close_on_success": false,
        "redirect_success_url": "https:\/\/example.com\/redirect",
        "redirect_error_url": "https:\/\/example.com\/redirect"
    },
    "meta": {
        "internal_id": 123
    },
    "documents": [
        {
            "name": "voluptatem",
            "html": {
                "0": {
                    "content": "sequi",
                    "orientation": "quia",
                    "size": "eius"
                },
                "1": [],
                "content": "molestiae",
                "orientation": "landscape",
                "size": "c6"
            },
            "fields": [
                {
                    "anchor": "a",
                    "anchor_position": "TOP",
                    "page": 1,
                    "type": "signature",
                    "width": 200,
                    "height": 9,
                    "x": 550,
                    "y": 200,
                    "required": true,
                    "read_only": false,
                    "value": "rem",
                    "placeholder": "Your Name",
                    "meta": {
                        "font": "Arial",
                        "font_size": 16,
                        "line_height": 18,
                        "bold": false,
                        "italic": "false",
                        "underline": "false"
                    },
                    "recipient_id": "123"
                },
                []
            ],
            "meta": []
        },
        {
            "name": "voluptatem",
            "fields": [
                [],
                []
            ],
            "meta": []
        }
    ],
    "recipients": [
        {
            "id": "1",
            "type": "signatory",
            "email": "[email protected]",
            "name": "John Doe",
            "access_pin": "1234",
            "phonenumber": "+43 664 123 456",
            "do_not_notify": true,
            "language": "ipsa",
            "notification_phonenumber": "odit",
            "notification_channels": "maiores"
        },
        {
            "id": "1",
            "type": "signatory",
            "email": "[email protected]",
            "name": "John Doe",
            "do_not_notify": true,
            "language": "ipsa",
            "notification_phonenumber": "odit",
            "notification_channels": "maiores"
        }
    ]
}

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):

{
    "id": "66deeab2-95e6-42d9-814b-c68e6711f2ef",
    "type": "signature",
    "subject": "Necessitatibus vel qui illo.",
    "message": "At qui repudiandae voluptatem provident. Eum id assumenda accusantium quia rerum.",
    "sandbox": null,
    "created_at": "2022-09-07T15:50:10+02:00",
    "updated_at": "2022-09-07T15:50:10+02:00",
    "canceled_at": null,
    "released_at": null,
    "declined_at": null,
    "completed_at": null,
    "settings": {
        "deadline_at": "2022-09-28T15:50:10+02:00",
        "auto_reminders": true,
        "retention_policy": null,
        "delete_after_download": false,
        "copy_document_completed": true,
        "copy_recipients_document_completed": true,
        "close_on_success": false,
        "redirect_success_url": null,
        "redirect_error_url": null
    },
    "meta": null
}

Request      

POST v1/requests

Body Parameters

type  string  
The request type. The value must be one of signature or information.

subject  string  
The subject of the request. This will be shown to recipients in emails and online.

message  string optional  
Your message to the recipient(s). This will be shown in emails and online.

settings  object optional  
Use this object to override organization settings for this specific request. If a parameter is empty or not provided, the default value specified in your organization settings will be used.

settings.deadline_at  date optional  
ISO 8601 This parameter is used to specify a custom expiration date for this request.

settings.auto_reminders  boolean optional  
Set to true in order to enable Auto Reminders for this request.

settings.copy_document_completed  boolean optional  
Set to true in order to receive the completed document via email.

settings.copy_recipients_document_completed  boolean optional  
Set to true in order to send the completed document via email to each recipient.

settings.retention_policy  integer optional  
Specify if and when the documents of this request should be deleted automatically. The value must be one of 1, 3, 7 or 30.

settings.delete_after_download  boolean optional  
Set to true in order to delete all documents after they have been downloaded by each recipient.

settings.close_on_success  boolean optional  

settings.redirect_success_url  url optional  
You can define a custom URL to which recipients will be redirected after signing all documents.

settings.redirect_error_url  url optional  
You can define a custom URL to which recipients will be redirected after an error occurred or the request has been declined.

meta  object optional  
Custom metadata lets you add information to requests to help track them for their entire lifecycle. Metadata added to a request will be displayed in the signteq UI, available using this API, and also returned in webhook events. Metadata is added to the "meta" field as JSON object.

documents  object[]  
Documents can be uploaded to your request either by providing a URL, through sending the file base64 encoded or as HTML in the POST request while creating a request. This array can contain multiple sub arrays. Please only specify one of three upload parameters (url, base64 or html) for each sub array.

documents[].name  string  
Specify a name for the file to be uploaded.

documents[].url  url optional  
A URL leading to the file you would like to upload as your document file. Only PDF documents are supported.

documents[].base64  string optional  
Specify a base64 string of the file you would like to upload. Only PDF documents are supported.

documents[].html  object[] optional  
Specify the HTML of the file you would like to upload and convert to PDF.

documents[].html[].content  string  
The base64 encoded HTML content.

documents[].html[].orientation  string optional  
Either portrait or landscape. Defaults to portrait.

documents[].html[].size  string optional  
Specify a custom page size. Defaults to A4.

documents[].fields  object[]  
An array containing all the fields that should be placed on this document.

documents[].fields[].anchor  string optional  

documents[].fields[].anchor_position  string optional  
The value must be one of TOP, CENTER, or BOTTOM.

documents[].fields[].page  integer  
The document page on which the field should be placed.

documents[].fields[].type  string  
The type of the field to be placed. The following field types are the supported: signature, text, date

documents[].fields[].width  integer  
The field's width in pixels.

documents[].fields[].height  integer  
The field's height in pixels. Example 50

documents[].fields[].x  integer  
Location x-coordinate of the field measured from the left side of the document.

documents[].fields[].y  integer  
Location y-coordinate of the field measured from the top of the document.

documents[].fields[].required  boolean  
Whether this field is required to be filled out / signed by the recipient.

documents[].fields[].read_only  boolean  
If set to false the recipient can edit this value.

documents[].fields[].value  string optional  
You can specify the content of text fields. If the field is assigned to a recipient, this value can be edited by the recipient.

documents[].fields[].placeholder  string optional  
Specify the placeholder recipients will see for this field during the signing process.

documents[].fields[].meta  object optional  

documents[].fields[].meta.font  string optional  
Set the font for this field. Supported Fonts are: Arial, Calibri, Courier New, Georgia, Times New Roman, Cambria, Trebuchet, Verdana, Roboto

documents[].fields[].meta.font_size  integer optional  
Set the font size for this field.

documents[].fields[].meta.line_height  integer optional  
Set the line height for this field.

documents[].fields[].meta.bold  boolean optional  
Set to true for bold.

documents[].fields[].meta.italic  string optional  
Set to true for italic.

documents[].fields[].meta.underline  string optional  
Set to true to underline.

documents[].fields[].recipient_id  string  
The unique ID of the recipient this field should be assigned to. If this field should not be assigend to any recipient (e.g. to add predefined text to the document), set this parameter to NULL. This ID must match an recipient ID defined in the recipients[] object.

documents[].meta  object optional  
Custom metadata lets you add information to documents to help track them for their entire lifecycle.

recipients  object[]  
This object must contain a sub array for each recipient of the documents being created. For Level 1 you only need to specify the recipient's email address, for Level 2 the recipient's email address and a phone number and for Level 3 the recipient's email address, a phone number and an access PIN.

recipients[].id  string  
A unique identification number for this recipient. We recommend numbering your recipients from 1 to n.

recipients[].type  string  
The type of the recipient. Supported types are: signatory, recipient, copy

recipients[].email  email  
The email address of the recipient.

recipients[].name  string  
The name of the recipient.

recipients[].access_pin  string optional  
An additional access code that will secure this recipients's signature page.

recipients[].phonenumber  string optional  
An E.164 formatted phone number that will receive a TAN-code via SMS to access this recipients's signature page. Not available in test mode.

recipients[].do_not_notify  boolean optional  
Set to true to not inform this recipient by email. This is useful if you want to forward the recipient directly to the signature page. This is only available for signature requests.

recipients[].language  string optional  
Specify the language (ISO-639-1) in which the signing area and the signature process will appear for this recipient. Currently de and en are supported.

recipients[].notification_phonenumber  string optional  
Specify a dedicated phone number for the SMS notification channel. This value has priority over any phone number specified in the phonenumber field.

recipients[].notification_channels  array optional  
Specify the desired notification channel for this recipient. Does not apply if do_not_notify is set to true. Supported channels are sms and email. The default value is ['email'].

Get Request

requires authentication

Retrieves the details of an existing request. You need only supply the unique request identifier.

Example request:

curl -X GET \
    -G "https://api.signteq.io/v1/requests/f5cfac16-3275-4e77-b33c-72bccace0130" \
    -H "Authorization: Bearer {YOUR_API_TOKEN}" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json"

$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://api.signteq.io/v1/requests/f5cfac16-3275-4e77-b33c-72bccace0130',
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_API_TOKEN}',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.signteq.io/v1/requests/f5cfac16-3275-4e77-b33c-72bccace0130'
headers = {
  'Authorization': 'Bearer {YOUR_API_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
const url = new URL(
    "https://api.signteq.io/v1/requests/f5cfac16-3275-4e77-b33c-72bccace0130"
);

let headers = {
    "Authorization": "Bearer {YOUR_API_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

{
    "id": "f2f8296d-a906-4bfb-8a58-d9d84e6b810e",
    "type": "signature",
    "subject": "Facere voluptatibus ea aut quia quas deleniti enim.",
    "message": "Quia omnis ea placeat amet quia culpa nesciunt. Nemo impedit incidunt voluptate aut dolores consequatur. Sed officiis quam sed sit.",
    "sandbox": null,
    "created_at": "2022-09-07T15:50:10+02:00",
    "updated_at": "2022-09-07T15:50:10+02:00",
    "canceled_at": null,
    "released_at": null,
    "declined_at": null,
    "completed_at": null,
    "settings": {
        "deadline_at": "2022-09-21T15:50:10+02:00",
        "auto_reminders": true,
        "retention_policy": null,
        "delete_after_download": false,
        "copy_document_completed": true,
        "copy_recipients_document_completed": true,
        "close_on_success": false,
        "redirect_success_url": null,
        "redirect_error_url": null
    },
    "meta": null
}

Request      

GET v1/requests/{request}

URL Parameters

request  string  
The ID of the request.

Delete Request

requires authentication

Permanently deletes a request. This cannot be undone.

Example request:

curl -X DELETE \
    "https://api.signteq.io/v1/requests/perferendis" \
    -H "Authorization: Bearer {YOUR_API_TOKEN}" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json"

$client = new \GuzzleHttp\Client();
$response = $client->delete(
    'https://api.signteq.io/v1/requests/perferendis',
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_API_TOKEN}',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.signteq.io/v1/requests/perferendis'
headers = {
  'Authorization': 'Bearer {YOUR_API_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()
const url = new URL(
    "https://api.signteq.io/v1/requests/perferendis"
);

let headers = {
    "Authorization": "Bearer {YOUR_API_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request      

DELETE v1/requests/{request}

URL Parameters

request  string  

Cancel Request

requires authentication

Example request:

curl -X POST \
    "https://api.signteq.io/v1/requests/f5cfac16-3275-4e77-b33c-72bccace0130/cancel" \
    -H "Authorization: Bearer {YOUR_API_TOKEN}" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"reason":"asperiores"}'

$client = new \GuzzleHttp\Client();
$response = $client->post(
    'https://api.signteq.io/v1/requests/f5cfac16-3275-4e77-b33c-72bccace0130/cancel',
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_API_TOKEN}',
            'Accept' => 'application/json',
        ],
        'json' => [
            'reason' => 'asperiores',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.signteq.io/v1/requests/f5cfac16-3275-4e77-b33c-72bccace0130/cancel'
payload = {
    "reason": "asperiores"
}
headers = {
  'Authorization': 'Bearer {YOUR_API_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
const url = new URL(
    "https://api.signteq.io/v1/requests/f5cfac16-3275-4e77-b33c-72bccace0130/cancel"
);

let headers = {
    "Authorization": "Bearer {YOUR_API_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "reason": "asperiores"
}

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):

{}

Request      

POST v1/requests/{request}/cancel

URL Parameters

request  string  
The ID of the request.

Body Parameters

reason  string  
The reason that is shown to recipients why the the request was cancelled.

Complete Request

requires authentication

Example request:

curl -X POST \
    "https://api.signteq.io/v1/requests/tempore/complete" \
    -H "Authorization: Bearer {YOUR_API_TOKEN}" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json"

$client = new \GuzzleHttp\Client();
$response = $client->post(
    'https://api.signteq.io/v1/requests/tempore/complete',
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_API_TOKEN}',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.signteq.io/v1/requests/tempore/complete'
headers = {
  'Authorization': 'Bearer {YOUR_API_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers)
response.json()
const url = new URL(
    "https://api.signteq.io/v1/requests/tempore/complete"
);

let headers = {
    "Authorization": "Bearer {YOUR_API_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Example response (200):

{}

Request      

POST v1/requests/{request}/complete

URL Parameters

request  string  

Extend Request

requires authentication

Example request:

curl -X POST \
    "https://api.signteq.io/v1/requests/f5cfac16-3275-4e77-b33c-72bccace0130/extend" \
    -H "Authorization: Bearer {YOUR_API_TOKEN}" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"deadline_at":"quia"}'

$client = new \GuzzleHttp\Client();
$response = $client->post(
    'https://api.signteq.io/v1/requests/f5cfac16-3275-4e77-b33c-72bccace0130/extend',
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_API_TOKEN}',
            'Accept' => 'application/json',
        ],
        'json' => [
            'deadline_at' => 'quia',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.signteq.io/v1/requests/f5cfac16-3275-4e77-b33c-72bccace0130/extend'
payload = {
    "deadline_at": "quia"
}
headers = {
  'Authorization': 'Bearer {YOUR_API_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
const url = new URL(
    "https://api.signteq.io/v1/requests/f5cfac16-3275-4e77-b33c-72bccace0130/extend"
);

let headers = {
    "Authorization": "Bearer {YOUR_API_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "deadline_at": "quia"
}

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):

{}

Request      

POST v1/requests/{request}/extend

URL Parameters

request  string  
The ID of the request.

Body Parameters

deadline_at  date optional  
The new deadline. If empty the request will not expire.

Retrieve Request Audit Trail

requires authentication

Example request:

curl -X GET \
    -G "https://api.signteq.io/v1/requests/f5cfac16-3275-4e77-b33c-72bccace0130/audit" \
    -H "Authorization: Bearer {YOUR_API_TOKEN}" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json"

$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://api.signteq.io/v1/requests/f5cfac16-3275-4e77-b33c-72bccace0130/audit',
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_API_TOKEN}',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.signteq.io/v1/requests/f5cfac16-3275-4e77-b33c-72bccace0130/audit'
headers = {
  'Authorization': 'Bearer {YOUR_API_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
const url = new URL(
    "https://api.signteq.io/v1/requests/f5cfac16-3275-4e77-b33c-72bccace0130/audit"
);

let headers = {
    "Authorization": "Bearer {YOUR_API_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

{
    "id": null,
    "timestamp": "2022-09-07T15:50:10+02:00",
    "device": null,
    "ip_address": null,
    "user": null,
    "recipient": null,
    "action": {
        "slug": null,
        "label": null,
        "sub_label": null
    }
}

Request      

GET v1/requests/{request}/audit

URL Parameters

request  string  
The ID of the request.

Signature

Sign Document

requires authentication

Digitally sign a document directly without going through the classic request flow. A complete document must be submitted as no fields, signature images, etc. can be added in this process. A documents can be uploaded either by providing a URL, through sending the file base64 encoded or as HTML. Please only specify one of three upload parameters (url, base64 or html).

Example request:

curl -X POST \
    "https://api.signteq.io/v1/sign" \
    -H "Authorization: Bearer {YOUR_API_TOKEN}" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"name":"perferendis","html":[{"content":"ipsa","orientation":"est","size":"et"},{"content":"ipsa","size":"et"}],"meta":{"internal_id":123},"seal":{"page":1,"x":550,"y":200,"anchor":"signature1","anchor_position":"CENTER","meta":[]}}'

$client = new \GuzzleHttp\Client();
$response = $client->post(
    'https://api.signteq.io/v1/sign',
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_API_TOKEN}',
            'Accept' => 'application/json',
        ],
        'json' => [
            'name' => 'perferendis',
            'html' => [
                [
                    'content' => 'ipsa',
                    'orientation' => 'est',
                    'size' => 'et',
                ],
                [
                    'content' => 'ipsa',
                    'size' => 'et',
                ],
            ],
            'meta' => [
                'internal_id' => 123,
            ],
            'seal' => [
                'page' => 1,
                'x' => 550,
                'y' => 200,
                'anchor' => 'signature1',
                'anchor_position' => 'CENTER',
                'meta' => [],
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.signteq.io/v1/sign'
payload = {
    "name": "perferendis",
    "html": [
        {
            "content": "ipsa",
            "orientation": "est",
            "size": "et"
        },
        {
            "content": "ipsa",
            "size": "et"
        }
    ],
    "meta": {
        "internal_id": 123
    },
    "seal": {
        "page": 1,
        "x": 550,
        "y": 200,
        "anchor": "signature1",
        "anchor_position": "CENTER",
        "meta": []
    }
}
headers = {
  'Authorization': 'Bearer {YOUR_API_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
const url = new URL(
    "https://api.signteq.io/v1/sign"
);

let headers = {
    "Authorization": "Bearer {YOUR_API_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "perferendis",
    "html": [
        {
            "content": "ipsa",
            "orientation": "est",
            "size": "et"
        },
        {
            "content": "ipsa",
            "size": "et"
        }
    ],
    "meta": {
        "internal_id": 123
    },
    "seal": {
        "page": 1,
        "x": 550,
        "y": 200,
        "anchor": "signature1",
        "anchor_position": "CENTER",
        "meta": []
    }
}

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):

{
    "id": null,
    "name": "Asperiores voluptas magnam ullam provident laboriosam aspernatur est..pdf",
    "size": 12655,
    "type": "pdf",
    "meta": null,
    "versions": [],
    "pages": []
}

Request      

POST v1/sign

Body Parameters

name  string  
Specify a name for the file to be uploaded.

url  url optional  
A URL leading to the file you would like to upload as your document file. Only PDF documents are supported.

base64  string optional  
Specify a base64 string of the file you would like to upload. Only PDF documents are supported.

html  object[] optional  
Specify the HTML of the file you would like to upload and convert to PDF.

html[].content  string  
The base64 encoded HTML content.

html[].orientation  string optional  
Either portrait or landscape. Defaults to portrait.

html[].size  string optional  
Specify a custom page size. Defaults to A4.

meta  object optional  
Custom metadata lets you add information to a document to help track them for their entire lifecycle. Metadata added to a document will be displayed in the signteq UI, available using this API, and also returned in webhook events. Metadata is added to the "meta" field as JSON object.

seal  object optional  
An object containing all the information of an optional seal that should be placed on this document. Contact your technical signteq.io representative for more information.

seal.page  integer optional  
Required unless an anchor is defined. The document page on which the seal should be placed.

seal.x  integer optional  
Required unless an anchor is defined. Location x-coordinate of the seal measured from the left side of the document.

seal.y  integer optional  
Required unless an anchor is defined. Location y-coordinate of the seal measured from the top of the document.

seal.anchor  string optional  
An anchor text that must be present on the document. Make sure that the text has the same color as the background so that the anchor is not visible in the final document.

seal.anchor_position  string optional  
The position of the seal relative to the anchor. Either TOP, CENTER or BOTTOM.

seal.meta  object  
Custom variables / parameters.

Team

Manage your team

List Team Members

requires authentication

Returns a paginated list of the team members associated with an account.

Example request:

curl -X GET \
    -G "https://api.signteq.io/v1/team" \
    -H "Authorization: Bearer {YOUR_API_TOKEN}" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json"

$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://api.signteq.io/v1/team',
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_API_TOKEN}',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.signteq.io/v1/team'
headers = {
  'Authorization': 'Bearer {YOUR_API_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
const url = new URL(
    "https://api.signteq.io/v1/team"
);

let headers = {
    "Authorization": "Bearer {YOUR_API_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

[
    {
        "id": "ac9a05a2-bf3e-4330-b9a4-5af746fc0001",
        "gender": "male",
        "firstname": "Phyllis",
        "lastname": "Ratke",
        "email": "[email protected]",
        "permission": null
    },
    {
        "id": "35d5cf47-89b1-42ea-9a65-ea00fa34a43a",
        "gender": "male",
        "firstname": "Elza",
        "lastname": "Macejkovic",
        "email": "[email protected]",
        "permission": null
    }
]

Request      

GET v1/team

Create Team Member

requires authentication

Please note that when you create team members, a booking (according to the signteq.io price list) is initiated and a monthly subscription is created.

Example request:

curl -X POST \
    "https://api.signteq.io/v1/team" \
    -H "Authorization: Bearer {YOUR_API_TOKEN}" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"gender":"est","firstname":"iusto","lastname":"id","permission":"manager","email":"[email protected]"}'

$client = new \GuzzleHttp\Client();
$response = $client->post(
    'https://api.signteq.io/v1/team',
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_API_TOKEN}',
            'Accept' => 'application/json',
        ],
        'json' => [
            'gender' => 'est',
            'firstname' => 'iusto',
            'lastname' => 'id',
            'permission' => 'manager',
            'email' => '[email protected]',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.signteq.io/v1/team'
payload = {
    "gender": "est",
    "firstname": "iusto",
    "lastname": "id",
    "permission": "manager",
    "email": "[email protected]"
}
headers = {
  'Authorization': 'Bearer {YOUR_API_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
const url = new URL(
    "https://api.signteq.io/v1/team"
);

let headers = {
    "Authorization": "Bearer {YOUR_API_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "gender": "est",
    "firstname": "iusto",
    "lastname": "id",
    "permission": "manager",
    "email": "[email protected]"
}

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):

{
    "id": "3d533851-c738-403e-9508-eb1f1aa0bc90",
    "gender": "female",
    "firstname": "Roberto",
    "lastname": "Terry",
    "email": "[email protected]",
    "permission": null
}

Request      

POST v1/team

Body Parameters

gender  string  
Either male or female

firstname  string  
The first name of the team member.

lastname  string  
The last name of the team member.

permission  string  
The following permissions are supported: admin, manager, member

email  string  
The email address of the recipient.

Get Team Member

requires authentication

Retrieves the details of an existing team member. You only need to supply the unique team member identifier.

Example request:

curl -X GET \
    -G "https://api.signteq.io/v1/team/molestiae" \
    -H "Authorization: Bearer {YOUR_API_TOKEN}" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json"

$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://api.signteq.io/v1/team/molestiae',
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_API_TOKEN}',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.signteq.io/v1/team/molestiae'
headers = {
  'Authorization': 'Bearer {YOUR_API_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
const url = new URL(
    "https://api.signteq.io/v1/team/molestiae"
);

let headers = {
    "Authorization": "Bearer {YOUR_API_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

{
    "id": "99ae078c-20ff-45fc-8099-f4bbe57d2644",
    "gender": "male",
    "firstname": "Emmanuelle",
    "lastname": "Kling",
    "email": "[email protected]",
    "permission": null
}

Request      

GET v1/team/{teamMember}

URL Parameters

teamMember  string  

team  string optional  
member" string required The ID of the team member.

Update Team Member

requires authentication

Updates the specified team member by setting the values of the parameters passed. Any parameters not provided will be left unchanged.

Example request:

curl -X PATCH \
    "https://api.signteq.io/v1/team/qui" \
    -H "Authorization: Bearer {YOUR_API_TOKEN}" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"gender":"blanditiis","firstname":"impedit","lastname":"veniam","permission":"manager","email":"[email protected]"}'

$client = new \GuzzleHttp\Client();
$response = $client->patch(
    'https://api.signteq.io/v1/team/qui',
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_API_TOKEN}',
            'Accept' => 'application/json',
        ],
        'json' => [
            'gender' => 'blanditiis',
            'firstname' => 'impedit',
            'lastname' => 'veniam',
            'permission' => 'manager',
            'email' => '[email protected]',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.signteq.io/v1/team/qui'
payload = {
    "gender": "blanditiis",
    "firstname": "impedit",
    "lastname": "veniam",
    "permission": "manager",
    "email": "[email protected]"
}
headers = {
  'Authorization': 'Bearer {YOUR_API_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('PATCH', url, headers=headers, json=payload)
response.json()
const url = new URL(
    "https://api.signteq.io/v1/team/qui"
);

let headers = {
    "Authorization": "Bearer {YOUR_API_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "gender": "blanditiis",
    "firstname": "impedit",
    "lastname": "veniam",
    "permission": "manager",
    "email": "[email protected]"
}

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):

{
    "id": "1fd551cd-31ac-4888-a8cf-dc1586c96682",
    "gender": "male",
    "firstname": "Griffin",
    "lastname": "Simonis",
    "email": "[email protected]",
    "permission": null
}

Request      

PATCH v1/team/{teamMember}

URL Parameters

teamMember  string  

team  string optional  
member" string required The ID of the team member.

Body Parameters

gender  string optional  
Either male or female

firstname  string optional  
The first name of the team member.

lastname  string optional  
The last name of the team member.

permission  string optional  
The following permissions are supported: admin, manager, member

email  string optional  
The email address of the recipient.

Delete Team Member

requires authentication

Deletes a team member. If you delete a team member, the associated billing plan will be canceled at the end of the current period.

Example request:

curl -X DELETE \
    "https://api.signteq.io/v1/team/qui" \
    -H "Authorization: Bearer {YOUR_API_TOKEN}" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json"

$client = new \GuzzleHttp\Client();
$response = $client->delete(
    'https://api.signteq.io/v1/team/qui',
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_API_TOKEN}',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.signteq.io/v1/team/qui'
headers = {
  'Authorization': 'Bearer {YOUR_API_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()
const url = new URL(
    "https://api.signteq.io/v1/team/qui"
);

let headers = {
    "Authorization": "Bearer {YOUR_API_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Example response (200):

{}

Request      

DELETE v1/team/{teamMember}

URL Parameters

teamMember  string  

team  string optional  
member" string required The ID of the team member.

Templates

To simplify the creation of requests, templates can be created. For example, you can create templates in the signteq.io UI and use them via the API. If you use the same document very often and only need to customize a few data, templates are the right choice.

List Templates

requires authentication

Returns a paginated list of your templates.

Example request:

curl -X GET \
    -G "https://api.signteq.io/v1/templates" \
    -H "Authorization: Bearer {YOUR_API_TOKEN}" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json"

$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://api.signteq.io/v1/templates',
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_API_TOKEN}',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.signteq.io/v1/templates'
headers = {
  'Authorization': 'Bearer {YOUR_API_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
const url = new URL(
    "https://api.signteq.io/v1/templates"
);

let headers = {
    "Authorization": "Bearer {YOUR_API_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

{
    "data": [
        {
            "id": "e90f4cd6-343c-47c7-bf6b-a8d131b2a4d2",
            "created_at": "2022-09-07T15:50:10+02:00",
            "subject": "Qui ex qui nam incidunt.",
            "settings": {
                "verify_phonenumber": false,
                "verify_email": true
            },
            "recipients": [],
            "permalink": "http:\/\/api.signteq.io\/t\/e90f4cd6-343c-47c7-bf6b-a8d131b2a4d2?signature=3396c17b36823bfeddf72ae54000fcdec2a0142d682f2d1934c860d650d4596f",
            "qrcode": "http:\/\/api.signteq.io\/templates\/e90f4cd6-343c-47c7-bf6b-a8d131b2a4d2\/qrcode?signature=36dcf1d6a69bb0e74a288c0e914a78e3decea7985835b5206772e47025007fbb"
        },
        {
            "id": "b2fa3249-7c10-4d9c-8926-4fb576ca339a",
            "created_at": "2022-09-07T15:50:10+02:00",
            "subject": "Vero porro sit quidem non.",
            "settings": {
                "verify_phonenumber": false,
                "verify_email": true
            },
            "recipients": [],
            "permalink": "http:\/\/api.signteq.io\/t\/b2fa3249-7c10-4d9c-8926-4fb576ca339a?signature=24ae30b1302421b7dd3232e4b6adb032d3bd8fe0120577c6a31afd8930c11092",
            "qrcode": "http:\/\/api.signteq.io\/templates\/b2fa3249-7c10-4d9c-8926-4fb576ca339a\/qrcode?signature=8dd103e660d009bb0ec3e122572d5a9aabce87583e710f30cc3e0541ad86db7a"
        }
    ],
    "links": {
        "first": "\/?page=1",
        "last": "\/?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Zurück",
                "active": false
            },
            {
                "url": "\/?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Weiter &raquo;",
                "active": false
            }
        ],
        "path": "\/",
        "per_page": "15",
        "to": 2,
        "total": 2
    }
}

Request      

GET v1/templates

Create Template

requires authentication

Templates can either be used as templates for requests or can be accessed directly via a URL. The creation process is the same in both cases.

Example request:

curl -X POST \
    "https://api.signteq.io/v1/templates" \
    -H "Authorization: Bearer {YOUR_API_TOKEN}" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"subject":"cupiditate","recipients":["quas","officiis"],"settings":{"verify_phonenumber":true},"documents":[{"name":"consectetur","fields":[{"page":1,"type":"signature","width":200,"height":8,"x":1,"y":15,"required":true,"value":"corporis","placeholder":"Your Name","meta":{"font":"Arial","font_size":16,"line_height":18,"bold":false,"italic":"false","underline":"false"},"recipient_id":"Client"},[]]},{"name":"consectetur","fields":[[],[]]}]}'

$client = new \GuzzleHttp\Client();
$response = $client->post(
    'https://api.signteq.io/v1/templates',
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_API_TOKEN}',
            'Accept' => 'application/json',
        ],
        'json' => [
            'subject' => 'cupiditate',
            'recipients' => [
                'quas',
                'officiis',
            ],
            'settings' => [
                'verify_phonenumber' => true,
            ],
            'documents' => [
                [
                    'name' => 'consectetur',
                    'fields' => [
                        [
                            'page' => 1,
                            'type' => 'signature',
                            'width' => 200,
                            'height' => 8,
                            'x' => 1,
                            'y' => 15,
                            'required' => true,
                            'value' => 'corporis',
                            'placeholder' => 'Your Name',
                            'meta' => [
                                'font' => 'Arial',
                                'font_size' => 16,
                                'line_height' => 18,
                                'bold' => false,
                                'italic' => 'false',
                                'underline' => 'false',
                            ],
                            'recipient_id' => 'Client',
                        ],
                        [],
                    ],
                ],
                [
                    'name' => 'consectetur',
                    'fields' => [
                        [],
                        [],
                    ],
                ],
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.signteq.io/v1/templates'
payload = {
    "subject": "cupiditate",
    "recipients": [
        "quas",
        "officiis"
    ],
    "settings": {
        "verify_phonenumber": true
    },
    "documents": [
        {
            "name": "consectetur",
            "fields": [
                {
                    "page": 1,
                    "type": "signature",
                    "width": 200,
                    "height": 8,
                    "x": 1,
                    "y": 15,
                    "required": true,
                    "value": "corporis",
                    "placeholder": "Your Name",
                    "meta": {
                        "font": "Arial",
                        "font_size": 16,
                        "line_height": 18,
                        "bold": false,
                        "italic": "false",
                        "underline": "false"
                    },
                    "recipient_id": "Client"
                },
                []
            ]
        },
        {
            "name": "consectetur",
            "fields": [
                [],
                []
            ]
        }
    ]
}
headers = {
  'Authorization': 'Bearer {YOUR_API_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
const url = new URL(
    "https://api.signteq.io/v1/templates"
);

let headers = {
    "Authorization": "Bearer {YOUR_API_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "subject": "cupiditate",
    "recipients": [
        "quas",
        "officiis"
    ],
    "settings": {
        "verify_phonenumber": true
    },
    "documents": [
        {
            "name": "consectetur",
            "fields": [
                {
                    "page": 1,
                    "type": "signature",
                    "width": 200,
                    "height": 8,
                    "x": 1,
                    "y": 15,
                    "required": true,
                    "value": "corporis",
                    "placeholder": "Your Name",
                    "meta": {
                        "font": "Arial",
                        "font_size": 16,
                        "line_height": 18,
                        "bold": false,
                        "italic": "false",
                        "underline": "false"
                    },
                    "recipient_id": "Client"
                },
                []
            ]
        },
        {
            "name": "consectetur",
            "fields": [
                [],
                []
            ]
        }
    ]
}

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):

{
    "id": "f65b4bd8-d071-4798-9677-177caa95013c",
    "created_at": "2022-09-07T15:50:10+02:00",
    "subject": "Dignissimos ab et quia totam rem.",
    "settings": {
        "verify_phonenumber": false,
        "verify_email": true
    },
    "recipients": [],
    "permalink": "http:\/\/api.signteq.io\/t\/f65b4bd8-d071-4798-9677-177caa95013c?signature=273370df2f335a7d83fa407e0a285be6d3c8c27369ceee8b4cae335f4c83d992",
    "qrcode": "http:\/\/api.signteq.io\/templates\/f65b4bd8-d071-4798-9677-177caa95013c\/qrcode?signature=78c8858622eeb4640ed6f26517172d4b03b23cb6250c21782a4b8ed6fc233107"
}

Request      

POST v1/templates

Body Parameters

subject  string  
The subject of the template.

recipients  string[]  
Array that contains a unique identification name for each recipient. E.g. "Client".

settings  object optional  
Use this object to enable specific verification steps if the template is used as an embedded template.

settings.verify_phonenumber  boolean optional  
Set to true if recipients must first verify their phone number before viewing this template.

documents  object[]  
Documents can be uploaded to your template either by providing a URL or through sending the file base64 encoded in the POST request while creating a template. This array can contain multiple sub arrays. Please only specify one of two upload parameters (url or base64) for each sub array.

documents[].name  string  
Specify a name for the file to be uploaded.

documents[].url  url optional  
A URL leading to the file you would like to upload as your document file. Only PDF documents are supported.

documents[].base64  string optional  
Specify a base64 string of the file you would like to upload. Only PDF documents are supported.

documents[].fields  object[]  
Lorem Ipsum Dolor Sit Amet

documents[].fields[].page  integer  
The document page on which the field should be placed.

documents[].fields[].type  string  
The type of the field to be placed. The following field types are the supported: signature, text, date

documents[].fields[].width  integer  
The field's width in pixels.

documents[].fields[].height  integer  
The field's height in pixels. Example 50

documents[].fields[].x  integer  
Location x-coordinate of the field in pixels measured from the left side of the document. Example 550

documents[].fields[].y  integer  
Location y-coordinate of the field in pixels measured from the top of the document. Example 200

documents[].fields[].required  boolean  
Whether this field is required to be filled out / signed by the recipient.

documents[].fields[].value  string optional  
You can specify the content of text fields. If the field is assigned to a recipient, this value can be edited by the recipient.

documents[].fields[].placeholder  string optional  
Specify the placeholder recipients will see for this field during the signing process.

documents[].fields[].meta  object optional  

documents[].fields[].meta.font  string optional  
Set the font for this field. Supported Fonts are: Arial, Calibri, Courier New, Georgia, Times New Roman, Cambria, Trebuchet, Verdana, Roboto

documents[].fields[].meta.font_size  integer optional  
Set the font size for this field.

documents[].fields[].meta.line_height  integer optional  
Set the line height for this field.

documents[].fields[].meta.bold  boolean optional  
Set to true for bold.

documents[].fields[].meta.italic  string optional  
Set to true for italic.

documents[].fields[].meta.underline  string optional  
Set to true to underline.

documents[].fields[].recipient_id  string  
The unique identifier of the recipient this field should be assigned to. This identifier must match an array element defined in the recipients[] array.

Get Template

requires authentication

Retrieves the details of an existing template. You need only supply the unique template identifier.

Example request:

curl -X GET \
    -G "https://api.signteq.io/v1/templates/f5cfac16-3275-4e77-b33c-72bccace0130" \
    -H "Authorization: Bearer {YOUR_API_TOKEN}" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json"

$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://api.signteq.io/v1/templates/f5cfac16-3275-4e77-b33c-72bccace0130',
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_API_TOKEN}',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.signteq.io/v1/templates/f5cfac16-3275-4e77-b33c-72bccace0130'
headers = {
  'Authorization': 'Bearer {YOUR_API_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
const url = new URL(
    "https://api.signteq.io/v1/templates/f5cfac16-3275-4e77-b33c-72bccace0130"
);

let headers = {
    "Authorization": "Bearer {YOUR_API_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

{
    "id": "cf2cd695-bfb5-4b0a-8c38-8de441ea9b99",
    "created_at": "2022-09-07T15:50:10+02:00",
    "subject": "Pariatur id labore in itaque hic voluptatem et.",
    "settings": {
        "verify_phonenumber": false,
        "verify_email": true
    },
    "recipients": [],
    "permalink": "http:\/\/api.signteq.io\/t\/cf2cd695-bfb5-4b0a-8c38-8de441ea9b99?signature=e7768ca0294ddd9eed67af618c6283b2fc3ba8904f4f40838f0c2bb6d06c5c90",
    "qrcode": "http:\/\/api.signteq.io\/templates\/cf2cd695-bfb5-4b0a-8c38-8de441ea9b99\/qrcode?signature=b1ab48b0a8f393072bbc924614db14f1590db5e4b806e3ff93d293677d0a84b6"
}

Request      

GET v1/templates/{template}

URL Parameters

template  string  
The ID of the template.

Use Template

requires authentication

Use this template to create a request.

Example request:

curl -X POST \
    "https://api.signteq.io/v1/templates/f5cfac16-3275-4e77-b33c-72bccace0130" \
    -H "Authorization: Bearer {YOUR_API_TOKEN}" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"message":"Hi John, please sign the NDA. If you have any questions, feel free to contact me.","settings":{"deadline_at":"2021-09-26T21:40:29+02:00","auto_reminders":true,"retention_policy":30,"delete_after_download":true,"copy_document_completed":false,"copy_recipients_document_completed":true,"redirect_success_url":"https:\/\/example.com\/redirect","redirect_error_url":"https:\/\/example.com\/redirect"},"meta":{"internal_id":123},"recipients":[{"id":"1","type":"signatory","email":"[email protected]","name":"John Doe","phonenumber":"+43 664 123 456","access_pin":"1234","do_not_notify":false,"language":"ex"},{"id":"1","type":"signatory","email":"[email protected]","name":"John Doe","phonenumber":"+43 664 123 456","language":"ex"}],"fields":[{"id":"14ca4897-b791-4fe3-babb-28a9faebd2d3","value":"John Doe","read_only":false},{"id":"14ca4897-b791-4fe3-babb-28a9faebd2d3","value":"John Doe","read_only":false}]}'

$client = new \GuzzleHttp\Client();
$response = $client->post(
    'https://api.signteq.io/v1/templates/f5cfac16-3275-4e77-b33c-72bccace0130',
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_API_TOKEN}',
            'Accept' => 'application/json',
        ],
        'json' => [
            'message' => 'Hi John, please sign the NDA. If you have any questions, feel free to contact me.',
            'settings' => [
                'deadline_at' => '2021-09-26T21:40:29+02:00',
                'auto_reminders' => true,
                'retention_policy' => 30,
                'delete_after_download' => true,
                'copy_document_completed' => false,
                'copy_recipients_document_completed' => true,
                'redirect_success_url' => 'https://example.com/redirect',
                'redirect_error_url' => 'https://example.com/redirect',
            ],
            'meta' => [
                'internal_id' => 123,
            ],
            'recipients' => [
                [
                    'id' => '1',
                    'type' => 'signatory',
                    'email' => '[email protected]',
                    'name' => 'John Doe',
                    'phonenumber' => '+43 664 123 456',
                    'access_pin' => '1234',
                    'do_not_notify' => false,
                    'language' => 'ex',
                ],
                [
                    'id' => '1',
                    'type' => 'signatory',
                    'email' => '[email protected]',
                    'name' => 'John Doe',
                    'phonenumber' => '+43 664 123 456',
                    'language' => 'ex',
                ],
            ],
            'fields' => [
                [
                    'id' => '14ca4897-b791-4fe3-babb-28a9faebd2d3',
                    'value' => 'John Doe',
                    'read_only' => false,
                ],
                [
                    'id' => '14ca4897-b791-4fe3-babb-28a9faebd2d3',
                    'value' => 'John Doe',
                    'read_only' => false,
                ],
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.signteq.io/v1/templates/f5cfac16-3275-4e77-b33c-72bccace0130'
payload = {
    "message": "Hi John, please sign the NDA. If you have any questions, feel free to contact me.",
    "settings": {
        "deadline_at": "2021-09-26T21:40:29+02:00",
        "auto_reminders": true,
        "retention_policy": 30,
        "delete_after_download": true,
        "copy_document_completed": false,
        "copy_recipients_document_completed": true,
        "redirect_success_url": "https:\/\/example.com\/redirect",
        "redirect_error_url": "https:\/\/example.com\/redirect"
    },
    "meta": {
        "internal_id": 123
    },
    "recipients": [
        {
            "id": "1",
            "type": "signatory",
            "email": "[email protected]",
            "name": "John Doe",
            "phonenumber": "+43 664 123 456",
            "access_pin": "1234",
            "do_not_notify": false,
            "language": "ex"
        },
        {
            "id": "1",
            "type": "signatory",
            "email": "[email protected]",
            "name": "John Doe",
            "phonenumber": "+43 664 123 456",
            "language": "ex"
        }
    ],
    "fields": [
        {
            "id": "14ca4897-b791-4fe3-babb-28a9faebd2d3",
            "value": "John Doe",
            "read_only": false
        },
        {
            "id": "14ca4897-b791-4fe3-babb-28a9faebd2d3",
            "value": "John Doe",
            "read_only": false
        }
    ]
}
headers = {
  'Authorization': 'Bearer {YOUR_API_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
const url = new URL(
    "https://api.signteq.io/v1/templates/f5cfac16-3275-4e77-b33c-72bccace0130"
);

let headers = {
    "Authorization": "Bearer {YOUR_API_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "message": "Hi John, please sign the NDA. If you have any questions, feel free to contact me.",
    "settings": {
        "deadline_at": "2021-09-26T21:40:29+02:00",
        "auto_reminders": true,
        "retention_policy": 30,
        "delete_after_download": true,
        "copy_document_completed": false,
        "copy_recipients_document_completed": true,
        "redirect_success_url": "https:\/\/example.com\/redirect",
        "redirect_error_url": "https:\/\/example.com\/redirect"
    },
    "meta": {
        "internal_id": 123
    },
    "recipients": [
        {
            "id": "1",
            "type": "signatory",
            "email": "[email protected]",
            "name": "John Doe",
            "phonenumber": "+43 664 123 456",
            "access_pin": "1234",
            "do_not_notify": false,
            "language": "ex"
        },
        {
            "id": "1",
            "type": "signatory",
            "email": "[email protected]",
            "name": "John Doe",
            "phonenumber": "+43 664 123 456",
            "language": "ex"
        }
    ],
    "fields": [
        {
            "id": "14ca4897-b791-4fe3-babb-28a9faebd2d3",
            "value": "John Doe",
            "read_only": false
        },
        {
            "id": "14ca4897-b791-4fe3-babb-28a9faebd2d3",
            "value": "John Doe",
            "read_only": false
        }
    ]
}

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):

{
    "id": "0413e716-5ad1-415b-b221-52244907862b",
    "type": "signature",
    "subject": "Qui reprehenderit enim voluptas maxime est nisi.",
    "message": "Quae delectus quo dicta quas voluptas. Ducimus magnam quos fugiat aut voluptate beatae. Id nisi ea animi unde quae omnis.",
    "sandbox": null,
    "created_at": "2022-09-07T15:50:10+02:00",
    "updated_at": "2022-09-07T15:50:10+02:00",
    "canceled_at": null,
    "released_at": null,
    "declined_at": null,
    "completed_at": null,
    "settings": {
        "deadline_at": "2022-09-26T15:50:10+02:00",
        "auto_reminders": true,
        "retention_policy": null,
        "delete_after_download": false,
        "copy_document_completed": true,
        "copy_recipients_document_completed": true,
        "close_on_success": false,
        "redirect_success_url": null,
        "redirect_error_url": null
    },
    "meta": null
}

Request      

POST v1/templates/{template}

URL Parameters

template  string  
The ID of the template.

Body Parameters

message  string optional  
Your message to the recipient(s). This will be shown in emails and online.

settings  object optional  
Use this object to override organization settings for this specific request. If a parameter is empty or not provided, the default value specified in your organization settings will be used.

settings.deadline_at  date optional  
ISO 8601 This parameter is used to specify a custom expiration date for this request.

settings.auto_reminders  boolean optional  
Set to true in order to enable Auto Reminders for this request.

settings.retention_policy  integer optional  
Specify if and when the documents of this request should be deleted automatically. The value must be one of 1, 3, 7 or 30.

settings.delete_after_download  boolean optional  
Set to true in order to delete all documents after they have been downloaded by each recipient.

settings.copy_document_completed  boolean optional  
Set to true in order to receive the completed document via email.

settings.copy_recipients_document_completed  boolean optional  
Set to true in order to send the completed document via email to each recipient.

settings.redirect_success_url  url optional  
You can define a custom URL to which recipients will be redirected after signing all documents.

settings.redirect_error_url  url optional  
You can define a custom URL to which recipients will be redirected after an error occurred or the request has been declined.

meta  object optional  
Custom metadata lets you add information to requests to help track them for their entire lifecycle. Metadata added to a request will be displayed in the signteq UI, available using this API, and also returned in webhook events. Metadata is added to the "meta" field as JSON object.

recipients  object[]  
This object must contain a sub array for each recipient of the documents being created. For Level 1 you only need to specify the recipient's email address, for Level 2 the recipient's email address and a phone number and for Level 3 the recipient's email address, a phone number and an access PIN.

recipients[].id  string  
A unique identification number for this recipient. We recommend numbering your recipients from 1 to n.

recipients[].type  string  
The type of the recipient. Supported types are: signatory, recipient, copy

recipients[].email  email  
The email address of the recipient.

recipients[].name  string  
The name of the recipient.

recipients[].phonenumber  string optional  
An E.164 formatted phone number that will receive a TAN-code via SMS to access this recipients's signature page. Not available in test mode.

recipients[].access_pin  string optional  
An additional access code that will secure this recipients's signature page.

recipients[].do_not_notify  boolean optional  
Set to true set this value to "true" to not inform this recipient by email. This is useful if you want to forward the recipient directly to the signature page. This is only available for signature requests.

recipients[].language  string optional  
Specify the language (ISO-639-1) in which the signing area and the signature process will appear for this recipient. Currently de and en are supported.

fields  object[] optional  
Use this array to prefill specific document fields

fields[].id  string  
The unique ID of the field.

fields[].value  string  
The value of the field.

fields[].read_only  boolean  
If set to false the recipient can edit this value.

Delete Template

requires authentication

Permanently deletes a template. It cannot be undone.

Example request:

curl -X DELETE \
    "https://api.signteq.io/v1/templates/minus" \
    -H "Authorization: Bearer {YOUR_API_TOKEN}" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json"

$client = new \GuzzleHttp\Client();
$response = $client->delete(
    'https://api.signteq.io/v1/templates/minus',
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_API_TOKEN}',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.signteq.io/v1/templates/minus'
headers = {
  'Authorization': 'Bearer {YOUR_API_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()
const url = new URL(
    "https://api.signteq.io/v1/templates/minus"
);

let headers = {
    "Authorization": "Bearer {YOUR_API_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request      

DELETE v1/templates/{template}

URL Parameters

template  string