Agree API

REST API for the Agree contract-to-cash platform. 56 operations across six resources: Agreements (create from templates, assign signature fields to recipients, send, fetch executed PDFs, soft delete), Invoices (create, create-and-send in one call, recurring schedules, mark as sent or paid, invoice and receipt PDFs), Contacts and Customers (address book, soft delete), Reports (cash-flow stats and forecast, revenue by customer and MRR, recovery aging and leakage analysis), and Webhooks (endpoint registration with HMAC-SHA256 signed delivery over twelve event types). Authentication is a bearer API key issued from Settings > API Keys in the dashboard. Responses are wrapped in a data envelope with page/page_size pagination; validation failures return a field-keyed errors object rather than RFC 9457 problem+json.

Operations 56

GET /api/v1/agreements List agreements #
POST /api/v1/agreements Create agreement from template #
POST /api/v1/agreements/create_and_send Create and send agreement #
GET /api/v1/agreements/templates List agreement templates #
GET /api/v1/agreements/templates/{id} Get template #
DELETE /api/v1/agreements/{id} Delete agreement #
GET /api/v1/agreements/{id} Get agreement #
PATCH /api/v1/agreements/{id} Update agreement #
PUT /api/v1/agreements/{id} Update agreement #
GET /api/v1/agreements/{id}/pdf Download agreement PDF #
POST /api/v1/agreements/{id}/send Send agreement #
GET /api/v1/contacts List contacts #
POST /api/v1/contacts Create contact #
DELETE /api/v1/contacts/{id} Delete contact #
GET /api/v1/contacts/{id} Get contact #
PATCH /api/v1/contacts/{id} Update contact #
PUT /api/v1/contacts/{id} Update contact #
GET /api/v1/customers List customers #
POST /api/v1/customers Create customer #
GET /api/v1/customers/{id} Get customer #
PATCH /api/v1/customers/{id} Update customer #
PUT /api/v1/customers/{id} Update customer #
GET /api/v1/invoices List invoices #
POST /api/v1/invoices Create invoice #
POST /api/v1/invoices/create_and_send Create and send invoice #
DELETE /api/v1/invoices/{id} Delete invoice #
GET /api/v1/invoices/{id} Get invoice #
PATCH /api/v1/invoices/{id} Update invoice #
PUT /api/v1/invoices/{id} Update invoice #
POST /api/v1/invoices/{id}/mark_as_paid Mark invoice as paid #
POST /api/v1/invoices/{id}/mark_as_sent Mark invoice as sent #
GET /api/v1/invoices/{id}/pdf Download invoice PDF #
GET /api/v1/invoices/{id}/receipt_pdf Download receipt PDF #
POST /api/v1/invoices/{id}/send Send invoice #
GET /api/v1/reports/cashflow/chart Cashflow chart data #
GET /api/v1/reports/cashflow/forecast Cash forecast #
GET /api/v1/reports/cashflow/outstanding_invoices Outstanding invoices #
GET /api/v1/reports/cashflow/stats Cashflow statistics #
GET /api/v1/reports/recovery/aging/chart Aging chart data #
GET /api/v1/reports/recovery/aging/invoices Invoices by aging bucket #
GET /api/v1/reports/recovery/aging/trend Aging trend #
GET /api/v1/reports/recovery/leakage/stage_durations Stage duration statistics #
GET /api/v1/reports/recovery/leakage/stalled_invoices Stalled invoices #
GET /api/v1/reports/recovery/leakage/stats Leakage statistics #
GET /api/v1/reports/recovery/leakage/waterfall Leakage waterfall #
GET /api/v1/reports/revenue/chart Revenue chart data #
GET /api/v1/reports/revenue/customers Customers by revenue #
GET /api/v1/reports/revenue/customers_by_mrr Customers by MRR #
GET /api/v1/reports/revenue/stats Revenue statistics #
GET /api/v1/webhooks List webhook endpoints #
POST /api/v1/webhooks Create webhook endpoint #
POST /api/v1/webhooks/test Send test webhook #
DELETE /api/v1/webhooks/{id} Delete webhook endpoint #
GET /api/v1/webhooks/{id} Get webhook endpoint #
PATCH /api/v1/webhooks/{id} Update webhook endpoint #
PUT /api/v1/webhooks/{id} Update webhook endpoint #

Documentation

Specifications

Other Resources

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/agree-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

