# Ironclad Clickwrap API Documentation Documentation
> The Ironclad Clickwrap API allows you, the developers, to embed contract acceptance, esignature, and more into your own websites and mobile apps.
## Guides
- [Introduction](https://clickwrap-developer.ironcladapp.com/docs/getting-started.md)
- [Ironclad Clickwrap Terminology](https://clickwrap-developer.ironcladapp.com/docs/common-data-structures-in-pactsafe.md)
- [Tutorials](https://clickwrap-developer.ironcladapp.com/docs/tutorials.md)
- [How to Add a Terms of Use Clickwrap to a Sign Up Page](https://clickwrap-developer.ironcladapp.com/docs/how-to-add-a-terms-of-use-clickwrap-to-a-sign-up-page.md): This step-by-step guide will teach you how to load a Terms of Use Agreement to a sign-up page.
- [How to Add a Terms of Use to a Checkout Page](https://clickwrap-developer.ironcladapp.com/docs/how-to-add-a-terms-of-use-clickwrap-to-a-checkout-page.md): This step-by-step guide will teach you how to load a Terms of Use Agreement to a checkout page.
- [How to Add a Clickwrap Group into a Marketo Form](https://clickwrap-developer.ironcladapp.com/docs/how-to-add-a-clickwrap-group-into-a-marketo-form.md): This step-by-step guide will teach you how to integrate Clickwrap tracking into your Marketo Form.
- [JavaScript Library](https://clickwrap-developer.ironcladapp.com/docs/javascript-library-getting-started.md)
- [General Considerations](https://clickwrap-developer.ironcladapp.com/docs/javascript-sdk-considerations.md): Before getting started with implementing the Ironclad Clickwrap JavaScript SDK, you may want to consider some of the following topics outlined on this page.
- [Loading a Clickwrap 101](https://clickwrap-developer.ironcladapp.com/docs/loading-a-clickwrap-101.md)
- [Manually Sending Acceptance](https://clickwrap-developer.ironcladapp.com/docs/manually-sending-acceptance.md)
- [Dynamically Render Contract Data](https://clickwrap-developer.ironcladapp.com/docs/how-to-use-dynamic-contracts-with-the-javascript-library.md)
- [Filtering Templates - Virtual Groups](https://clickwrap-developer.ironcladapp.com/docs/dynamic-groups-and-how-to-use-them.md)
- [Sending Clickwrap Data Server-side](https://clickwrap-developer.ironcladapp.com/docs/using-psjs-with-back-end-api-calls.md): You may want to use PS.js to render the contracts on the page, populate a contract with app data, and more—but send the API call on the back-end. Here's how to do it!
- [Checking Acceptance on Login](https://clickwrap-developer.ironcladapp.com/docs/prompting-your-user-on-login.md)
- [Adding a Signature to an Embedded Contract](https://clickwrap-developer.ironcladapp.com/docs/adding-a-signature-to-embedded-contract.md): How to add a stylized signature or initials block into a document itself
- [Get Acceptance Record Download URL](https://clickwrap-developer.ironcladapp.com/docs/how-to-get-a-download-url-for-a-pdf-record-after-acceptance.md)
- [Using Force Scroll](https://clickwrap-developer.ironcladapp.com/docs/force-scroll-in-group-settings-and-how-to-handle-it-in-your-code.md)
- [Using Embedded Forms](https://clickwrap-developer.ironcladapp.com/docs/using-embedded-forms-in-groups.md)
- [Add a Snapshot Location to an Agreed Event](https://clickwrap-developer.ironcladapp.com/docs/add-a-snapshot-location-to-an-agreed-event.md)
- [Debugging with PS.js](https://clickwrap-developer.ironcladapp.com/docs/debugging-the-javascript-in-pactsafe.md)
- [Troubleshooting ps.js API Calls](https://clickwrap-developer.ironcladapp.com/docs/troubleshooting-verifying-calls-are-being-made.md)
- [JavaScript Library Reference Docs](https://clickwrap-developer.ironcladapp.com/docs/javascript-library-reference-docs.md)
- [Setting up the JavaScript Snippet](https://clickwrap-developer.ironcladapp.com/docs/setting-up-the-javascript-snippet.md)
- [Global_ps Object](https://clickwrap-developer.ironcladapp.com/docs/global_ps-object.md)
- [Site Object](https://clickwrap-developer.ironcladapp.com/docs/site-object.md)
- [Triggered Events](https://clickwrap-developer.ironcladapp.com/docs/triggered-events-1.md)
- [Actions](https://clickwrap-developer.ironcladapp.com/docs/actions.md)
- [ClickwrapGroup Object](https://clickwrap-developer.ironcladapp.com/docs/clickwrapgroup-object.md)
- [BrowsewrapGroup Object](https://clickwrap-developer.ironcladapp.com/docs/browsewrapgroup-object.md)
- [ParameterStore Object](https://clickwrap-developer.ironcladapp.com/docs/parameterstore-object.md)
- [GroupStore Object](https://clickwrap-developer.ironcladapp.com/docs/groupstore-object.md)
- [Signer Object](https://clickwrap-developer.ironcladapp.com/docs/signer-object.md)
- [DataObject](https://clickwrap-developer.ironcladapp.com/docs/dataobject.md)
- [Activity API](https://clickwrap-developer.ironcladapp.com/docs/activity-api.md)
- [Authentication (Activity API)](https://clickwrap-developer.ironcladapp.com/docs/authentication-2.md): Learn about how authentication works with the Activity API.
- [Sending Acceptance via Activity API](https://clickwrap-developer.ironcladapp.com/docs/tracking-acceptance-via-pactsafe-api.md)
- [Retrieve Last Contracts Signed by Signer](https://clickwrap-developer.ironcladapp.com/docs/retrieve-last-terms-signed-by-signer.md)
- [Check if Signer Has Accepted Latest Contracts](https://clickwrap-developer.ironcladapp.com/docs/check-if-signer-has-accepted-latest-contracts.md)
- [Retrieving Clickwrap HTML or Data](https://clickwrap-developer.ironcladapp.com/docs/retrieving-group-html-or-data.md)
- [Integrating Ironclad Clickwrap without PS.js](https://clickwrap-developer.ironcladapp.com/docs/integrating-clickwrap-without-psjs.md): The guide will cover a server-side setup for accepting clickwraps.
- [Snapshots for Native Apps](https://clickwrap-developer.ironcladapp.com/docs/snapshots-for-native-apps.md): This guide will cover setting up Snapshots for native apps.
- [REST API](https://clickwrap-developer.ironcladapp.com/docs/getting-started-rest-api.md)
- [Authentication (REST API)](https://clickwrap-developer.ironcladapp.com/docs/getting-your-access-token.md): Learn how to authenticate with the REST API by generating and using an access token.
- [Overview](https://clickwrap-developer.ironcladapp.com/docs/sdk-overview.md)
- [React SDK](https://clickwrap-developer.ironcladapp.com/docs/react-sdk.md)
- [Angular SDK](https://clickwrap-developer.ironcladapp.com/docs/angular-sdk.md)
- [Java SDK](https://clickwrap-developer.ironcladapp.com/docs/java-sdk.md)
- [iOS SDK](https://clickwrap-developer.ironcladapp.com/docs/ios-sdk.md)
- [Android SDK](https://clickwrap-developer.ironcladapp.com/docs/android-sdk.md)
- [Salesforce Integration](https://clickwrap-developer.ironcladapp.com/docs/clickwrap-for-salesforce.md)
- [Salesforce Integration (via Zapier)](https://clickwrap-developer.ironcladapp.com/docs/salesforce-integration-via-zapier.md)
- [Salesforce Integration (via Salesforce Apex)](https://clickwrap-developer.ironcladapp.com/docs/salesforce-integration-via-salesforce-apex.md)
- [Integrating Ironclad Clickwrap with Zapier](https://clickwrap-developer.ironcladapp.com/docs/integrating-pactsafe-with-zapier.md)
- [Integrating your own email or SMS provider](https://clickwrap-developer.ironcladapp.com/docs/integrating-your-own-email-or-sms-provider.md): Don't want to use our emails or SMS messages? Simply set up a new integration to configure using your own.
- [Getting Started with Webhooks](https://clickwrap-developer.ironcladapp.com/docs/working-with-ironclad-webhooks.md)
- [Webhook Events + Payload Examples](https://clickwrap-developer.ironcladapp.com/docs/webhook-events.md)
- [Retrieving Activity Data in Bulk](https://clickwrap-developer.ironcladapp.com/docs/retrieving-data-in-bulk.md)
## API Reference
- [Snapshots](https://clickwrap-developer.ironcladapp.com/reference/snapshots.md)
- [Get Snapshot locations](https://clickwrap-developer.ironcladapp.com/reference/get_locations.md): Returns an array of Snapshot Locations
- [Create a new Snapshot location](https://clickwrap-developer.ironcladapp.com/reference/post_locations.md): Requires **manage** permissions for Snapshots. A Snapshot Location can be either a `Mobile` or `Web` location depending on the `location_type` body parameter
- [Get a Snapshot location.](https://clickwrap-developer.ironcladapp.com/reference/get_locations-id.md)
- [Update a Snapshot location](https://clickwrap-developer.ironcladapp.com/reference/patch_locations-id.md): Requires **manage** permissions for Snapshots. `key` can only be changed if the Snapshot Locaiton is in the `draft` (unpublished) state
- [Delete a Snapshot location](https://clickwrap-developer.ironcladapp.com/reference/delete_locations-id.md): Requires **manage** permissions for Snapshots. Only allow for draft locations now
- [Clone a Snapshot location.](https://clickwrap-developer.ironcladapp.com/reference/post_locations-id-clone.md): Requires **manage** permissions for Snapshots.
- [Publish a Snapshot location](https://clickwrap-developer.ironcladapp.com/reference/post_locations-id-publish.md): Requires **manage** permissions for Snapshots. If your account has met its published location limit, this request will fail with a 400.
- [Archive a Snapshot location.](https://clickwrap-developer.ironcladapp.com/reference/post_locations-id-archive.md): Requires **manage** permissions for Snapshots. Only allow for published locations now.
- [Get a location's Snapshots.](https://clickwrap-developer.ironcladapp.com/reference/get_locations-id-snapshots.md): User requires **view** or **manage** permission.
- [Get a Snapshot.](https://clickwrap-developer.ironcladapp.com/reference/get_locations-id-snapshots-snapshotid.md): User requires **view** or **manage** permission.
- [Archives a Snapshot.](https://clickwrap-developer.ironcladapp.com/reference/post_locations-id-snapshots-snapshotid-archive.md): Requires **manage** permissions for Snapshots.
- [Get a Snapshot record for a specific Snapshot.](https://clickwrap-developer.ironcladapp.com/reference/get_locations-id-snapshots-snapshotid-record.md)
- [Upload a manually captured Snapshot.](https://clickwrap-developer.ironcladapp.com/reference/post_locations-id-snapshots-upload.md): Requires **upload** or **manage** permissions. `captured_time` defaults to now. If `captured_time` is supplied it must be in the past.
- [Trigger a Snapshot capture.](https://clickwrap-developer.ironcladapp.com/reference/post_locations-id-snapshots-capture.md): Requires **upload** or **manage** permissions.
- [Get a Snapshot record for a timestamp.](https://clickwrap-developer.ironcladapp.com/reference/get_locations-id-snapshots-record-timestamp.md)
- [Update Your Account](https://clickwrap-developer.ironcladapp.com/reference/update-your-account-details-1.md)
- [Retrieve Your Account](https://clickwrap-developer.ironcladapp.com/reference/get-your-account-details-1.md)
- [List all User Memberships](https://clickwrap-developer.ironcladapp.com/reference/retrieve-user-memberships-for-an-account-1.md)
- [Overview](https://clickwrap-developer.ironcladapp.com/reference/overview-copy.md)
- [Add a Site to Your Account](https://clickwrap-developer.ironcladapp.com/reference/add-a-site-to-your-account-1.md)
- [List all Activity by Signer ID](https://clickwrap-developer.ironcladapp.com/reference/get_sites-site-id-signers-id-signer-id-activity.md): List Clickwrap Actions within a Site by Signer ID
- [List all sites](https://clickwrap-developer.ironcladapp.com/reference/get_sites.md)
- [Retrieve a Site](https://clickwrap-developer.ironcladapp.com/reference/retrieve-a-site-1.md): A single Site with all of its properties and details.
- [Update a Site](https://clickwrap-developer.ironcladapp.com/reference/update-a-site-1.md)
- [Remove a Site](https://clickwrap-developer.ironcladapp.com/reference/remove-a-site-1.md)
- [List all Site Members](https://clickwrap-developer.ironcladapp.com/reference/retrieve-user-membership-for-a-site-1.md)
- [List all Site Memberships](https://clickwrap-developer.ironcladapp.com/reference/list-all-site-memberships-1.md): Site Memberships includes the permissions of the user on the Site.
- [Update a User's Permissions](https://clickwrap-developer.ironcladapp.com/reference/update-a-user-1.md)
- [List all Contracts in a Site](https://clickwrap-developer.ironcladapp.com/reference/get_sites-site-id-contract.md): Note: You can also pass a query string parameter `expand=published_version` to return the latest published version details for each Contract within your response.
- [Create a contract](https://clickwrap-developer.ironcladapp.com/reference/post_sites-site-id-contract.md): To create a Contract, you must specify a site ID, which will be part of the URL.
- [List Groups in a Site](https://clickwrap-developer.ironcladapp.com/reference/get_sites-site-id-groups.md): List Groups in the specified Site
- [Create a Group in a Site](https://clickwrap-developer.ironcladapp.com/reference/post_sites-site-id-groups.md): Create a Group in the specified Site
- [Create an Export](https://clickwrap-developer.ironcladapp.com/reference/post_extract-evidence.md): Creates an export job.
- [List all Export Jobs](https://clickwrap-developer.ironcladapp.com/reference/get_extract-evidence.md): Get all export jobs.
- [Get an Export Job by ID](https://clickwrap-developer.ironcladapp.com/reference/get_extract-evidence-id.md): Get an export job by id.
- [Retrieve Export Job URLs](https://clickwrap-developer.ironcladapp.com/reference/get_extract-evidence-id-urls.md): Retrieve the presigned urls of an export job if it is complete
- [List all Groups](https://clickwrap-developer.ironcladapp.com/reference/get_groups.md): List all groups available to the current user
- [Retrieve a Group by ID](https://clickwrap-developer.ironcladapp.com/reference/get_groups-group-id.md): Retrieve a Group by ID
- [Delete a Group](https://clickwrap-developer.ironcladapp.com/reference/delete_groups-group-id.md): Delete a Group by ID
- [Update a Group](https://clickwrap-developer.ironcladapp.com/reference/patch_groups-group-id.md): Update a Group by ID
- [Publish a Group](https://clickwrap-developer.ironcladapp.com/reference/post_groups-group-id-publish.md): Publish a Group by ID
- [Retrieve a Group by Key](https://clickwrap-developer.ironcladapp.com/reference/get_groups-key-group-key.md): Retrieve a Group by Key
- [List all Activity.](https://clickwrap-developer.ironcladapp.com/reference/get_activity.md): List Clickwrap Actions within the context of the User (across all Sites and Accounts)
- [Retrieve an Activity](https://clickwrap-developer.ironcladapp.com/reference/get_activity-activity-id.md): Retrieve a Clickwrap Action by ID. ###📘 Apply Site Settings Append `?expand=site` as a query parameter to the request to view and apply your site settings.
- [Retrieve PDF Record by ID](https://clickwrap-developer.ironcladapp.com/reference/get_activity-activity-id-record.md): Retrieve a PDF Record of a Clickwrap Action by Action ID
- [Retrieve PDF Record by Session ID](https://clickwrap-developer.ironcladapp.com/reference/get_activity-record-session-session-id.md): Retrieve a PDF of a Clickwrap Request or Signer Record by Session ID
- [List all Signers](https://clickwrap-developer.ironcladapp.com/reference/list-all-signers-1-1.md)
- [Retrieve a Signer by Signer ID](https://clickwrap-developer.ironcladapp.com/reference/retrieve-a-signer-by-signer-id-1.md)
- [Delete a Signer by Signer ID](https://clickwrap-developer.ironcladapp.com/reference/delete-a-signer-1.md)
- [Update a Signer by Signer ID](https://clickwrap-developer.ironcladapp.com/reference/update-a-signer-by-signer-id-1.md)
- [Delete activity performed by a signer](https://clickwrap-developer.ironcladapp.com/reference/delete-activity-by-signer-id.md)
- [List all Signers in a Site](https://clickwrap-developer.ironcladapp.com/reference/list-all-signers-2.md)
- [Upsert a Signer](https://clickwrap-developer.ironcladapp.com/reference/upsert-a-signer-1.md): You can pass **either** a single Signer JSON object or _an array_ of Signer objects with `additional_attributes` that will be attached to the Signer record in your account. Your response will be an Array of JSON objects corresponding to the data passed.
- [List all Contracts](https://clickwrap-developer.ironcladapp.com/reference/get_contracts.md)
- [Create and Publish a Contract](https://clickwrap-developer.ironcladapp.com/reference/post_contracts-publish.md): Note: Only supported for HTML contracts at this time.
- [Retrieve a Contract](https://clickwrap-developer.ironcladapp.com/reference/get_contracts-contract-id.md): Note: You can also pass a query string parameter `expand=latest_version` to return the latest version for each Agreement within your response. Returning the latest version contains an extra property with the Version object containing the latest Version.
- [Archive a Contract](https://clickwrap-developer.ironcladapp.com/reference/delete_contracts-contract-id.md): This will archive a Contract/Template from Ironclad Clickwrap. All associated versions and activities will also be archived.
- [Update a Contract](https://clickwrap-developer.ironcladapp.com/reference/patch_contracts-contract-id.md)
- [Restore the latest deprecated Version of a Contract](https://clickwrap-developer.ironcladapp.com/reference/post_contracts-contract-id-restore.md): Allow the customer to restore the latest deprecated Version to published status. Note: this operation would fail if there are actions tied to current published version.
- [List Versions of a Contract](https://clickwrap-developer.ironcladapp.com/reference/get_contracts-contract-id-versions.md)
- [Create a Version](https://clickwrap-developer.ironcladapp.com/reference/post_contracts-contract-id-versions.md): There are a couple of important things to note when creating a new Version for a Contract: * The latest Version must be published before creating a new Version using the publish endpoint. * There is a separate publish endpoint to use when publishing a Version: `/v1.1/contracts/{contract_id}/versions/{id}/publish` or `/v1.1/contracts/{contract_id}/versions/@latest/publish`. * To get the latest Version or which Version is published, simply tack on `@latest` or `@published` to your `GET` call to `/v1.1/contracts/{contract_id}/versions/`.
- [Retrieve a Version by Number](https://clickwrap-developer.ironcladapp.com/reference/get_contracts-contract-id-versions-version-number.md): Note: This is not by the id of the Version.
- [Update a Version by Number](https://clickwrap-developer.ironcladapp.com/reference/patch_contracts-contract-id-versions-version-number.md)
- [Publish a Version](https://clickwrap-developer.ironcladapp.com/reference/post_contracts-contract-id-versions-version-number-publish.md): To simplify the publishing of Versions via API, we've added a very simple route to call instead of including `{version_number}`. Simply `POST` to `/v1.1/contracts/{contract_id}/versions/@latest/publish`. Note: This is not publishing by the id of the Version. To publish a Version by id, call `/v1.1/versions/{version_id}/publish`.
- [Retrieve Latest Version](https://clickwrap-developer.ironcladapp.com/reference/get_contracts-contract-id-versions-latest.md): This Version may be in a published or draft state.
- [Retrieve Latest Published Version](https://clickwrap-developer.ironcladapp.com/reference/get_contracts-contract-id-versions-published.md): This will return the latest published Version of a Contract. Adding Dynamic Data: Append `/render` to the URL endpoint, switch to a `POST` call, and add your dynamic data within a `render_data` JSON param to utilize tokens and personalize your contracts.
- [Retrieve a Version](https://clickwrap-developer.ironcladapp.com/reference/get_versions-version-id.md)
- [Update a Version](https://clickwrap-developer.ironcladapp.com/reference/patch_versions-version-id.md): Before updating a Version, a new Version must be created in Draft status. More information on creating a version can be found [here](https://clickwrap-developer.ironcladapp.com/v0.0.1/reference/create-a-new-version). Specific Editable Properties: When a version is Published, only certain properties may be edited. Properties that are editable while published include `effective_time` and `effective_until_time`.
- [Publish a Version](https://clickwrap-developer.ironcladapp.com/reference/post_versions-version-id-publish.md)
- [Create Field on a Version](https://clickwrap-developer.ironcladapp.com/reference/post_versions-version-id-fields.md): Note: the Version must be in a draft state.
- [Delete Field on a Version](https://clickwrap-developer.ironcladapp.com/reference/delete_versions-version-id-fields-field-id.md)
## Recipes
- [JavaScript Library - Clickwrap - Loading a Clickwrap 101](https://clickwrap-developer.ironcladapp.com/recipes/javascript-library-clickwrap-loading-a-clickwrap-101.md)
- [JavaScript Library - Clickwrap - Loading a Group with Dynamic Contract Data](https://clickwrap-developer.ironcladapp.com/recipes/javascript-library-clickwrap-loading-a-group-with-dynamic-contract-data.md)
- [JavaScript Library - Clickwrap - Loading a Virtual Group](https://clickwrap-developer.ironcladapp.com/recipes/javascript-library-clickwrap-loading-a-virtual-group.md)
- [JavaScript Library - Clickwrap - Marketo Forms](https://clickwrap-developer.ironcladapp.com/recipes/javascript-library-clickwrap-marketo-forms.md)
- [JavaScript Library - Clickwrap - Sending Acceptance Manually](https://clickwrap-developer.ironcladapp.com/recipes/javascript-library-clickwrap-sending-acceptance-manually.md)
- [JavaScript Library - Clickwrap - Sending Custom Data](https://clickwrap-developer.ironcladapp.com/recipes/javascript-library-clickwrap-sending-custom-data.md)
## Pages
- [Embedding Legal Centers on your website](https://clickwrap-developer.ironcladapp.com/embedding-legal-centers-on-your-website.md)
- [Integrating Ironclad Clickwrap with your web content management system](https://clickwrap-developer.ironcladapp.com/integrating-pactsafe-with-your-web-content-management-system.md)
- [How to add a Terms of Use Clickwrap to a Sign Up Page](https://clickwrap-developer.ironcladapp.com/setting-up-your-clickwrap-sandbox.md)