Skip to main content
GET
/
api
/
v1
/
contracts
/
{contract_id}
/
status
Get Contract Status
curl --request GET \
  --url https://api.example.com/api/v1/contracts/{contract_id}/status
{
  "contract_id": "<string>",
  "status": "<string>",
  "created_at": "<string>",
  "confirmed_at": "<string>",
  "signatures": [
    {}
  ],
  "progress": {}
}
Retrieve detailed status information about a contract including signature progress, completion status, and timestamps. Useful for tracking contract workflow and monitoring party participation.

Path Parameters

contract_id
string
required
The unique identifier of the contract

Response

contract_id
string
The unique identifier of the contract
status
string
Current contract status:
  • pending: Awaiting signatures
  • confirmed: All parties have signed
  • active: Contract is in effect
  • completed: Contract has been fulfilled
  • cancelled: Contract was cancelled
created_at
string
ISO 8601 timestamp when the contract was created
confirmed_at
string
ISO 8601 timestamp when all parties signed (null if not yet confirmed)
signatures
array
Detailed signature information for each party:
  • phone_number: Party’s phone number
  • status: Signature status (“pending” or “signed”)
  • signed_at: ISO 8601 timestamp of signature (null if not signed)
progress
object
Signature progress summary:
  • signed: Number of parties who have signed
  • total: Total number of parties
  • complete: Boolean indicating if contract is fully executed

Example Request

curl -X GET https://api.voicepact.com/api/v1/contracts/AGRI-2026-001234/status \
  -H "Content-Type: application/json"

Example Responses

Partially Signed Contract

{
  "contract_id": "AGRI-2026-001234",
  "status": "pending",
  "created_at": "2026-03-06T10:30:00Z",
  "confirmed_at": null,
  "signatures": [
    {
      "phone_number": "+254712345678",
      "status": "signed",
      "signed_at": "2026-03-06T11:15:00Z"
    },
    {
      "phone_number": "+254787654321",
      "status": "pending",
      "signed_at": null
    }
  ],
  "progress": {
    "signed": 1,
    "total": 2,
    "complete": false
  }
}

Fully Signed Contract

{
  "contract_id": "AGRI-2026-001234",
  "status": "confirmed",
  "created_at": "2026-03-06T10:30:00Z",
  "confirmed_at": "2026-03-06T14:45:00Z",
  "signatures": [
    {
      "phone_number": "+254712345678",
      "status": "signed",
      "signed_at": "2026-03-06T11:15:00Z"
    },
    {
      "phone_number": "+254787654321",
      "status": "signed",
      "signed_at": "2026-03-06T14:45:00Z"
    }
  ],
  "progress": {
    "signed": 2,
    "total": 2,
    "complete": true
  }
}

Error Responses

404 Not Found

{
  "detail": "Contract not found"
}
Returned when the specified contract_id does not exist.

500 Internal Server Error

{
  "detail": "Failed to get contract status"
}
Returned when an unexpected error occurs during status retrieval.

Use Cases

Monitor Signature Progress

Use this endpoint to track which parties have signed and who is still pending:
# Check status periodically
while true; do
  curl -s https://api.voicepact.com/api/v1/contracts/AGRI-2026-001234/status | jq '.progress'
  sleep 30
done

Verify Contract Completion

Check if a contract is fully executed:
curl -s https://api.voicepact.com/api/v1/contracts/AGRI-2026-001234/status | jq '.progress.complete'

Send Reminders

Identify parties who haven’t signed yet:
curl -s https://api.voicepact.com/api/v1/contracts/AGRI-2026-001234/status | \
  jq '.signatures[] | select(.status == "pending") | .phone_number'

Notes

  • The progress.complete field is true when the contract status is “confirmed”, “active”, or “completed”
  • All timestamps are in UTC and formatted as ISO 8601
  • This endpoint does not modify any data - it’s a read-only operation
  • Signature order is preserved as parties were added to the contract

Build docs developers (and LLMs) love