# FAQ

> Short answers to common questions about the API and MCP server, and a glossary of Sigil's words (pact, glyph, sigil, sealed, lapsed, void) and where they come from.

Short answers to the questions developers ask most, then the [glossary](#glossary). Questions about billing, the law and what signers see are on the [main FAQ](https://www.signwithsigil.com/faq).

## Using the API

### Which plans include the API?

Calling the REST API or the MCP server needs the **Pro** or **Business** plan. Any account can create keys on the [API page](https://www.signwithsigil.com/api), so you can set things up before upgrading. See [pricing](https://www.signwithsigil.com/pricing).

### REST or MCP?

They do the same things under the same rules and answer with the same JSON. Use the [REST API](/api-reference) from your own code, and the [MCP server](/mcp) when an AI assistant should create and send pacts for you.

### How do I authenticate?

Send your key as `Authorization: Bearer sgk_…` or `X-Api-Key: sgk_…`. See [Authentication](/authentication).

### What does sending a pact cost?

One document for every three signers, rounded up; CCs are free. It is charged once, when the pact is sent, and not returned if the pact is later voided, declined or lapses. A draft's `documents_cost` shows what sending it will use. See [Documents and plans](/concepts/documents).

### Can I send a document without saving it as a template?

Yes. [Create a pact](/api-reference/pacts/create-pact) as a multipart request with a `file` instead of a `template_uid`. The file needs [glyphs](/concepts/glyphs) just like a template.

### Why was my upload refused?

Usually because the file has no selectable text (a scan or a photo) or no glyphs. The error message says which; [Errors](/errors) lists them all.

## Following a pact

### What do the statuses mean?

| Status | Meaning |
|---|---|
| `draft` | Created, not sent. Costs nothing yet. |
| `sent` | Out for signature; `current_signer` is whose turn it is. |
| `sealed` | Everyone signed. The signed PDF and its sigil are ready. |
| `declined` | A signer declined. |
| `voided` | You withdrew it. |
| `lapsed` | Not sealed by `date_lapses`. |

[Pact lifecycle](/concepts/pacts) has the details.

### How do I know when a pact is sealed?

There are no webhooks yet. Poll [Get a pact](/api-reference/pacts/get-pact), or [list pacts](/api-reference/pacts/list-pacts) with `status=sent`, every few minutes, and stop when `status` is no longer `sent`. Once it is `sealed`, download the [signed PDF](/api-reference/pacts/download-signed) and its [sigil](/api-reference/pacts/download-sigil).

### Can signers sign on my own domain?

Yes. Pass a verified domain as `domain_host` when you create the pact, and its signing page and emails carry your domain, name and logo. [List domains](/api-reference/domains/list-domains) shows which you can use.

## Glossary

A sigil is a seal: the word is Latin *sigillum*, "little sign", and it is where English *seal* comes from. Sigil's other words follow from it, and each shows up in the API under the same name.

### Pact

A document sent out for signature, with its signers, their fields and its whole history. Other e-signature services call it an envelope. In the API: [`/v1/pacts`](/api-reference/pacts/list-pacts), the [pact object](/api-reference/objects/pact), and the `*_pact` MCP tools.

From Latin *pactum*, "something agreed", from *pacisci*, "to make an agreement", a relative of *pax*, "peace". The legal maxim *pacta sunt servanda*, "agreements must be kept", still underpins contract law and the law of treaties. In fantasy a pact is the bargain a warlock strikes with a patron for power; ours only ask for a signature.

### Glyph

A short code typed into the document, such as `\s1\`, that marks where a field goes and which signer fills it in. Each glyph becomes one entry in a template's or pact's `fields`. See [Glyphs](/concepts/glyphs).

From Greek *glyphē*, "carving", as in *hieroglyph*, "sacred carving". In type design a glyph is the drawn shape of a character, which fits: Sigil finds yours by reading the letters on the page. Players will remember the *glyph of warding*, a mark that waits on a surface until someone sets it off.

### Sigil

The certificate of completion built when a pact is sealed: each signer, when they viewed and signed, from which IP address, the consent they gave, both document hashes and the full event log. In the API: `links.sigil` and [`GET /v1/pacts/{uid}/sigil.pdf`](/api-reference/pacts/download-sigil). The PDF itself is titled *Certificate of Completion* and downloads as `… - certificate.pdf`, because it travels to people who do not know our words.

From Latin *sigillum*, "little sign", a diminutive of *signum*, "sign, mark". The same word passed through Old French to become English *seal*. In medieval and Renaissance magic a sigil was a symbol standing for a spirit or a power; the *Lesser Key of Solomon* draws one for each of its 72 spirits. In *The Book of Pleasure* (1913) the artist Austin Osman Spare made sigils out of written intentions, folding a sentence into a single mark, an idea chaos magic later took up. Tabletop players know Sigil as the City of Doors, the hub of the 1994 *Dungeons & Dragons* setting *Planescape*.

### Sealed

A pact is sealed when the last signer finishes: every field is stamped into the PDF, the sigil is built, and everyone gets the copy. In the API: `"status": "sealed"`, `date_sealed`, and the `sealed` event.

*Seal* comes from Old French *seel*, from the same Latin *sigillum* as sigil. Wax seals closed letters and proved who sent them, and for centuries a deed took effect only once it was "signed, sealed and delivered".

### Lapsed

A pact lapses when its deadline passes before everyone has signed; its links stop working. In the API: `"status": "lapsed"`, `date_lapses`, and `lapse_days` to set the deadline.

From Latin *lapsus*, "a slip", from *labi*, "to slip". In law an offer lapses when its time runs out unanswered, and so does an insurance policy left unpaid.

### Void

A pact you withdrew after sending it; every link stops working at once. In the API: [`POST /v1/pacts/{uid}/void`](/api-reference/pacts/void-pact), `void_pact`, and `"status": "voided"`.

From Old French *voide*, "empty", from the family of Latin *vacuus*. A contract that is void has no legal effect at all: it is as if it were empty.
