Skip to main content

Working with Juro's API

Integrate Juro's API with your systems to automatically generate, populate, update and send contracts.

Written by Tom Langley
Updated yesterday

πŸ’‘ For developers: please see our API set-up documentation here.

Requirements to integrate with Juro's API πŸ’»


Our API provides the bandwidth to build an integration as custom as you need it to be. Before getting started, you should confirm the following:

  • Your Juro subscription includes API access (for more information about this, please reach out to your Juro Customer Success Manager).

  • You have the internal development resources available to build, set up and manage the integration: this is a service we offer from our side.

Setting up the connection ⛓️


For developers: please see our API set-up documentation here.

To connect Juro with your application via our API:

1. Go to the Integrations tab in your Juro Settings and click the API panel.

2. Click Generate API key.

3. Copy the link in the API Key field and paste it into the relevant section of your system/application.

There may be a designated place to put this in your other application, or it may be copied and pasted into your other system's code.

What actions can I automate with the Juro API? πŸšͺ


Using Juro's API, you can automate your contract creation process by setting up Juro events to trigger responses in your system.

From your own system, you can automate:

Contract creation

  • Set an event to automatically trigger contract creation in Juro

  • Use a field/identifier to auto-select a template

Data pre-filling

  • Map fields in your system to Juro fields and set a bi-directional sync

  • Map line items from your system dynamically to Juro tables, and have rows dynamically create and populate

Contract sharing

  • Send contracts for signature internally and externally automatically.

PDF storage

  • Download a PDF of the contract to store in your system.

Here's a summary of the Juro API's additional capabilities:

Question

Answer

Notes

Can you create a contract?

Yes

You can't currently edit the body of a contract.

Can you create a template?

No

You can't currently edit the body of a template.

Can you map fields and pass through field data?

Yes

Can you set a 2-way sync of fields?

Yes

Can you create and map dynamic table line items?

Yes

Can you upload a .PDF/file via the API?

Yes

This is available when you upload a contract from another system into Juro as a one-off action.

Can you map an approver?

No

You can't currently send a contract for approval automatically.

Can you map signatories?
​

Yes
​

Both internal and external signatories.

You can also pass a signing URL (internal/external) from Juro to your application?

Can you automatically send the contract for signing?

Yes

Can you pass a reviewer link from Juro to the application?

Yes

Can you download the contract as a PDF?

Yes

Can you download the PDF before it is fully signed?

Yes

Can you pull a list of template IDs?

Yes

GET /v3/templates

Can you pull a list of contract IDs?

Yes

GET /xapi/v3/contracts

Contract creation

  • Get notified when a contract has been created and trigger an update/notification in your system

Contract edited

  • Get notified when a contract has been updated and trigger an update/notification in your system

Contract sent

  • Get notified when a contract has been sent for approval or signature and trigger an update/notification in your system

Contract viewed

  • Get notified when a contract has been viewed and trigger an update/notification in your system

Contract commented

  • Get notified when a contract has been commented on and trigger an update/notification in your system with details on who commented, when and the content of the comment

Contract approved/rejected

  • Get notified when a contract has been approved/rejected and trigger an update/notification in your system

Contract signed

  • Get notified when a contract has been signed by a party and trigger an update/notification in your system

Contract fully signed

  • Know when a contract has been fully signed/a PDF has been automatically generated and sent out to the signatories to trigger an update/notification in your system

Retrieving a list of contract IDs πŸͺƒ


Step 1 β€” Get your API key
​
β€’ In Juro, go to Settings β†’ Integrations β†’ API & webhooks β†’ API to find your API key
​
​Step 2 β€” Retrieve all contract IDs
​
β€’ Call: GET https://api.juro.com/v3/contracts?skip=0&limit=200
β€’ The response returns a total count and a contracts array (each with an id, name, createdDate, updatedDate, teamId, and template)
β€’ Page through by incrementing skip by 200 each time (e.g. ?skip=0&limit=200, then ?skip=200&limit=200, etc.) until you've collected all IDs
β€’ The maximum limit is 200; if not specified it defaults to 50
β€’ Optional filters: teamIds (comma-separated workspace IDs), templateId (filter by template), updatedBefore (Unix timestamp in seconds β€” useful for date-range filtering)
​
​Step 3 β€” Fetch smart fields for each contract
​
β€’ For each contract ID from Step 2, call: GET https://api.juro.com/v3/contracts/{id}
β€’ The response includes a fields array β€” these are the smart fields, each containing:
– title β€” field name
– type β€” field type (e.g. text, date, choice)
– value β€” the current value
– uid β€” unique field identifier
– For choice-type fields: a choices array of possible values
β€’ The response also includes questions (Q&A fields) and tables (extracted from the document body), which may be useful for data sync
​
​Step 4 (optional) β€” Set up incremental syncs
​
β€’ For the initial run, page through all contracts (Steps 2–3 above)
β€’ For subsequent syncs, use the updatedSince parameter to only pull contracts modified since your last sync:
​ GET https://api.juro.com/v3/contracts?updatedSince={unix_timestamp_in_seconds}&limit=200
β€’ This dramatically reduces the number of API calls needed for each sync
​
​Step 5 (optional) β€” Add webhooks for real-time updates
​
β€’ Register a webhook via POST https://api.juro.com/v3/webhooks to receive notifications when contracts are edited, signed, etc.
β€’ The webhook creation request requires a teamId (the workspace to register for), along with title, url, isEnabled, auth, and events
β€’ Available event types include: contract.created, contract.signed, contract.edit, contract.deleted, contract.pdf_generated, contract.viewed, contract.commented, contract.comment.deleted, contract.sent_link_to_counterparty, contract.approval_requested, contract.approval_denied, contract.approval_process_finished, contract.approval_request_cancelled
β€’ This can supplement the batch sync so your data warehouse stays closer to real-time
​

πŸ’‘ API usage is governed by your plan's quota. For the initial backfill (which may involve many calls), it's worth confirming your quota is sufficient β€” reach out to your Juro contact if you hit rate limits during the first full sync.

Seeing errors πŸ›


Any errors will show via the API within your system (we have error descriptions in our API docs here).

Org Admins can also view errors in the Juro API. To do this:

1. Go to the Integrations tab in your Juro Settings and click the Open integration log.

2. You will now see a log of errors with the newest ones highlighted in red. To mark all errors as seen, click Mark all as red.

πŸ’β€β™€οΈ As always, our Support Team is happy to help you with anything further if needed. Start a chat with us right here by clicking the Intercom button in the bottom-right-hand corner of this page.

Alternatively, you can email us at support@juro.com πŸš€

Did this answer your question?