Skip to main content

Protocol Validation Endpoint

Validate clinical trial protocols against regulatory requirements and best practices.

POST /rules/validate

Submit a protocol for comprehensive compliance analysis.

Request

POST /v1/rules/validate
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json

Request Body

{
"protocol": {
"title": "A Randomized Phase III Study of Drug X in Advanced NSCLC",
"therapeutic_area": "Oncology",
"indication": "Non-Small Cell Lung Cancer",
"phase": "III",
"study_design": {
"type": "randomized_controlled",
"blinding": "double_blind",
"arms": 2,
"control_type": "active_comparator"
},
"endpoints": {
"primary": {
"name": "Overall Survival",
"definition": "Time from randomization to death from any cause",
"assessment_schedule": "Every 12 weeks"
},
"secondary": [
{
"name": "Progression-Free Survival",
"definition": "Time from randomization to disease progression or death"
},
{
"name": "Objective Response Rate",
"definition": "Proportion of patients with confirmed CR or PR"
}
]
},
"sample_size": {
"planned_enrollment": 500,
"power": 0.90,
"alpha": 0.05,
"effect_size": "HR 0.75"
},
"target_authorities": ["FDA", "EMA"]
},
"validation_options": {
"include_recommendations": true,
"check_recent_guidance": true,
"compare_similar_trials": true
}
}

Protocol Object

FieldTypeRequiredDescription
titlestringYesProtocol title
therapeutic_areastringYesTherapeutic area
indicationstringYesDisease indication
phasestringYesClinical phase (I, II, III, IV)
study_designobjectYesStudy design details
endpointsobjectYesPrimary and secondary endpoints
sample_sizeobjectYesSample size justification
target_authoritiesarrayNoTarget regulatory authorities

Validation Options

OptionTypeDefaultDescription
include_recommendationsbooleantrueInclude improvement recommendations
check_recent_guidancebooleantrueCheck against recent regulatory guidance
compare_similar_trialsbooleanfalseCompare with similar approved trials

Response

{
"validation_id": "val_abc123",
"timestamp": "2025-01-15T10:30:00Z",
"overall_status": "needs_attention",
"compliance_score": 78,
"summary": {
"total_checks": 45,
"passed": 35,
"warnings": 7,
"critical": 3
},
"issues": [
{
"issue_id": "ISS-001",
"severity": "critical",
"category": "endpoint_definition",
"title": "Primary Endpoint Assessment Schedule Gap",
"description": "OS assessment every 12 weeks may miss interim events. FDA guidance recommends more frequent assessments.",
"regulatory_reference": {
"authority": "FDA",
"document": "Clinical Trial Endpoints for the Approval of Cancer Drugs",
"section": "III.B.2"
},
"recommendation": "Consider assessment every 8 weeks or continuous survival follow-up.",
"impact": {
"approval_risk": "medium",
"delay_risk_months": 3
}
},
{
"issue_id": "ISS-002",
"severity": "warning",
"category": "sample_size",
"title": "Effect Size Assumption",
"description": "HR 0.75 is optimistic based on similar trial outcomes.",
"recommendation": "Consider sensitivity analysis with HR 0.80.",
"similar_trials": [
{
"trial_id": "NCT03215001",
"observed_hr": 0.82
}
]
}
],
"compliance_by_authority": {
"FDA": {
"score": 82,
"status": "acceptable",
"key_gaps": ["Assessment frequency"]
},
"EMA": {
"score": 75,
"status": "needs_attention",
"key_gaps": ["QoL endpoint missing", "Assessment frequency"]
}
},
"recommendations": [
{
"priority": 1,
"action": "Update OS assessment schedule to every 8 weeks",
"rationale": "Aligns with FDA expectations and reduces approval risk",
"effort": "low"
},
{
"priority": 2,
"action": "Add Quality of Life secondary endpoint",
"rationale": "Required for EMA submission, increasingly expected by FDA",
"effort": "medium"
}
],
"similar_approved_trials": [
{
"trial_id": "NCT02453282",
"title": "KEYNOTE-024",
"therapeutic_area": "Oncology",
"indication": "NSCLC",
"approval_date": "2016-10-24",
"relevance_score": 0.92
}
]
}

Response Fields

FieldTypeDescriptionTier
compliance_scorenumberOverall score (0-100)All
summaryobjectIssue counts by severityAll
issuesarrayIdentified compliance issuesAll
issues[].recommendationstringFix recommendationStarter
compliance_by_authorityobjectPer-authority breakdownStarter
recommendationsarrayPrioritized action itemsStarter
similar_approved_trialsarrayReference trialsStarter

Severity Levels

LevelDescriptionAction Required
criticalMay prevent approvalImmediate attention
warningCould delay approvalAddress before submission
infoBest practice suggestionConsider for optimization

Examples

Full Validation

curl -X POST "https://api.ctwise.ai/v1/rules/validate" \
-H "Authorization: Bearer ctwise_sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"protocol": {
"title": "Phase III Oncology Study",
"therapeutic_area": "Oncology",
"indication": "NSCLC",
"phase": "III",
"study_design": {
"type": "randomized_controlled",
"blinding": "double_blind",
"arms": 2
},
"endpoints": {
"primary": {
"name": "Overall Survival",
"definition": "Time to death"
}
},
"sample_size": {
"planned_enrollment": 500
}
}
}'

Python Example

import requests

API_KEY = "ctwise_sk_live_xxx"
BASE_URL = "https://api.ctwise.ai/v1"

protocol = {
"title": "Phase III Oncology Study",
"therapeutic_area": "Oncology",
"indication": "NSCLC",
"phase": "III",
"study_design": {
"type": "randomized_controlled",
"blinding": "double_blind",
"arms": 2,
"control_type": "active_comparator"
},
"endpoints": {
"primary": {
"name": "Overall Survival",
"definition": "Time from randomization to death"
}
},
"sample_size": {
"planned_enrollment": 500,
"power": 0.90
},
"target_authorities": ["FDA", "EMA"]
}

response = requests.post(
f"{BASE_URL}/rules/validate",
headers={
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
},
json={
"protocol": protocol,
"validation_options": {
"include_recommendations": True,
"compare_similar_trials": True
}
}
)

result = response.json()
print(f"Compliance Score: {result['compliance_score']}%")
print(f"Status: {result['overall_status']}")

print("\nCritical Issues:")
for issue in result['issues']:
if issue['severity'] == 'critical':
print(f" - {issue['title']}")
print(f" {issue['description']}")

Error Responses

Invalid Protocol Structure

{
"error": {
"code": "INVALID_PROTOCOL",
"message": "Protocol must include title, therapeutic_area, phase, and endpoints",
"details": {
"missing_fields": ["endpoints"]
}
}
}

Status: 400 Bad Request

Protocol Too Complex

{
"error": {
"code": "PROTOCOL_TOO_COMPLEX",
"message": "Protocol exceeds maximum complexity for your tier. Upgrade to Pro for unlimited validation."
}
}

Status: 403 Forbidden

Tier Differences

FeatureFreeStarter
Validations per month550
Basic compliance score
Recommendations
Authority breakdown
Similar trial comparison
Detailed issue analysis