Create Session

Create a signing session from scratch - no template or PDF required. Documents are written in the block document format; AirSign handles layout and signature field placement. By default the session is created as a draft and the response includes a draftUrl that opens the session in the AirSign editor for review before sending. Set sendImmediately: true to skip review and email the signing invitations straight away. Previously uploaded PDFs (see Upload File) can be attached as additional reference documents.

Endpoint

POST https://api.airsign.com.au/api/v1/Session

Headers

NameValueRequiredDescription
Content-Typeapplication/jsonYesSpecifies the format of the request body
AuthorizationBearer {access_token}YesBearer token with the write:sessions scope

Request Body

ParameterTypeRequiredDescription
namestringYesSession name (1-50 characters)
filesarrayYes1-10 file entries. Each is either { "type": "blocks", "document": {...} } (a block document) or { "type": "uploadedPdf", "fileId": "...", "fileName": "..." } (a previously uploaded PDF). At least one block document is required - signature fields always live on block documents; uploaded PDFs are reference material
recipientsarrayYes1-20 recipients, each with key, name, email and optional signingOrder. Keys are referenced by signatureBlock blocks in the documents
sendImmediatelybooleanNoWhether to email signing invitations now or leave the session in draft for review. Defaults to false
expiryDaysnumberNoDays before the session expires (1-730). Requires the Session Expiry plan feature
reminderEnabledbooleanNoWhether to send automatic reminders. Requires the Session Expiry plan feature
reminderFrequencystringNodaily, weekly, monthly, or quarterly. Requires the Session Expiry plan feature

Example Request

curl --location 'https://api.airsign.com.au/api/v1/Session' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {access_token}' \
--data-raw '{
    "name": "NDA - Acme Pty Ltd",
    "sendImmediately": false,
    "files": [{
        "type": "blocks",
        "document": {
            "format": "blocks",
            "title": "Mutual NDA",
            "blocks": [
                { "type": "heading", "text": "1. Purpose" },
                { "type": "paragraph", "text": "The parties wish to exchange confidential information." },
                { "type": "spacer", "height": 24 },
                { "type": "signatureBlock", "recipient": "partyA", "label": "Party A" },
                { "type": "signatureBlock", "recipient": "partyB", "label": "Party B" }
            ]
        }
    }],
    "recipients": [
        { "key": "partyA", "name": "Ada Lovelace", "email": "{valid_email}" },
        { "key": "partyB", "name": "Charles Babbage", "email": "{valid_email_2}" }
    ]
}'

Response

Status: 200 OK. For drafts, draftUrl opens the session in the AirSign editor so the document can be verified (and tweaked) before sending - send it later with Send Session.

{
    "name": "NDA - Acme Pty Ltd",
    "sessionId": "{uuid}",
    "status": "draft",
    "selfSignOnly": false,
    "createdAt": "2026-06-12 10:15:00",
    "updatedAt": "2026-06-12 10:15:00",
    "files": [
        {
            "fileId": null,
            "fileName": "Mutual NDA.pdf",
            "zones": [ ... ],
            "sessionId": "{uuid}"
        }
    ],
    "recipients": [
        { "recipientId": "{uuid}", "status": "draft", "name": "Ada Lovelace", "email": "{valid_email}", "signingOrder": 1 },
        { "recipientId": "{uuid}", "status": "draft", "name": "Charles Babbage", "email": "{valid_email_2}", "signingOrder": 2 }
    ],
    "draftUrl": "https://app.airsign.com.au/authenticated/main/sessions/session/{uuid}",
    "sent": false
}

Error Responses

StatusDescription
400Invalid request body, or the document failed layout validation (DOCUMENT_VALIDATION_FAILED with a structured issues list - see the format reference)
401Missing or invalid authentication token
403Session limit reached for your plan (SESSION_LIMIT_REACHED), or a setting requires a plan feature (PLAN_FEATURE_REQUIRED)
404A referenced uploaded file was not found (FILE_NOT_FOUND)