# Terms > Terms provides contract drafting, review, and electronic signing. Its account API lets agents search/read authorized contracts and, with draft permission, create/edit personal never-sent drafts. ## Public reference (no login or API key required) - API reference: https://terms.so/docs - OpenAPI 3.1.1 JSON: https://terms.so/connect/openapi.json - Muse setup: https://terms.so/connect/muse - Product information: https://terms.so/api/connectors/v1/product ## Authentication API base URL: https://terms.so/api/connectors/v1 OpenAPI server: https://terms.so (the specification paths already include /api/connectors/v1). Send Authorization: Bearer on every account request. Do not use X-API-Key, cookies, OAuth, a Claude API key, or query-string credentials. Only the account owner must log in at https://terms.so/connectors to create a key. The agent uses that key without a browser login. Collect it through a secure credential form/vault, never chat. Keys expire in 90 days and are revocable. Read-only keys cannot write; draft keys can create/edit the owner's personal never-sent drafts. ## First request GET https://terms.so/api/connectors/v1/contracts Authorization: Bearer Follow nextOffset until null. Read relevant clauses and cite returned source URLs. ## Draft workflow POST /api/connectors/v1/drafts: send title and body as JSON and a random Idempotency-Key (16–100 letters, digits, hyphens, underscores). Reuse it for identical retries. GET /api/connectors/v1/drafts/{id}: read the complete editable draft and revision. PATCH /api/connectors/v1/drafts/{id}: send the complete title, body, and latest revision as JSON. On 409, reread and reconcile changes. No API endpoint sends, signs, or deletes contracts. No editing shared/organization drafts, imported references, or sent agreements. For full schemas, permissions, pagination, errors, and limits, read the public OpenAPI reference above. ## Signer fields (supported by existing draft-access keys) POST and PATCH accept signers: [{"name":"Alex Example","email":"alex@example.com","entity":"Example Company","title":"Director"}]. This address is an example only. Outside agents MUST use structured signer fields for known signers. Never append execution blocks, signature tables, By/Name/Title/Date lines, or signing forms to body. Terms renders the execution area from these fields. Party names may appear in substantive clauses. Ask for missing names/emails; never invent recipients. GET draft returns signers and a revision covering text and signer fields. On PATCH, send the full desired signer list including unchanged people. Omit signers to preserve them; [] clears them. Emails identify recipients (changing an email replaces that recipient). Reuse current title/body to edit only signer fields. At most 50 signers; unique valid emails (254 characters max), names required (300 max), entity/title optional (300 max, omitted becomes empty). No emails or invitations are sent by draft writes. Return the draft URL so the user can review and send in Terms. ## Markdown line breaks Use two ASCII spaces followed by an actual newline for one line break within a paragraph. Preserve trailing spaces in generated text and edits. A plain newline is a soft wrap (space); a blank line starts a separate paragraph. JSON body example: {"body":"First line \nSecond line\n\nNew paragraph."}. Decode JSON normally; do not store literal backslash-n text. LF, CRLF, and CR line endings are accepted. Hard breaks work in prose, blockquotes, and indented list continuation lines, including PDF output. Keep table rows on one physical line. HTML
is displayed as text, not markup. Reference and rendered example: https://terms.so/docs#line-breaks