Case Studies API¶
Generate, manage, and export AWS Partner Central case studies. AI-enhanced content maps 1:1 to Partner Central submission fields.
Base URL: https://api.vell.ai/api/v1
Authentication: Bearer token (OAuth)
Prefix: /partners/case-studies
Agentic Workflow¶
The Case Study API is designed for end-to-end autonomous workflows:
1. GET /schema → Discover field schema and constraints
2. POST /generate → AI generates full case study from inputs
3. POST /{id}/suggest → Refine individual fields with AI
4. PATCH /{id} → Save edits
5. GET /{id}/export → Export for Partner Central submission
Endpoints¶
List Case Studies¶
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
status |
string | No | — | Filter: draft, submitted, validated |
is_public |
boolean | No | — | Filter by public/private |
page |
integer | No | 1 |
Page number |
per_page |
integer | No | 20 |
Items per page (max: 100) |
Response:
{
"data": [
{
"type": "case_study",
"id": 42,
"attributes": {
"company_name": "Acme Corp",
"case_study_title": "Acme Corp Achieves 42% Cost Reduction with Amazon ECS",
"short_description": "Acme Corp migrated to containerized microservices...",
"status": "draft",
"is_public": false,
"country": "United States",
"industry_verticals": ["Enterprise IT"],
"use_cases": ["Migration", "Modernization"],
"start_date": "2025-06-01",
"end_date": "2025-12-15",
"has_generated_content": true,
"created_at": "2026-03-10T14:30:00Z",
"updated_at": "2026-03-12T09:15:00Z"
},
"links": {
"self": "/api/v1/partners/case-studies/42",
"export": "/api/v1/partners/case-studies/42/export",
"suggest": "/api/v1/partners/case-studies/42/suggest"
}
}
],
"meta": {
"total": 8,
"page": 1,
"per_page": 20,
"total_pages": 1
},
"links": {
"first": "/api/v1/partners/case-studies?page=1&per_page=20",
"last": "/api/v1/partners/case-studies?page=1&per_page=20",
"prev": null,
"next": null
}
}
Create Case Study Draft¶
Create a case study without AI generation. Use this when you want to build up inputs incrementally before generating.
Request Body:
{
"company_name": "Acme Corp",
"problem_statement": "Legacy monolith couldn't scale beyond 500 concurrent users",
"proposed_solution": "Containerized microservices on Amazon ECS with Aurora Serverless",
"outcomes": "42% cost reduction, 99.95% uptime, 3x throughput",
"country": "United States",
"start_date": "2025-06-01",
"end_date": "2025-12-15",
"industry_verticals": ["Enterprise IT"],
"use_cases": ["Migration", "Modernization"],
"aws_services_used": "Amazon ECS, Amazon Aurora Serverless v2, Amazon CloudWatch",
"is_public": false
}
| Field | Type | Required | Description |
|---|---|---|---|
company_name |
string | Yes | Customer company name |
problem_statement |
string | Yes | Business problem description |
proposed_solution |
string | Yes | Solution approach |
outcomes |
string | Yes | Business outcomes achieved |
country |
string | Yes | Engagement country |
start_date |
date | Yes | Project start date |
end_date |
date | Yes | Project end date (>= start_date) |
industry_verticals |
array | No | AWS Partner Central industry categories |
use_cases |
array | No | AWS Partner Central use case categories |
tco_analysis |
string | No | Total Cost of Ownership notes |
lessons_learned |
string | No | Key lessons |
aws_services_used |
string | No | AWS services used |
isv_tools |
string | No | ISV tools and technology |
is_public |
boolean | No | Public-facing or internal (default: false) |
Response: 201 Created with full case study resource.
Get Case Study¶
Returns the full case study including original inputs and generated content.
Response:
{
"data": {
"type": "case_study",
"id": 42,
"attributes": {
"company_name": "Acme Corp",
"case_study_title": "Acme Corp Achieves 42% Cost Reduction with Amazon ECS",
"status": "draft",
"problem_statement": "Legacy monolith couldn't scale...",
"proposed_solution": "Containerized microservices on Amazon ECS...",
"outcomes": "42% cost reduction, 99.95% uptime...",
"aws_services_used": "Amazon ECS, Amazon Aurora Serverless v2",
"generated_content": {
"case_study_title": "Acme Corp Achieves 42% Cost Reduction...",
"short_description": "Acme Corp migrated from a monolithic...",
"problem_statement_enhanced": "Acme Corp, a mid-market SaaS provider...",
"proposed_solution_enhanced": "The solution leveraged Amazon ECS...",
"outcomes_enhanced": "**42% infrastructure cost reduction**...",
"tco_analysis_enhanced": "Three-year TCO comparison shows...",
"lessons_learned_enhanced": "**Start with the data layer**...",
"architecture_diagram_suggestions": ["Amazon API Gateway → AWS Lambda..."],
"aws_services_recommendations": ["Amazon Aurora Serverless v2 — chosen for..."],
"validation_tips": ["Prepare CloudWatch dashboard screenshots..."]
}
},
"links": {
"self": "/api/v1/partners/case-studies/42",
"export": "/api/v1/partners/case-studies/42/export",
"suggest": "/api/v1/partners/case-studies/42/suggest"
}
}
}
Update Case Study¶
Update any combination of input fields, generated content, or status. Supports partial updates.
Request Body (example — update generated content):
{
"generated_content": {
"case_study_title": "Acme Corp Cuts Costs 42% with Amazon ECS Migration",
"short_description": "Acme Corp reduced infrastructure costs by 42%...",
"problem_statement_enhanced": "Updated problem statement...",
"proposed_solution_enhanced": "Updated solution...",
"outcomes_enhanced": "Updated outcomes..."
}
}
Request Body (example — transition status):
Character Limits
case_study_title: max 80 characters (AWS Partner Central constraint)short_description: max 300 characters (AWS Partner Central constraint)
Delete Case Study¶
Response: 204 No Content
Generate Case Study (AI)¶
Generate a full case study with AI-enhanced content. Creates a new case study and returns it with all generated fields populated.
Request Body:
{
"company_name": "Acme Corp",
"problem_statement": "Legacy Java monolith on self-managed EC2, couldn't scale beyond 500 concurrent users, 97.8% uptime",
"proposed_solution": "Migrated to containerized microservices on ECS with Aurora Serverless for database",
"outcomes": "42% cost reduction, 99.95% uptime, API latency from 1.2s to 180ms",
"country": "United States",
"start_date": "2025-06-01",
"end_date": "2025-12-15",
"industry_verticals": ["Enterprise IT"],
"use_cases": ["Migration", "Modernization"],
"aws_services_used": "Amazon ECS, Amazon Aurora Serverless v2, Amazon CloudWatch, AWS CloudFormation",
"is_public": false,
"brand_voice_company_id": 5,
"kb_ids": [12, 15],
"additional_context": "Customer is an AWS Advanced Partner with SaaS competency"
}
Additional optional fields for context enhancement:
| Field | Type | Description |
|---|---|---|
brand_voice_company_id |
integer | Company ID for brand voice context |
brand_voice_product_id |
integer | Product ID for solution-specific voice |
kb_ids |
array of integers | Knowledge base IDs to query for context |
additional_context |
string | Free-form additional context for the AI |
Response: 201 Created with full case study resource including generated_content.
The AI generates content that meets AWS Bar Raiser quality standards:
- Specific metrics with before/after comparisons
- Official AWS service names with business rationale
- Well-Architected Framework alignment
- Professional tone (no marketing superlatives)
Suggest Field Content (AI)¶
Generate an AI suggestion for a specific field of an existing case study. Supports iterative refinement.
Request Body:
| Field | Type | Required | Description |
|---|---|---|---|
field |
string | Yes | Field to generate: problem_statement, proposed_solution, outcomes, tco_analysis, lessons_learned |
mode |
string | No | replace (default), append, or refine |
brand_voice_company_id |
integer | No | Company ID for brand context |
brand_voice_product_id |
integer | No | Product ID for solution context |
kb_ids |
array | No | Knowledge base IDs for additional context |
Response:
{
"data": {
"type": "case_study_suggestion",
"attributes": {
"field": "problem_statement",
"mode": "replace",
"suggestion": "Acme Corp, a mid-market SaaS provider serving 2,000+ enterprise clients...",
"case_study_id": 42
}
},
"links": {
"case_study": "/api/v1/partners/case-studies/42"
}
}
Workflow Pattern
Use suggest iteratively to refine each field, then PATCH to save the content you approve.
Export Case Study¶
Export a case study in a portable format designed for direct AWS Partner Central submission.
Response:
{
"data": {
"type": "case_study_export",
"id": 42,
"schema_version": "1.0",
"export_format": "aws_partner_central",
"exported_at": "2026-03-13T10:30:00Z",
"partner_central_fields": {
"case_study_title": "Acme Corp Achieves 42% Cost Reduction with Amazon ECS",
"short_description": "Acme Corp reduced infrastructure costs by 42%...",
"customer_company_name": "Acme Corp",
"country": "United States",
"industry_verticals": ["Enterprise IT"],
"use_cases": ["Migration", "Modernization"],
"start_date": "2025-06-01",
"end_date": "2025-12-15",
"is_public": false,
"problem_statement": "Acme Corp, a mid-market SaaS provider...",
"proposed_solution": "The solution leveraged Amazon ECS...",
"outcomes": "**42% infrastructure cost reduction**...",
"tco_analysis": "Three-year TCO comparison shows...",
"lessons_learned": "**Start with the data layer**...",
"aws_services_used": "Amazon ECS, Amazon Aurora Serverless v2",
"isv_tools": null
},
"supplementary": {
"architecture_diagram_suggestions": ["Amazon API Gateway → AWS Lambda..."],
"aws_services_recommendations": ["Amazon Aurora Serverless v2 — chosen for..."],
"validation_tips": ["Prepare CloudWatch dashboard screenshots..."]
},
"original_inputs": {
"company_name": "Acme Corp",
"country": "United States",
"start_date": "2025-06-01",
"end_date": "2025-12-15"
},
"metadata": {
"status": "draft",
"created_at": "2026-03-10T14:30:00Z",
"updated_at": "2026-03-12T09:15:00Z",
"submitted_at": null,
"title_char_count": 58,
"description_char_count": 187
}
},
"links": {
"self": "/api/v1/partners/case-studies/42/export",
"case_study": "/api/v1/partners/case-studies/42",
"schema": "/api/v1/partners/case-studies/schema"
}
}
The partner_central_fields object maps directly to the AWS Partner Central case study submission form. Use AI-enhanced content when available, falling back to original inputs.
Get JSON Schema¶
Returns the JSON Schema definition for case study data. Use this for input validation and MCP client discovery.
Response:
{
"data": {
"type": "json_schema",
"id": "partner_central_case_study",
"schema_version": "1.0",
"attributes": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "AWS Partner Central Case Study",
"properties": {
"case_study_title": {
"type": "string",
"maxLength": 80
},
"short_description": {
"type": "string",
"maxLength": 300
}
},
"required": ["case_study_title", "short_description", "customer_company_name", "..."]
}
},
"meta": {
"industry_verticals": ["Digital Marketing", "Education", "Financial Services", "..."],
"use_cases": ["Analytics", "Artificial Intelligence", "Migration", "..."],
"countries": ["United States", "United Kingdom", "Germany", "..."],
"statuses": ["draft", "submitted", "validated"]
},
"links": {
"case_studies": "/api/v1/partners/case-studies",
"generate": "/api/v1/partners/case-studies/generate"
}
}
Get Filters¶
Returns available enum values for filtering and form population.
Response:
{
"industry_verticals": ["Digital Marketing", "Education", "Enterprise IT", "..."],
"use_cases": ["Analytics", "Artificial Intelligence", "Big Data", "..."],
"countries": ["United States", "United Kingdom", "Germany", "..."],
"statuses": ["draft", "submitted", "validated"]
}
Error Codes¶
| Code | HTTP Status | Description |
|---|---|---|
VALIDATION_ERROR |
422 | Invalid request parameters |
CASE_STUDY_NOT_FOUND |
404 | Case study does not exist or not owned by user |
GENERATION_FAILED |
500 | AI generation encountered an error |
SUGGESTION_FAILED |
500 | Field suggestion generation failed |
CREATION_FAILED |
500 | Database insert failed |
Portability¶
This API is designed for maximum portability:
- Partner Central submission: The
/exportendpoint returns fields mapped 1:1 to the Partner Central form - MCP/Agent discovery: The
/schemaendpoint returns a JSON Schema for automated validation - CRM integration: Standard JSON:API-like responses work with any HTTP client
- Workflow automation: The full create → generate → refine → export pipeline is programmatic
See PARTNER_OUTPUT_PORTABILITY_AUDIT.md for the full portability assessment.