Create an Obligation
Changed onCreate an obligation. This endpoint has two modes.
Standalone obligation — omit sourceObligationId. Creates an obligation on the contract given by parentId. Do not send status, dueDate, assigneeUserId, or description; those apply only to instances (see below).
Triggered instance — set sourceObligationId to an existing source obligation that is configured for triggered occurrences. This records a new occurrence of that obligation (for example, when its triggering condition is met). In this mode status, dueDate, and assigneeUserId are required; description is optional; parentId is optional and, if sent, must match the source obligation's contract; and obligationTypeKey may be omitted (it is inherited from the source obligation, and must match it if sent). Creating instances requires triggered obligations to be enabled for your account.
An obligation's recurrence cadence is configured in the Ironclad app and cannot be set through this API. Instances created here are always TRIGGERED occurrences; recurring occurrences are generated automatically by Ironclad. See the ObligationModel schema for the full source/occurrence model.
OAuth Scope required: public.obligations.createObligations
Request
- Base URLhttps://ironcladapp.com/public/api/v1
- URLhttps://ironcladapp.com/public/api/v1/obligations
- AuthAPI key in header Authorization and OAuth 2Authorization code: https://ironcladapp.com/oauth/authorizeClient credentialsToken URL: https://ironcladapp.com/oauth/token scopes: public.obligations.createObligations
Headers
Denotes the actor of the request. When used, the API will take into account this user's permissions and access. This or x-as-user-id is required when the associated token was produced from the Client Credentials grant or with legacy bearer tokens on select endpoints. A token produced from the Authorization Code grant (which is already scoped to a user) may also use this header to act as a different user in the same company, provided the token carries the identity.users.impersonate scope and the token's own user has been granted the API User Impersonation permission. A request that sends this header without both never acts as the named user; depending on the company's configuration it either proceeds as the token's own user or is rejected with a 403. More information about permissions.
Denotes the actor of the request. When used, the API will take into account this user's permissions and access. This or x-as-user-email is required when the associated token was produced from the Client Credentials grant or with legacy bearer tokens on select endpoints. A token produced from the Authorization Code grant (which is already scoped to a user) may also use this header to act as a different user in the same company, provided the token carries the identity.users.impersonate scope and the token's own user has been granted the API User Impersonation permission. A request that sends this header without both never acts as the named user; depending on the company's configuration it either proceeds as the token's own user or is rejected with a 403. More information about permissions.
Request body
Response
201
Example response
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"ironcladId": "OB-1",
"name": "Obligation XYZ",
"lastUpdated": "2021-01-01T00:00:00Z",
"namedTypeIds": [
"eda20988-6b99-404b-99dc-866b84b63883"
],
"parentReadableId": "IC-1",
"parentRecordName": "Parent Record",
"isActive": true,
"status": "IN_PROGRESS",
"description": "Deliver the signed SLA report to the counterparty.",
"dueDate": "2026-08-01",
"assigneeUserId": "5f9b1b3b1c9d440000a1b2c3",
"completedAt": "2026-07-15T12:00:00.000Z",
"sourceObligationId": "123e4567-e89b-12d3-a456-426614174000",
"sourceRelationshipType": "TRIGGERED",
"triggerSource": "API",
"obligationType": "SOURCE",
"cadence": "RECURRING"
}Changes
- info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status
- info