Contents

Settings

Sig's settings and the month's usage.

The SigSettings object

Attributes

  • file_to_folio required Type: boolean

    File each completed package, its certificate and its evidence in Folio. Needs Folio.

  • check_with_nib required Type: boolean

    Check each signature with Nib against the signer's references as it's made.

  • folio_folder required Type: string

    The Folio folder packages are filed in.

  • folio_class required Type: string null

    The retention class they're filed under; null is Folio's default.

  • folio_sender_chooses required Type: boolean

    Senders may choose the folder and class for each package.

  • replies_to_org required Type: boolean

    Signers' replies go to your organisation's reply-to address rather than to the person who sent the package.

  • attach_copy required Type: boolean

    The signed copy is attached to the email everyone gets once the package is complete. Off sends a link instead.

  • updated_at required Type: string null

    When the settings were last changed; null when they never have been.

SigSettings on its own page

The SigSettings object
{
  "file_to_folio": true,
  "check_with_nib": false,
  "folio_folder": "Signed",
  "folio_class": null,
  "folio_sender_chooses": false,
  "replies_to_org": false,
  "attach_copy": true,
  "updated_at": "2026-10-13T10:00:00Z"
}

Read Sig's settings

GET /sig/settings

Needs sig:packages:read: See packages, their signers and signed files

Whether completed packages are filed in Folio and whether signatures are checked with Nib. Both are off until the organisation turns them on.

Returns

  • 200 Type: SigSettings
    The settings
  • 400 Type: Problem
    invalid_request, invalid_version, idempotency_key_required or invalid_signature
  • 401 Type: Problem
    unauthorized
  • 403 Type: Problem
    permission_denied, org_suspended, or address_not_allowed (your organisation only accepts requests from the addresses it has listed)
  • 404 Type: Problem
    not_found
  • 421 Type: Problem
    wrong_region
  • 429 Type: Problem
    rate_limited or quota_exceeded
  • default Type: Problem
    internal
GET /sig/settings · curl
curl "https://api.unforged.sh/sig/settings" \
  -H "Authorization: Bearer $UNFORGED_KEY" \
  -H "Unforged-Version: 2026-10-14"
GET /sig/settings · Python
import requests

r = requests.get(
    "https://api.unforged.sh/sig/settings",
    headers={"Authorization": f"Bearer {UNFORGED_KEY}", "Unforged-Version": "2026-10-14"},
)
print(r.json())
GET /sig/settings · Node.js
const res = await fetch('https://api.unforged.sh/sig/settings', {
  method: 'GET',
  headers: { Authorization: `Bearer ${process.env.UNFORGED_KEY}`, 'Unforged-Version': '2026-10-14' },
});
console.log(await res.json());
Response 200
{
  "file_to_folio": true,
  "check_with_nib": false,
  "folio_folder": "Signed",
  "folio_class": null,
  "folio_sender_chooses": false,
  "replies_to_org": false,
  "attach_copy": true,
  "updated_at": "2026-10-13T10:00:00Z"
}

Change Sig's settings

PUT /sig/settings

Needs sig:settings:manage: Sig settings: Folio filing and Nib checks

Turning on Folio filing needs Folio for the organisation (else 400).

Request body

SigSettingsRequest

  • file_to_folio required Type: boolean
  • check_with_nib required Type: boolean
  • folio_folder optional Type: string

    Unchanged when left out.

  • folio_class optional Type: string

    Empty for Folio's default; unchanged when left out.

  • folio_sender_chooses optional Type: boolean

    Unchanged when left out.

  • replies_to_org optional Type: boolean

    Unchanged when left out.

  • attach_copy optional Type: boolean

    Unchanged when left out.

Returns

  • 200 Type: SigSettings
    Changed
  • 400 Type: Problem
    invalid_request, invalid_version, idempotency_key_required or invalid_signature
  • 401 Type: Problem
    unauthorized
  • 403 Type: Problem
    permission_denied, org_suspended, or address_not_allowed (your organisation only accepts requests from the addresses it has listed)
  • 404 Type: Problem
    not_found
  • 413 Type: Problem
    too_large
  • 421 Type: Problem
    wrong_region
  • 429 Type: Problem
    rate_limited or quota_exceeded
  • default Type: Problem
    internal
PUT /sig/settings · curl
curl -X PUT "https://api.unforged.sh/sig/settings" \
  -H "Authorization: Bearer $UNFORGED_KEY" \
  -H "Unforged-Version: 2026-10-14" \
  -H "Content-Type: application/json" \
  -d '{}'
PUT /sig/settings · Python
import requests

r = requests.put(
    "https://api.unforged.sh/sig/settings",
    headers={"Authorization": f"Bearer {UNFORGED_KEY}", "Unforged-Version": "2026-10-14"},
    json={},
)
print(r.json())
PUT /sig/settings · Node.js
const res = await fetch('https://api.unforged.sh/sig/settings', {
  method: 'PUT',
  headers: { Authorization: `Bearer ${process.env.UNFORGED_KEY}`, 'Unforged-Version': '2026-10-14', 'Content-Type': 'application/json' },
  body: JSON.stringify({}),
});
console.log(await res.json());
Response 200
{
  "file_to_folio": true,
  "check_with_nib": false,
  "folio_folder": "Signed",
  "folio_class": null,
  "folio_sender_chooses": false,
  "replies_to_org": false,
  "attach_copy": true,
  "updated_at": "2026-10-13T10:00:00Z"
}

