Amendment Patterns Endpoint
Retrieve historical protocol amendment patterns by therapeutic area.
GET /patterns/{therapeutic_area}
Get statistical analysis of protocol amendments for a specific therapeutic area.
Request
GET /v1/patterns/Oncology
Authorization: Bearer YOUR_API_KEY
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
therapeutic_area | string | Yes | Therapeutic area to analyze |
Query Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
time_period | string | 5_years | Analysis time period: 1_year, 3_years, 5_years, 10_years |
phase | string | all | Filter by clinical phase: I, II, III, IV |
include_details | boolean | false | Include detailed amendment examples |
Therapeutic Areas
OncologyCardiovascularNeurologyPsychiatryImmunologyRheumatologyInfectious_DiseaseRare_Disease
Response
{
"therapeutic_area": "Oncology",
"analysis_period": {
"start": "2020-01-01",
"end": "2024-12-31"
},
"total_trials_analyzed": 1247,
"amendment_rate": 68.5,
"patterns": [
{
"pattern_id": "PAT-001",
"pattern_type": "endpoint_modification",
"description": "Changes to primary or secondary endpoint definitions",
"frequency": 32.4,
"risk_level": "high",
"avg_delay_months": 4.2,
"common_triggers": [
"Competitive landscape changes",
"Regulatory feedback",
"Interim analysis results"
],
"prevention_strategies": [
"Early FDA Type B meeting",
"Comprehensive endpoint sensitivity analysis",
"Adaptive design consideration"
]
},
{
"pattern_id": "PAT-002",
"pattern_type": "sample_size_increase",
"description": "Increases to planned sample size",
"frequency": 28.1,
"risk_level": "medium",
"avg_delay_months": 6.8,
"common_triggers": [
"Lower than expected effect size",
"Higher dropout rate",
"Subgroup analysis requirements"
],
"prevention_strategies": [
"Conservative effect size assumptions",
"Dropout rate margins in power calculations",
"Adaptive sample size re-estimation"
]
}
],
"phase_breakdown": {
"I": { "amendment_rate": 45.2, "trial_count": 312 },
"II": { "amendment_rate": 62.8, "trial_count": 456 },
"III": { "amendment_rate": 78.4, "trial_count": 389 },
"IV": { "amendment_rate": 52.1, "trial_count": 90 }
},
"query_metadata": {
"processing_time_ms": 156,
"query_id": "qry_pat_xyz",
"data_sources": ["Clinical Trial Registry", "FDA Submission Database"]
}
}
Response Fields
| Field | Type | Description | Tier |
|---|---|---|---|
therapeutic_area | string | Queried therapeutic area | All |
analysis_period | object | Date range of analysis | All |
total_trials_analyzed | number | Number of trials in dataset | All |
amendment_rate | number | Overall amendment rate (%) | All |
patterns | array | Identified amendment patterns | All |
patterns[].frequency | number | Occurrence frequency (%) | All |
patterns[].risk_level | string | Risk classification | All |
patterns[].prevention_strategies | array | Prevention recommendations | Starter |
phase_breakdown | object | Phase-specific statistics | Starter |
Examples
Basic Request
curl -X GET "https://api.ctwise.ai/v1/patterns/Oncology" \
-H "Authorization: Bearer ctwise_sk_live_xxx"
With Time Period
curl -X GET "https://api.ctwise.ai/v1/patterns/Cardiovascular?time_period=3_years" \
-H "Authorization: Bearer ctwise_sk_live_xxx"
Phase-Specific Analysis
curl -X GET "https://api.ctwise.ai/v1/patterns/Oncology?phase=III&include_details=true" \
-H "Authorization: Bearer ctwise_sk_live_xxx"
Python Example
import requests
API_KEY = "ctwise_sk_live_xxx"
BASE_URL = "https://api.ctwise.ai/v1"
response = requests.get(
f"{BASE_URL}/patterns/Oncology",
headers={"Authorization": f"Bearer {API_KEY}"},
params={
"time_period": "5_years",
"phase": "III"
}
)
data = response.json()
print(f"Amendment rate: {data['amendment_rate']}%")
print(f"Trials analyzed: {data['total_trials_analyzed']}")
for pattern in data['patterns']:
print(f"\n{pattern['pattern_type']}:")
print(f" Frequency: {pattern['frequency']}%")
print(f" Risk Level: {pattern['risk_level']}")
print(f" Avg Delay: {pattern['avg_delay_months']} months")
Error Responses
Invalid Therapeutic Area
{
"error": {
"code": "INVALID_THERAPEUTIC_AREA",
"message": "Therapeutic area 'InvalidArea' is not recognized."
}
}
Status: 400 Bad Request
Insufficient Data
{
"error": {
"code": "INSUFFICIENT_DATA",
"message": "Not enough trial data available for the specified criteria."
}
}
Status: 404 Not Found
Tier Differences
| Feature | Free | Starter |
|---|---|---|
| Basic patterns | ✅ (top 3) | ✅ (all) |
| Prevention strategies | ❌ | ✅ |
| Phase breakdown | ❌ | ✅ |
| Custom time periods | ❌ | ✅ |
| Detailed examples | ❌ | ✅ |
Related Endpoints
- POST /requirements/search - Search regulatory requirements
- POST /rules/validate - Protocol validation