curl --request GET \
--url https://api.example.com/api/proposals/{proposal_id}{
"id": "<string>",
"proposalCode": "<string>",
"title": "<string>",
"description": "<string>",
"template_id": "<string>",
"status": "<string>",
"created_at": "<string>",
"updated_at": "<string>",
"user_id": "<string>",
"user_email": "<string>",
"user_name": "<string>",
"uploaded_files": {},
"text_inputs": {},
"metadata": {},
"completed_steps": [
{}
],
"step_completion": {
"step_1": {},
"step_2": {},
"step_3": {},
"step_4": {}
},
"404 Not Found": {},
"403 Forbidden": {}
}Retrieve a specific proposal by its ID or proposal code. Includes computed step completion status.
curl --request GET \
--url https://api.example.com/api/proposals/{proposal_id}{
"id": "<string>",
"proposalCode": "<string>",
"title": "<string>",
"description": "<string>",
"template_id": "<string>",
"status": "<string>",
"created_at": "<string>",
"updated_at": "<string>",
"user_id": "<string>",
"user_email": "<string>",
"user_name": "<string>",
"uploaded_files": {},
"text_inputs": {},
"metadata": {},
"completed_steps": [
{}
],
"step_completion": {
"step_1": {},
"step_2": {},
"step_3": {},
"step_4": {}
},
"404 Not Found": {},
"403 Forbidden": {}
}Authorization: Bearer <token>
a1b2c3d4-e5f6-7890-abcd-ef1234567890PROP-20260304-A1B2rfp-document: RFP/tender documentsconcept-document: Initial concept documentsreference-proposals: Reference proposal examplesinitial-concept: User’s initial concept textShow Common Metadata Fields
rfp_analysis: RFP analysis resultsconcept_analysis: Concept evaluation resultsproposal_template: Generated proposal templaterfp_analysis_status: Status of RFP analysis (“pending”, “processing”, “completed”, “failed”)concept_analysis_status: Status of concept analysistemplate_generation_status: Status of template generationdraft_feedback_status: Status of draft feedback[1, 2, 3]).Steps:Show Step Completion Structure
Show Step 1 Details
completed: booleanhas_rfp: boolean - RFP document uploadedhas_concept: boolean - Concept document or text providedhas_references: boolean - Reference proposals uploadedShow Step 2 Details
completed: booleanrfp_analysis_status: string - “pending”, “processing”, “completed”, or “failed”concept_analysis_status: stringhas_concept_document: boolean - Concept document generatedShow Step 3 Details
completed: booleantemplate_status: string - “pending”, “processing”, “completed”, or “failed”has_template: boolean - Proposal template generatedhas_generated_content: boolean - Content generatedShow Step 4 Details
completed: booleanfeedback_status: string - “pending”, “processing”, “completed”, or “failed”has_feedback: boolean - Draft feedback receivedcurl -X GET https://api.igadregion.org/api/proposals/a1b2c3d4-e5f6-7890-abcd-ef1234567890 \
-H "Authorization: Bearer YOUR_TOKEN"
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"proposalCode": "PROP-20260304-A1B2",
"title": "Climate Resilience in East Africa",
"description": "Proposal for improving climate adaptation strategies",
"template_id": null,
"status": "draft",
"created_at": "2026-03-04T10:30:00.000Z",
"updated_at": "2026-03-04T15:45:00.000Z",
"user_id": "user_123",
"user_email": "[email protected]",
"user_name": "John Doe",
"uploaded_files": {
"rfp-document": ["s3://bucket/PROP-20260304-A1B2/rfp.pdf"],
"concept-document": ["s3://bucket/PROP-20260304-A1B2/concept.pdf"]
},
"text_inputs": {
"initial-concept": "Brief description of the project concept..."
},
"metadata": {
"rfp_analysis": {
"summary": "Analysis of the RFP requirements...",
"key_requirements": ["Requirement 1", "Requirement 2"]
},
"rfp_analysis_status": "completed",
"concept_analysis_status": "processing",
"rfp_analysis_completed_at": "2026-03-04T14:30:00.000Z"
},
"completed_steps": [1, 2],
"step_completion": {
"step_1": {
"completed": true,
"has_rfp": true,
"has_concept": true,
"has_references": false
},
"step_2": {
"completed": true,
"rfp_analysis_status": "completed",
"concept_analysis_status": "completed",
"has_concept_document": true
},
"step_3": {
"completed": false,
"template_status": "pending",
"has_template": false,
"has_generated_content": false
},
"step_4": {
"completed": false,
"feedback_status": "pending",
"has_feedback": false
}
}
}
{
"detail": "Proposal not found"
}
{
"detail": "Access denied"
}
completed_steps and step_completion fields are computed server-side based on actual data presence, ensuring consistent state across sessions.