Create estimate

Creates a draft vSOW-backed estimate inside one visible project. Creation does not baseline or commit delivery coordinates.

POST/api/v1/estimates

Authorization

estimates:writeapi key scoperequired
Required scope when calling with an API key.

Request body

project_idstringrequired
Visible DigitalStack project UUID.
namestringrequired
Estimate name.
descriptionstringoptional
Reviewable draft description.
commercial_modelstringoptional"fixed_bid" | "time_and_materials" | "retainer" | "capacity_pod" | "hybrid"
Commercial posture.
contingency_percentnumberoptional
Draft contingency percentage, 0–100.
confirmbooleanrequired
Must be true.
Example request
{
  "project_id": "24ea6df2-7f4c-4c32-9fc1-6c8a0cb5b4b2",
  "name": "Implementation estimate",
  "commercial_model": "time_and_materials",
  "contingency_percent": 15,
  "confirm": true
}

Request

curl -X POST "https://www.digitalstack360.com/api/v1/estimates" \
  -H "Authorization: Bearer $DS_API_KEY" \
  -H "Idempotency-Key: estimate-create-01" \
  -H "Content-Type: application/json" \
  -d '{"project_id":"24ea6df2-7f4c-4c32-9fc1-6c8a0cb5b4b2","name":"Implementation estimate","commercial_model":"time_and_materials","contingency_percent":15,"confirm":true}'

Examples use a placeholder key from your environment. Store your key in $DS_API_KEY — never commit it.

Response

200 OK
{
  "data": {
    "id": "8a043c6e-52ab-4df1-8b7a-afec991a05a2",
    "status": "draft",
    "version": 1
  },
  "meta": {
    "idempotency_replayed": false
  }
}

Errors

401
missing_auth

No credentials provided

401
invalid_api_key

API key is invalid or revoked

400
bad_request

Missing or invalid request fields

403
scope_insufficient

Key lacks the required write scope