curl -X POST 'https://www.wiseyield.co/api/v1/tasks/aaaaaaaa.../complete' \
-H "Authorization: Bearer $WISEYIELD_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"photoUrl": "https://example.com/proof.jpg",
"gpsLat": 30.0444,
"gpsLng": 31.2357,
"notes": "Applied 2.5 L/ha"
}'
Tasks
Complete task
Mark a task as completed with optional photo, GPS coordinates, and notes.
POST
/
api
/
v1
/
tasks
/
{id}
/
complete
curl -X POST 'https://www.wiseyield.co/api/v1/tasks/aaaaaaaa.../complete' \
-H "Authorization: Bearer $WISEYIELD_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"photoUrl": "https://example.com/proof.jpg",
"gpsLat": 30.0444,
"gpsLng": 31.2357,
"notes": "Applied 2.5 L/ha"
}'
POST https://www.wiseyield.co/api/v1/tasks/{id}/complete
status="completed" and completedDate=now() (unless already set), and persists optional evidence fields on the task row.
SOP-step completion deferred. The dashboard
/api/tasks/{id}/complete route also supports step-by-step completion for SOP-driven tasks (Blueprint §9.5). The v1 wrapper handles plain-task completion only. SOP-step completion via API key is part of a future batch.Authentication
Requires a key with thetasks:write scope.
Path parameters
string
required
Task UUID.
Request body
All fields optional.string
URL pointing to evidence photo (e.g. uploaded to your own S3).
number
Latitude, −90 to 90.
number
Longitude, −180 to 180.
string
Up to 2,000 characters.
Response
Returns the updated task wrapped underdata (status now completed).
curl -X POST 'https://www.wiseyield.co/api/v1/tasks/aaaaaaaa.../complete' \
-H "Authorization: Bearer $WISEYIELD_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"photoUrl": "https://example.com/proof.jpg",
"gpsLat": 30.0444,
"gpsLng": 31.2357,
"notes": "Applied 2.5 L/ha"
}'
Errors
| Status | When |
|---|---|
400 INVALID_ID | {id} is not a valid UUID |
400 VALIDATION_ERROR | Body validation failed |
401 | Missing, malformed, expired, or revoked API key |
403 INSUFFICIENT_SCOPE | Key lacks tasks:write scope |
404 NOT_FOUND | Task doesn’t exist or belongs to another user |
429 RATE_LIMIT_EXCEEDED | Per-user rate limit reached |
5xx | Server error |