GET
/
api
/
external
/
missions
/
{id}
/
deliverables
Deliverables
curl --request GET \
  --url https://api.example.com/api/external/missions/{id}/deliverables
Creators can fetch deliverables after Katch publishes an external mission. Use the same signed wallet headers as the mission creation endpoints. {id} may be either the external draft ID or the published mission ID.
GET /api/external/missions/draft_mabc1234_deadbeef/deliverables?limit=50&mediaUrlTtlSeconds=600
X-Katch-Wallet: 0x...
X-Katch-Timestamp: 1770000000000
X-Katch-Signature: 0x...
Query parameters:
NameDescription
limitPage size, capped at 100.
cursorCursor from the previous response.
mediaUrlTtlSecondsMedia link lifetime, capped at 900 seconds.
Response:
{
  "ok": true,
  "mission": {
    "missionId": "photo-of-a-reusable-cup",
    "draftId": "draft_mabc1234_deadbeef",
    "title": "Photo of a reusable coffee cup",
    "mediaType": "photo",
    "reward": { "token": "USDC", "amount": 2 },
    "targetCount": 10
  },
  "summary": {
    "acceptedSubmissions": 3,
    "returnedSubmissions": 3,
    "nextCursor": null,
    "generatedAt": "2026-05-21T19:00:00.000Z"
  },
  "submissions": [
    {
      "submissionId": "sub_123",
      "mediaType": "photo",
      "mediaUrl": "https://api.katch.fyi/api/external/media/...",
      "mediaUrlExpiresAt": "2026-05-21T19:10:00.000Z",
      "thumbnailUrl": null,
      "createdAt": "2026-05-21 18:55:00",
      "verifiedAt": "2026-05-21 18:56:00",
      "location": { "lat": 37.7, "lng": -122.4, "accuracyMeters": 12 },
      "verification": {
        "status": "accepted",
        "score": 91,
        "reason": "Reusable cup is visible"
      },
      "media": {
        "hash": "hash_123",
        "durationMs": null,
        "keyframeCount": null,
        "contentType": "image/jpeg"
      },
      "provenance": {
        "source": "katch_submission",
        "missionId": "photo-of-a-reusable-cup",
        "submissionId": "sub_123"
      }
    }
  ]
}
Only accepted and curation_accepted submissions are returned. Pending, flagged, rejected, and withdrawn media are not available to mission creators. Media URLs are short-lived Katch proxy URLs. Do not store them as permanent media identifiers; refresh the deliverables manifest when links expire.