Every API here is available over the APIs.io API and to AI agents over MCP.
{
"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