Skip to main content
GET
/
v0
/
agreements
cURL
curl --request GET \
  --url https://test-api.shodai.network/v0/agreements \
  --header 'X-API-Key: <api-key>'
[
  {
    "id": "agr_123",
    "address": "0x3333333333333333333333333333333333333333",
    "chainId": 59141,
    "displayName": "Advisory Retainer",
    "status": "Deployed",
    "json": {
      "metadata": {
        "templateId": "did:template:service-retainer-v0-1",
        "name": "Service Retainer"
      },
      "variables": {
        "serviceProviderRepresentative": {
          "type": "address",
          "subtype": "participant",
          "validation": {
            "required": true
          }
        },
        "clientRepresentative": {
          "type": "address",
          "subtype": "participant",
          "validation": {
            "required": true
          }
        },
        "retainerTitle": {
          "type": "string",
          "validation": {
            "required": true
          }
        }
      },
      "content": {
        "type": "md",
        "data": "# ${variables.retainerTitle}\n\nService agreement between provider and client."
      },
      "execution": {
        "initialize": {
          "initialState": "AWAITING_PAYMENT",
          "data": {}
        },
        "states": {
          "AWAITING_PAYMENT": {
            "description": "Waiting for initial payment proof."
          },
          "WORK_IN_PROGRESS": {
            "description": "Provider is performing the service."
          }
        },
        "inputs": {
          "submitInitialPaymentProof": {
            "issuer": {
              "type": "participant",
              "variable": "clientRepresentative"
            },
            "schema": {
              "paymentReference": {
                "type": "string",
                "validation": {
                  "required": true
                }
              }
            }
          }
        },
        "transitions": [
          {
            "from": "AWAITING_PAYMENT",
            "to": "WORK_IN_PROGRESS",
            "conditions": [
              {
                "input": "submitInitialPaymentProof"
              }
            ]
          }
        ]
      }
    },
    "state": "AWAITING_PAYMENT",
    "variables": {
      "serviceProviderRepresentative": "0x1111111111111111111111111111111111111111",
      "clientRepresentative": "0x2222222222222222222222222222222222222222",
      "retainerTitle": "Advisory Retainer"
    },
    "owner": "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
    "contributors": [
      "0x1111111111111111111111111111111111111111",
      "0x2222222222222222222222222222222222222222"
    ],
    "participants": [
      {
        "variableKey": "serviceProviderRepresentative",
        "walletAddress": "0x1111111111111111111111111111111111111111"
      },
      {
        "variableKey": "clientRepresentative",
        "walletAddress": "0x2222222222222222222222222222222222222222",
        "email": "client@example.com"
      }
    ],
    "observers": [
      "legal@example.com"
    ],
    "createdAt": "2026-04-27T16:00:00.000Z",
    "updatedAt": "2026-04-27T16:05:00.000Z"
  }
]

Documentation Index

Fetch the complete documentation index at: https://docs.shodai.network/llms.txt

Use this file to discover all available pages before exploring further.

Use client.listAgreements(...) when integrating with the TypeScript SDK.

Authorizations

X-API-Key
string
header
default:YOUR_API_KEY
required

API key. Send this value in the X-API-Key request header.

Query Parameters

status
enum<string>

Optional agreement status filter.

Available options:
Draft,
Deployed

Response

Agreement records visible to the current API key.

id
string
required

Agreement record ID.

chainId
integer
required

Chain ID for the deployed agreement.

status
enum<string>
required

Agreement record status.

Available options:
Draft,
Deployed
json
object
required

Authored agreement JSON.

updatedAt
string<date-time>
required

Record update timestamp.

createdAt
string<date-time>
required

Record creation timestamp.

displayName
string
required

Human-readable record label.

address
string

Deployed agreement address, when deployed.

lastInputId
string

Most recent submitted input ID, when available.

lastInputAt
string<date-time>

Time of the most recent submitted input, when available.

state
string

Cached agreement state, when available.

variables
object

Current stored agreement values.

owner
string

Wallet address associated with hosted record ownership.

docUri
string

Optional document URI associated with the deployed agreement.

contributors
string[]

Wallet addresses associated with agreement activity.

participants
object[]

Participants associated with agreement participant variables.

observers
string<email>[]

Observer email addresses associated with the agreement record.

onChain
object

On-chain agreement data when available.