agree-com-api-openapi.json Raw ↑
{
  "components": {
    "responses": {},
    "schemas": {
      "Agreement": {
        "description": "An agreement in the system",
        "example": {
          "current_signing_order": 0,
          "deleted_at": null,
          "delivery_mode": "managed",
          "docs_url": "https://secure.agree.com/docs/550e8400-e29b-41d4-a716-446655440000",
          "ends_at": "2024-12-31T23:59:59Z",
          "executed_at": null,
          "field_values": {
            "legal_entity_name": "Acme Inc",
            "subscription_start_date": "2024-01-01"
          },
          "forward_signature_enabled": true,
          "id": "550e8400-e29b-41d4-a716-446655440000",
          "invoice_template_id": null,
          "last_reminder_sent_at": null,
          "name": "Service Agreement",
          "organization_id": "660e8400-e29b-41d4-a716-446655440000",
          "payments_enabled": false,
          "preview_url": "https://example.com/preview/550e8400",
          "reminder_schedule": "weekly",
          "reminder_scheduled_at": "2024-01-22T10:00:00Z",
          "share_url": null,
          "signers": [
            {
              "assigned_fields": [
                "signature_field",
                "date_field"
              ],
              "contact_id": "770e8400-e29b-41d4-a716-446655440000",
              "role": "signer",
              "signing_link": "https://example.com/sign/abc123token",
              "status": "pending"
            }
          ],
          "signing_order": [],
          "signing_order_enabled": false,
          "starts_at": "2024-01-01T00:00:00Z",
          "status": "drafted",
          "version": 0
        },
        "properties": {
          "current_signing_order": {
            "description": "Current position in the signing order",
            "nullable": true,
            "type": "integer"
          },
          "deleted_at": {
            "description": "When the agreement was deleted (soft delete)",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "delivery_mode": {
            "description": "Delivery mode: 'embedded' (emails suppressed) or 'managed' (Agree sends emails)",
            "enum": [
              "embedded",
              "managed"
            ],
            "type": "string"
          },
          "docs_url": {
            "description": "URL to navigate to the agreement in the Agree web app.\nFormat: {base_url}/docs/{agreement_id}\nExamples:\n- https://secure.agree.com/docs/{agreement_id}\n",
            "format": "uri",
            "nullable": true,
            "type": "string"
          },
          "ends_at": {
            "description": "When the agreement ends",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "executed_at": {
            "description": "When the agreement was executed",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "field_values": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Map of field_id to the current filled plain-text value. Includes values filled\nduring signing and template variable values snapshotted when the agreement is sent\n(variables are resolved to plain text in the document at send time).\n",
            "type": "object"
          },
          "forward_signature_enabled": {
            "description": "Whether forward signature is enabled",
            "type": "boolean"
          },
          "id": {
            "description": "Unique agreement identifier",
            "format": "uuid",
            "type": "string"
          },
          "invoice_template_id": {
            "description": "ID of the invoice template linked to this agreement, when created with an invoice",
            "format": "uuid",
            "nullable": true,
            "type": "string"
          },
          "last_reminder_sent_at": {
            "description": "When the last reminder was sent",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "name": {
            "description": "Agreement name",
            "type": "string"
          },
          "organization_id": {
            "description": "Organization that owns this agreement",
            "format": "uuid",
            "nullable": true,
            "type": "string"
          },
          "payments_enabled": {
            "description": "Whether payments are enabled for this agreement",
            "type": "boolean"
          },
          "preview_url": {
            "description": "URL to preview the agreement",
            "nullable": true,
            "type": "string"
          },
          "reminder_schedule": {
            "description": "Reminder schedule frequency",
            "enum": [
              "none",
              "daily",
              "weekly",
              "monthly"
            ],
            "nullable": true,
            "type": "string"
          },
          "reminder_scheduled_at": {
            "description": "When the next reminder is scheduled",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "share_url": {
            "description": "Share URL (generic share link) if enabled",
            "format": "uri",
            "nullable": true,
            "type": "string"
          },
          "signers": {
            "description": "List of signers with their assigned fields",
            "items": {
              "$ref": "#/components/schemas/Signer"
            },
            "type": "array"
          },
          "signing_order": {
            "description": "Recipient or template role IDs while drafting; recipient IDs after send",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "signing_order_enabled": {
            "description": "Whether signing order is enabled",
            "type": "boolean"
          },
          "starts_at": {
            "description": "When the agreement starts",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "status": {
            "description": "Agreement status",
            "enum": [
              "created",
              "drafted",
              "executed",
              "renewed",
              "sent",
              "signed",
              "terminated",
              "viewed"
            ],
            "type": "string"
          },
          "version": {
            "description": "Agreement version number",
            "type": "integer"
          }
        },
        "required": [
          "id",
          "name",
          "status",
          "version",
          "signers"
        ],
        "title": "Agreement",
        "type": "object"
      },
      "AgreementCreateParams": {
        "description": "Parameters for creating an agreement from a template",
        "example": {
          "delivery_mode": "managed",
          "field_values": {
            "field_1": "John Doe",
            "field_2": {
              "content": "**MSA** for _Acme Corp_",
              "content_type": "markdown"
            }
          },
          "invoice": {
            "amount": 15000,
            "billing_contact": {
              "email": "billing@example.com",
              "name": "Billing Contact"
            },
            "currency": "USD",
            "memo": "Payment for services",
            "payment_direction": "receivable",
            "payment_methods": [
              "card",
              "ach"
            ],
            "payment_terms_days": 30,
            "payment_terms_type": "net"
          },
          "name": "Service Agreement",
          "payments_enabled": false,
          "recipients": [
            {
              "assigned_fields": [
                "company_address",
                "date"
              ],
              "contact_id": "770e8400-e29b-41d4-a716-446655440000",
              "role": "owner"
            },
            {
              "assigned_fields": [
                "signature_field",
                "date_field"
              ],
              "contact": {
                "company": "Example Corp",
                "email": "newrecipient@example.com",
                "name": "Jane Doe",
                "title": "CEO"
              },
              "role": "signer"
            }
          ],
          "reminder_schedule": "weekly",
          "signing_order_enabled": false,
          "template_id": "550e8400-e29b-41d4-a716-446655440000"
        },
        "properties": {
          "delivery_mode": {
            "description": "Delivery mode: 'embedded' (emails suppressed) or 'managed' (Agree sends emails)",
            "enum": [
              "embedded",
              "managed"
            ],
            "type": "string"
          },
          "ends_at": {
            "description": "When the agreement ends (ISO8601 format)",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "field_values": {
            "additionalProperties": {
              "$ref": "#/components/schemas/RichTextValue"
            },
            "description": "Map of field_id to value for prefilling fields and template variables. Values can be a legacy string or a typed rich text object. If `content_type` is omitted in object form, `plaintext` is used by default.",
            "type": "object"
          },
          "invoice": {
            "description": "Invoice to create with this agreement. Creates an invoice template associated with the agreement.\n\nOne of `billing_contact`, `contact_id`, or `customer_id` is required when providing an invoice.\nEither `amount`/`currency` or `line_items` is required (if line_items are provided, amount is calculated from them).\n\nIMPORTANT: `amount` and `unit_price.amount` are INTEGERS in the smallest currency unit (cents for USD), NOT dollars. A $150 invoice is `amount: 15000`. Multiply dollar amounts by 100.\n",
            "nullable": true,
            "properties": {
              "amount": {
                "description": "Integer invoice amount in the smallest currency unit (cents for USD). $1.00 = 100, $15.00 = 1500, $150.00 = 15000. Do NOT pass dollars. Required if line_items is not provided.",
                "nullable": true,
                "type": "integer"
              },
              "automatic_delivery": {
                "default": true,
                "description": "Send invoice automatically",
                "nullable": true,
                "type": "boolean"
              },
              "automatic_payment": {
                "default": false,
                "description": "Enable automatic payment",
                "nullable": true,
                "type": "boolean"
              },
              "billing_contact": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/BillingContact"
                  }
                ],
                "description": "Billing contact information. Creates or updates a contact.\nCannot be used together with contact_id or customer_id.\n",
                "nullable": true
              },
              "contact_id": {
                "description": "ID of an existing contact to use for this invoice.\nCannot be used together with billing_contact or customer_id.\n",
                "format": "uuid",
                "nullable": true,
                "type": "string"
              },
              "currency": {
                "description": "ISO 4217 currency code (e.g., USD). Required if line_items is not provided.",
                "nullable": true,
                "type": "string"
              },
              "customer_id": {
                "description": "ID of an existing customer (business entity) to bill; the recipient is the customer's primary contact. Requires the `customers` feature to be enabled for the organization \u2014 discover ids via the customers endpoints. Cannot be used together with billing_contact or contact_id.\n",
                "format": "uuid",
                "nullable": true,
                "type": "string"
              },
              "forward_payment_enabled": {
                "default": true,
                "description": "Enable forward payment",
                "nullable": true,
                "type": "boolean"
              },
              "issue_terms_date": {
                "description": "Specific date to schedule the invoice (when issue_terms_type is 'date')",
                "format": "date-time",
                "nullable": true,
                "type": "string"
              },
              "issue_terms_days": {
                "description": "Number of days from now to schedule the invoice (when issue_terms_type is 'net')",
                "nullable": true,
                "type": "integer"
              },
              "issue_terms_type": {
                "description": "Issue terms type - determines when the invoice is scheduled to be sent.\n- 'net': Schedule based on days from now (use issue_terms_days)\n- 'date': Schedule for a specific date (use issue_terms_date)\nDefaults to 'net' if not provided.\n",
                "enum": [
                  "net",
                  "date"
                ],
                "nullable": true,
                "type": "string"
              },
              "line_items": {
                "description": "Invoice line items. If provided, amount is calculated from line items.",
                "items": {
                  "properties": {
                    "description": {
                      "description": "Line item description",
                      "type": "string"
                    },
                    "quantity": {
                      "description": "Quantity",
                      "type": "number"
                    },
                    "unit_price": {
                      "description": "Per-unit price. `amount` is an INTEGER in the smallest currency unit (cents for USD), not dollars. $25.00 = 2500.",
                      "properties": {
                        "amount": {
                          "description": "Integer price in the smallest currency unit (cents for USD). $25.00 = 2500, $1.00 = 100. Do NOT pass dollars.",
                          "type": "integer"
                        },
                        "currency": {
                          "description": "ISO 4217 currency code",
                          "example": "USD",
                          "type": "string"
                        }
                      },
                      "required": [
                        "amount",
                        "currency"
                      ],
                      "type": "object"
                    }
                  },
                  "required": [
                    "description",
                    "quantity",
                    "unit_price"
                  ],
                  "type": "object"
                },
                "type": "array"
              },
              "memo": {
                "description": "Invoice memo",
                "maxLength": 255,
                "nullable": true,
                "type": "string"
              },
              "payment_direction": {
                "description": "Payment direction",
                "enum": [
                  "payable",
                  "receivable"
                ],
                "nullable": true,
                "type": "string"
              },
              "payment_methods": {
                "description": "Accepted payment methods",
                "items": {
                  "enum": [
                    "ach",
                    "card",
                    "wire"
                  ],
                  "type": "string"
                },
                "type": "array"
              },
              "payment_terms_date": {
                "description": "Specific payment due date (when payment_terms_type is 'date')",
                "format": "date-time",
                "nullable": true,
                "type": "string"
              },
              "payment_terms_days": {
                "description": "Payment terms days",
                "nullable": true,
                "type": "integer"
              },
              "payment_terms_type": {
                "description": "Payment terms type",
                "enum": [
                  "net",
                  "date"
                ],
                "nullable": true,
                "type": "string"
              },
              "recurring_end_count": {
                "description": "Number of occurrences when recurring_end_type is count",
                "nullable": true,
                "type": "integer"
              },
              "recurring_end_date": {
                "description": "End date when recurring_end_type is date",
                "format": "date-time",
                "nullable": true,
                "type": "string"
              },
              "recurring_end_type": {
                "default": "never",
                "description": "How the recurring invoice ends",
                "enum": [
                  "never",
                  "date",
                  "count"
                ],
                "nullable": true,
                "type": "string"
              },
              "reminder_schedule": {
                "description": "Reminder schedule for the invoice",
                "enum": [
                  "none",
                  "daily",
                  "weekly",
                  "monthly"
                ],
                "nullable": true,
                "type": "string"
              },
              "repeat_frequency": {
                "description": "How often to repeat (e.g., 1 for every week/month)",
                "nullable": true,
                "type": "integer"
              },
              "repeat_on_day": {
                "description": "Day of month (1-31) when repeat_on_type is day_of_month",
                "nullable": true,
                "type": "integer"
              },
              "repeat_on_type": {
                "description": "For monthly: repeat on day of month or day of week",
                "enum": [
                  "day_of_month",
                  "day_of_week"
                ],
                "nullable": true,
                "type": "string"
              },
              "repeat_on_week": {
                "description": "Week position (1-5, 5=last) when repeat_on_type is day_of_week",
                "nullable": true,
                "type": "integer"
              },
              "repeat_on_weekday": {
                "description": "Day of week when repeat_unit is week or repeat_on_type is day_of_week",
                "enum": [
                  "monday",
                  "tuesday",
                  "wednesday",
                  "thursday",
                  "friday",
                  "saturday",
                  "sunday"
                ],
                "nullable": true,
                "type": "string"
              },
              "repeat_unit": {
                "description": "Repeat unit",
                "enum": [
                  "week",
                  "month"
                ],
                "nullable": true,
                "type": "string"
              },
              "sales_tax_percentage": {
                "description": "Sales tax percentage",
                "nullable": true,
                "type": "number"
              },
              "schedule": {
                "default": "none",
                "description": "Schedule type for recurring invoices",
                "enum": [
                  "none",
                  "custom"
                ],
                "nullable": true,
                "type": "string"
              }
            },
            "type": "object"
          },
          "name": {
            "description": "Agreement name",
            "type": "string"
          },
          "payments_enabled": {
            "description": "Whether payments are enabled for this agreement",
            "type": "boolean"
          },
          "recipients": {
            "description": "List of recipients with their assigned fields.\n\n**Important:** Exactly one recipient must have the `owner` role. This must be the account holder (the person whose API key is being used). Use GET /api/v1/contacts to find your Contact ID.\n\nEach recipient must provide either `contact_id` or `contact` (but not both).\n- `contact_id`: Reference an existing contact\n- `contact`: Create or update a contact with email and name (required), and optionally company and title\n\nUse `assigned_fields` to assign specific fields (by field name) to each recipient. Fields not assigned will default to the owner recipient.\n",
            "items": {
              "properties": {
                "assigned_fields": {
                  "description": "List of field names to assign to this recipient",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "contact": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/RecipientContact"
                    }
                  ],
                  "description": "Contact data to create or update a contact"
                },
                "contact_id": {
                  "description": "Contact ID of the recipient",
                  "format": "uuid",
                  "type": "string"
                },
                "role": {
                  "description": "Role of the recipient.\n\n**Important:** Exactly one recipient must have the `owner` role. This must be the account holder (the person whose API key is being used). The `owner` role is converted internally to `signer` or `viewer` based on assigned fields.\n",
                  "enum": [
                    "owner",
                    "signer",
                    "viewer",
                    "payee"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "role"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "reminder_schedule": {
            "description": "Reminder schedule frequency (only valid for managed mode)",
            "enum": [
              "none",
              "daily",
              "weekly",
              "monthly"
            ],
            "nullable": true,
            "type": "string"
          },
          "signing_order": {
            "description": "List of contact IDs in signing order",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "type": "array"
          },
          "signing_order_enabled": {
            "description": "Whether signing order is enabled",
            "type": "boolean"
          },
          "starts_at": {
            "description": "When the agreement starts (ISO8601 format)",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "template_id": {
            "description": "Template ID to create agreement from (required)",
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "template_id",
          "name"
        ],
        "title": "AgreementCreateParams",
        "type": "object"
      },
      "AgreementParams": {
        "description": "Parameters for updating an agreement",
        "example": {
          "agreement": {
            "ends_at": "2024-12-31T23:59:59Z",
            "forward_signature_enabled": true,
            "name": "Service Agreement",
            "payments_enabled": false,
            "recipients": [
              {
                "contact_id": "770e8400-e29b-41d4-a716-446655440000",
                "role": "signer"
              },
              {
                "contact": {
                  "company": "Example Corp",
                  "email": "newrecipient@example.com",
                  "name": "Jane Doe",
                  "title": "CEO"
                },
                "role": "viewer"
              }
            ],
            "reminder_schedule": "weekly",
            "signing_order": [],
            "signing_order_enabled": false,
            "starts_at": "2024-01-01T00:00:00Z"
          }
        },
        "properties": {
          "agreement": {
            "properties": {
              "current_signing_order": {
                "description": "Current position in the signing order",
                "nullable": true,
                "type": "integer"
              },
              "ends_at": {
                "description": "When the agreement ends (ISO8601 format)",
                "format": "date-time",
                "nullable": true,
                "type": "string"
              },
              "field_values": {
                "additionalProperties": {
                  "$ref": "#/components/schemas/RichTextValue"
                },
                "description": "Map of field_id to value for prefilling fields and template variables. Values can be a legacy string or a typed rich text object. If `content_type` is omitted in object form, `plaintext` is used by default.",
                "type": "object"
              },
              "forward_signature_enabled": {
                "description": "Whether forward signature is enabled",
                "type": "boolean"
              },
              "last_reminder_sent_at": {
                "description": "When the last reminder was sent (ISO8601 format)",
                "format": "date-time",
                "nullable": true,
                "type": "string"
              },
              "name": {
                "description": "Agreement name",
                "type": "string"
              },
              "payments_enabled": {
                "description": "Whether payments are enabled for this agreement",
                "type": "boolean"
              },
              "recipients": {
                "description": "List of recipients with their assigned fields (replaces existing recipients).\n\nEach recipient must provide either `contact_id` or `contact` (but not both).\n- `contact_id`: Reference an existing contact\n- `contact`: Create or update a contact with email and name (required), and optionally company and title\n",
                "items": {
                  "properties": {
                    "assigned_fields": {
                      "description": "List of field names to assign to this recipient",
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    },
                    "contact": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/RecipientContact"
                        }
                      ],
                      "description": "Contact data to create or update a contact"
                    },
                    "contact_id": {
                      "description": "Contact ID of the recipient",
                      "format": "uuid",
                      "type": "string"
                    },
                    "role": {
                      "description": "Role of the recipient",
                      "enum": [
                        "signer",
                        "viewer",
                        "payee"
                      ],
                      "type": "string"
                    }
                  },
                  "required": [
                    "role"
                  ],
                  "type": "object"
                },
                "type": "array"
              },
              "reminder_schedule": {
                "description": "Reminder schedule frequency",
                "enum": [
                  "none",
                  "daily",
                  "weekly",
                  "monthly"
                ],
                "nullable": true,
                "type": "string"
              },
              "reminder_scheduled_at": {
                "description": "When the next reminder is scheduled (ISO8601 format)",
                "format": "date-time",
                "nullable": true,
                "type": "string"
              },
              "signing_order": {
                "description": "Recipient or template role IDs while drafting; recipient IDs after send",
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "signing_order_enabled": {
                "description": "Whether signing order is enabled",
                "type": "boolean"
              },
              "starts_at": {
                "description": "When the agreement starts (ISO8601 format)",
                "format": "date-time",
                "nullable": true,
                "type": "string"
              }
            },
            "required": [
              "name",
              "starts_at"
            ],
            "type": "object"
          }
        },
        "required": [
          "agreement"
        ],
        "title": "AgreementParams",
        "type": "object"
      },
      "AgreementPdfPendingResponse": {
        "description": "Agreement PDF generation is in progress; use Retry-After and retry the same URL",
        "properties": {
          "data": {
            "properties": {
              "message": {
                "type": "string"
              },
              "retry_after_seconds": {
                "description": "Same value as the Retry-After response header (seconds)",
                "type": "integer"
              },
              "status": {
                "enum": [
                  "pending"
                ],
                "type": "string"
              }
            },
            "required": [
              "status",
              "retry_after_seconds",
              "message"
            ],
            "type": "object"
          }
        },
        "required": [
          "data"
        ],
        "title": "AgreementPdfPendingResponse",
        "type": "object"
      },
      "AgreementResponse": {
        "description": "Response containing a single agreement",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/Agreement"
          }
        },
        "required": [
          "data"
        ],
        "title": "AgreementResponse",
        "type": "object"
      },
      "AgreementSendParams": {
        "description": "Parameters for sending an agreement",
        "example": {
          "delivery_method": "email",
          "delivery_mode": "managed",
          "message": "Please review and sign this agreement",
          "reminder_schedule": "weekly"
        },
        "properties": {
          "delivery_method": {
            "description": "Delivery method (only valid for managed mode)",
            "enum": [
              "email"
            ],
            "type": "string"
          },
          "delivery_mode": {
            "description": "Delivery mode: 'embedded' (emails suppressed) or 'managed' (Agree sends emails)",
            "enum": [
              "embedded",
              "managed"
            ],
            "type": "string"
          },
          "message": {
            "description": "Optional message to include in email (only valid for managed mode)",
            "nullable": true,
            "type": "string"
          },
          "reminder_schedule": {
            "description": "Reminder schedule override (only valid for managed mode)",
            "enum": [
              "none",
              "daily",
              "weekly",
              "monthly"
            ],
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "delivery_mode"
        ],
        "title": "AgreementSendParams",
        "type": "object"
      },
      "AgreementsResponse": {
        "description": "Response containing a list of agreements",
        "properties": {
          "data": {
            "description": "List of agreements",
            "items": {
              "$ref": "#/

# --- truncated at 32 KB (250 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/agree-com/refs/heads/main/openapi/agree-com-api-openapi.json