ReDesk AI › SOP steps
SOP steps
An SOP step is one checkpoint in a project's playbook: who owns it, how long it should take, whether it needs approval and what evidence proves it is done.
The sop_step object
FieldTypeDescription
idstringUnique id, prefixed stp_.projectstringThe project it belongs to.namestringe.g. Structural survey.owner_rolestringThe role that does the work, e.g. surveyor.statusenumpending, in_progress, submitted, verified or rejected.requires_approvalbooleanWhether a manager must verify the evidence.evidencearrayPhotos and documents attached when submitting.due_attimestampWhen the step is due.sop_step object
{
"id": "stp_4Rm2",
"object": "sop_step",
"project": "prj_71Ka",
"name": "Structural survey",
"owner_role": "surveyor",
"status": "submitted",
"requires_approval": true,
"evidence": [
{
"id": "doc_survey_photo_3",
"kind": "photo"
}
],
"due_at": "2026-08-05T12:30:00Z"
}List a project's steps
GET
/v1/sop_stepsSteps in SOP order.
ParameterDescription
projectquery · stringrequired
limitquery · integer
starting_afterquery · string
Request
curl https://api.redesk.ai/v1/sop_steps \ -H "Authorization: Bearer sk_test_..."
Response
{
"object": "list",
"data": [
{
"id": "stp_4Rm2",
"object": "sop_step",
"project": "prj_71Ka",
"name": "Structural survey",
"owner_role": "surveyor",
"status": "submitted",
"requires_approval": true,
"evidence": [
{
"id": "doc_survey_photo_3",
"kind": "photo"
}
],
"due_at": "2026-08-05T12:30:00Z"
}
],
"has_more": false
}Submit evidence
POST
/v1/sop_steps/{id}/submitAttach evidence and mark the step submitted. Steps without an approval gate go straight to verified.
ParameterDescription
idpath · stringrequired
evidencebody · string[]required
Request
curl -X POST https://api.redesk.ai/v1/sop_steps/stp_4Rm2/submit \
-H "Authorization: Bearer sk_test_..." \
-H "Content-Type: application/json" \
-d '{
"evidence": [
"doc_survey_photo_3"
]
}'Response
{
"id": "stp_4Rm2",
"object": "sop_step",
"project": "prj_71Ka",
"name": "Structural survey",
"owner_role": "surveyor",
"status": "submitted",
"requires_approval": true,
"evidence": [
{
"id": "doc_survey_photo_3",
"kind": "photo"
}
],
"due_at": "2026-08-05T12:30:00Z"
}Verify a step
POST
/v1/sop_steps/{id}/verifyApprove submitted evidence. Opens the next step and emits sop_step.verified.
ParameterDescription
idpath · stringrequired
notebody · string
Request
curl -X POST https://api.redesk.ai/v1/sop_steps/stp_4Rm2/verify \
-H "Authorization: Bearer sk_test_..." \
-H "Content-Type: application/json" \
-d '{
"note": "Roof load OK for ballasted mounting."
}'Response
{
"id": "stp_4Rm2",
"object": "sop_step",
"project": "prj_71Ka",
"name": "Structural survey",
"owner_role": "surveyor",
"status": "verified",
"requires_approval": true,
"evidence": [
{
"id": "doc_survey_photo_3",
"kind": "photo"
}
],
"due_at": "2026-08-05T12:30:00Z"
}