Read where signers go once they've finished

GET /sig/settings/return

Needs sig:packages:read: See packages, their signers and signed files

The link signers are sent back to once they've signed or declined, unless a package has its own return_url, and the origins a return link may use besides your verified domains.

Returns

  • 200 Type: SigReturnSettings
    The settings
  • 400 Type: Problem
    invalid_request, invalid_version, idempotency_key_required or invalid_signature
  • 401 Type: Problem
    unauthorized
  • 403 Type: Problem
    permission_denied, org_suspended, or address_not_allowed (your organisation only accepts requests from the addresses it has listed)
  • 404 Type: Problem
    not_found
  • 421 Type: Problem
    wrong_region
  • 429 Type: Problem
    rate_limited or quota_exceeded
  • default Type: Problem
    internal
GET /sig/settings/return · curl
curl "https://api.unforged.sh/sig/settings/return" \
  -H "Authorization: Bearer $UNFORGED_KEY" \
  -H "Unforged-Version: 2026-10-14"
GET /sig/settings/return · Python
import requests

r = requests.get(
    "https://api.unforged.sh/sig/settings/return",
    headers={"Authorization": f"Bearer {UNFORGED_KEY}", "Unforged-Version": "2026-10-14"},
)
print(r.json())
GET /sig/settings/return · Node.js
const res = await fetch('https://api.unforged.sh/sig/settings/return', {
  method: 'GET',
  headers: { Authorization: `Bearer ${process.env.UNFORGED_KEY}`, 'Unforged-Version': '2026-10-14' },
});
console.log(await res.json());

Change where signers go once they've finished

PUT /sig/settings/return

Needs sig:settings:manage: Sig settings: Folio filing and Nib checks

A return link must start with https:// and be on one of your verified domains, or on one of the origins you list here (400 otherwise). Signers arrive with package_id, signer_id and outcome (signed, approved or declined) added to the link.

Request body

SigReturnRequest

  • default_url optional Type: string null
  • origins optional Type: string[]

Returns

  • 200 Type: SigReturnSettings
    Changed
  • 400 Type: Problem
    invalid_request, invalid_version, idempotency_key_required or invalid_signature
  • 401 Type: Problem
    unauthorized
  • 403 Type: Problem
    permission_denied, org_suspended, or address_not_allowed (your organisation only accepts requests from the addresses it has listed)
  • 404 Type: Problem
    not_found
  • 413 Type: Problem
    too_large
  • 421 Type: Problem
    wrong_region
  • 429 Type: Problem
    rate_limited or quota_exceeded
  • default Type: Problem
    internal
PUT /sig/settings/return · curl
curl -X PUT "https://api.unforged.sh/sig/settings/return" \
  -H "Authorization: Bearer $UNFORGED_KEY" \
  -H "Unforged-Version: 2026-10-14" \
  -H "Content-Type: application/json" \
  -d '{}'
PUT /sig/settings/return · Python
import requests

r = requests.put(
    "https://api.unforged.sh/sig/settings/return",
    headers={"Authorization": f"Bearer {UNFORGED_KEY}", "Unforged-Version": "2026-10-14"},
    json={},
)
print(r.json())
PUT /sig/settings/return · Node.js
const res = await fetch('https://api.unforged.sh/sig/settings/return', {
  method: 'PUT',
  headers: { Authorization: `Bearer ${process.env.UNFORGED_KEY}`, 'Unforged-Version': '2026-10-14', 'Content-Type': 'application/json' },
  body: JSON.stringify({}),
});
console.log(await res.json());

The month's signing and what it costs

GET /sig/usage

Needs org:read: See org, members, usage

One UTC month (period: current, the default, or YYYY-MM): packages sent and completed, documents signed and the estimated charge so far, in the currency your organisation is billed for Sig in. Only signed documents are charged.

Parameters

  • period queryoptional Type: string

Returns

  • 200 Type: SigUsage
    The month's usage
  • 400 Type: Problem
    invalid_request, invalid_version, idempotency_key_required or invalid_signature
  • 401 Type: Problem
    unauthorized
  • 403 Type: Problem
    permission_denied, org_suspended, or address_not_allowed (your organisation only accepts requests from the addresses it has listed)
  • 404 Type: Problem
    not_found
  • 421 Type: Problem
    wrong_region
  • 429 Type: Problem
    rate_limited or quota_exceeded
  • default Type: Problem
    internal
GET /sig/usage · curl
curl "https://api.unforged.sh/sig/usage" \
  -H "Authorization: Bearer $UNFORGED_KEY" \
  -H "Unforged-Version: 2026-10-14"
GET /sig/usage · Python
import requests

r = requests.get(
    "https://api.unforged.sh/sig/usage",
    headers={"Authorization": f"Bearer {UNFORGED_KEY}", "Unforged-Version": "2026-10-14"},
)
print(r.json())
GET /sig/usage · Node.js
const res = await fetch('https://api.unforged.sh/sig/usage', {
  method: 'GET',
  headers: { Authorization: `Bearer ${process.env.UNFORGED_KEY}`, 'Unforged-Version': '2026-10-14' },
});
console.log(await res.json());
Response 200
{
  "period_start": "2026-10-01T00:00:00Z",
  "period_end": "2026-11-01T00:00:00Z",
  "packages_sent": 42,
  "packages_completed": 37,
  "documents_signed": 61,
  "unit_price": "0.65",
  "estimated_charge": "39.65",
  "currency": "gbp",
  "pricing": "list"
}