Skip to main content

483 Facility Endpoints

Retrieve facility inspection history and risk scores for FDA-regulated establishments.

Tier Access

Required Tier: Starter+ (Starter, Pro, Enterprise)

Rate limits apply per tier — see Rate Limits for details.

GET /v1/483/facilities/{fei_number}/inspections

Get complete inspection history and compliance track record for a specific facility.

Request

GET https://api.ctwise.ai/v1/483/facilities/3005012345/inspections?classification=OAI&include_citations=true
X-Api-Key: YOUR_API_KEY

Path Parameters

ParameterTypeRequiredDescription
fei_numberstringYesFDA Establishment Identifier (FEI)

Query Parameters

ParameterTypeRequiredDescription
classificationstringNoFilter by classification: NAI, VAI, or OAI
date_fromstringNoStart date for inspection range (ISO 8601)
date_tostringNoEnd date for inspection range (ISO 8601)
include_citationsbooleanNoInclude detailed observation citations (default: false)
include_compliance_actionsbooleanNoInclude warning letters, recalls, etc. (default: false)

Response

{
"fei_number": "3005012345",
"facility": {
"legal_name": "Acme Pharmaceutical Manufacturing",
"city": "Boston",
"state": "MA",
"country": "USA",
"product_types": ["drug", "biologics"],
"parent_company": "Acme Holdings Inc.",
"registration_status": "active",
"establishment_type": "manufacturer"
},
"summary": {
"total_inspections": 12,
"nai_count": 5,
"vai_count": 4,
"oai_count": 3,
"warning_letters": 1,
"import_alerts": 0,
"last_inspection_date": "2024-03-15",
"last_classification": "OAI",
"trend": "deteriorating"
},
"inspections": [
{
"inspection_id": "483-2024-001234",
"inspection_start_date": "2024-03-11",
"inspection_end_date": "2024-03-15",
"classification": "OAI",
"program_area": "CDER",
"inspection_type": "Pre-Approval Inspection",
"lead_investigator_id": "INV-00456",
"team_size": 3,
"total_citations": 8,
"citations": [
{
"observation_id": "483-2024-001234-obs-003",
"act_cfr_number": "21 CFR 211.113",
"short_description": "Sterile manufacturing area lacks adequate environmental monitoring",
"categories": [
"Aseptic Processing",
"Environmental Monitoring",
"Sterility Assurance"
],
"severity_score": 8.5
},
{
"observation_id": "483-2024-001234-obs-001",
"act_cfr_number": "21 CFR 211.160",
"short_description": "Laboratory controls inadequate for stability testing",
"categories": [
"Laboratory Controls",
"Stability Studies"
],
"severity_score": 7.2
}
],
"compliance_actions": [
{
"action_type": "warning_letter",
"action_date": "2024-05-10",
"action_id": "WL-2024-456",
"status": "pending_response",
"response_deadline": "2024-06-09"
}
]
},
{
"inspection_id": "483-2022-009876",
"inspection_start_date": "2022-08-15",
"inspection_end_date": "2022-08-19",
"classification": "VAI",
"program_area": "CDER",
"inspection_type": "Routine Surveillance",
"lead_investigator_id": "INV-00789",
"team_size": 2,
"total_citations": 3,
"citations": [
{
"observation_id": "483-2022-009876-obs-001",
"act_cfr_number": "21 CFR 211.192",
"short_description": "Production record review procedures need improvement",
"categories": [
"Documentation",
"Quality Systems"
],
"severity_score": 5.8
}
],
"compliance_actions": []
}
]
}

Response Fields

FieldTypeDescription
fei_numberstringFDA Establishment Identifier
facilityobjectFacility information
facility.legal_namestringRegistered legal name
facility.citystringCity location
facility.statestringState/province
facility.countrystringCountry
facility.product_typesstring[]Types of products manufactured
facility.parent_companystringParent company name
summaryobjectInspection summary statistics
summary.total_inspectionsintegerTotal number of inspections
summary.nai_countintegerNo Action Indicated count
summary.vai_countintegerVoluntary Action Indicated count
summary.oai_countintegerOfficial Action Indicated count
summary.warning_lettersintegerWarning letters issued
summary.trendstringCompliance trend (improving/stable/deteriorating)
inspectionsarrayArray of inspection records
inspections[].inspection_idstringUnique inspection identifier
inspections[].classificationstringInspection classification
inspections[].citationsarrayObservation citations (if requested)
inspections[].compliance_actionsarrayRegulatory actions (if requested)

GET /v1/483/facilities/{fei_number}/citations

Get all FDA 483 observation citations for a specific facility, sorted by inspection date.

Request

GET https://api.ctwise.ai/v1/483/facilities/3005012345/citations?limit=20&sort_order=desc
X-Api-Key: YOUR_API_KEY

Path Parameters

ParameterTypeRequiredDescription
fei_numberstringYesFDA Establishment Identifier (FEI)

Query Parameters

ParameterTypeRequiredDescription
limitintegerNoMaximum number of citations to return (default: 100, max: 1000)
sort_orderstringNoSort order: asc or desc (default: desc)
categorystringNoFilter by citation category
date_fromstringNoStart date for inspection range (ISO 8601)
date_tostringNoEnd date for inspection range (ISO 8601)

Response

{
"fei_number": "3005012345",
"facility_name": "Acme Pharmaceutical Manufacturing",
"total": 45,
"results": [
{
"citation_id": "CIT-2024-12345",
"inspection_id": "INS-2024-67890",
"inspection_end_date": "2024-03-15",
"fiscal_year": 2024,
"act_cfr_number": "21 CFR 211.113",
"short_description": "Sterile manufacturing area lacks adequate environmental monitoring procedures as required",
"program_area": "Human Drugs",
"classification": "OAI",
"category": "Sterility Assurance",
"source": "FDA Inspection Database",
"source_url": "https://datadashboard.fda.gov/ora/cd/inspections.htm",
"data_attribution": {
"api_version": "v1.0",
"data_source_name": "FDA ORA Inspection Database",
"data_source_url": "https://datadashboard.fda.gov/ora/cd/inspections.htm",
"last_updated": "2024-09-15T00:00:00Z"
}
},
{
"citation_id": "CIT-2024-12346",
"inspection_id": "INS-2024-67890",
"inspection_end_date": "2024-03-15",
"fiscal_year": 2024,
"act_cfr_number": "21 CFR 211.160",
"short_description": "Laboratory controls inadequate for stability testing program",
"program_area": "Human Drugs",
"classification": "OAI",
"category": "Laboratory Controls",
"source": "FDA Inspection Database",
"source_url": "https://datadashboard.fda.gov/ora/cd/inspections.htm",
"data_attribution": {
"api_version": "v1.0",
"data_source_name": "FDA ORA Inspection Database",
"data_source_url": "https://datadashboard.fda.gov/ora/cd/inspections.htm",
"last_updated": "2024-09-15T00:00:00Z"
}
}
],
"query_metadata": {
"execution_time_ms": 120,
"limit": 20,
"sort_order": "desc"
}
}

Response Fields

FieldTypeDescription
fei_numberstringFDA Establishment Identifier
facility_namestringFacility legal name
totalintegerTotal number of citations for this facility
resultsarrayArray of citation records
results[].citation_idstringUnique citation identifier
results[].inspection_idstringInspection identifier
results[].inspection_end_datestringDate inspection ended (ISO 8601)
results[].fiscal_yearintegerFDA fiscal year
results[].act_cfr_numberstringCFR section cited (21 CFR format)
results[].short_descriptionstringCitation description
results[].program_areastringFDA program area (Human Drugs, Biologics, etc.)
results[].classificationstringInspection classification (NAI, VAI, OAI)
results[].categorystringNLP-classified citation category
results[].sourcestringData source name
results[].source_urlstringLink to FDA data source
results[].data_attributionobjectData attribution metadata
results[].data_attribution.api_versionstringAPI version
results[].data_attribution.data_source_namestringSource database name
results[].data_attribution.data_source_urlstringSource URL
results[].data_attribution.last_updatedstringLast data refresh date
query_metadataobjectQuery execution metadata

Examples

Get All Citations for a Facility

curl -X GET "https://api.ctwise.ai/v1/483/facilities/3005012345/citations?limit=50" \
-H "X-Api-Key: YOUR_API_KEY"

Filter by Category

curl -X GET "https://api.ctwise.ai/v1/483/facilities/3005012345/citations?category=Data%20Integrity&limit=20" \
-H "X-Api-Key: YOUR_API_KEY"

Get Citations for Date Range

curl -X GET "https://api.ctwise.ai/v1/483/facilities/3005012345/citations?date_from=2023-01-01&date_to=2024-12-31" \
-H "X-Api-Key: YOUR_API_KEY"

Python Example

import requests

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

# Get all citations for a facility
fei_number = "3005012345"
response = requests.get(
f"{BASE_URL}/483/facilities/{fei_number}/citations",
headers={"X-Api-Key": API_KEY},
params={"limit": 50, "sort_order": "desc"}
)

data = response.json()
print(f"{data['facility_name']}: {data['total']} total citations\n")

for citation in data["results"]:
print(f"Date: {citation['inspection_end_date']}")
print(f"CFR: {citation['act_cfr_number']}")
print(f"Category: {citation['category']}")
print(f"Description: {citation['short_description'][:80]}...")
print()

JavaScript Example

const API_KEY = 'your_api_key';
const BASE_URL = 'https://api.ctwise.ai/v1';

const feiNumber = '3005012345';
const response = await fetch(
`${BASE_URL}/483/facilities/${feiNumber}/citations?limit=50&sort_order=desc`,
{ headers: { 'X-Api-Key': API_KEY } }
);

const data = await response.json();
console.log(`${data.facility_name}: ${data.total} total citations`);

data.results.forEach(citation => {
console.log(`${citation.inspection_end_date}: ${citation.act_cfr_number}`);
console.log(` ${citation.short_description.substring(0, 80)}...`);
});

Error Responses

Facility Not Found

{
"error": {
"code": "NOT_FOUND",
"message": "Facility with FEI number '3005012345' not found"
}
}

Status: 404 Not Found


GET /v1/483/facilities/{fei_number}/score

Get AI-powered predictive risk score and recommended actions for a facility.

Request

GET https://api.ctwise.ai/v1/483/facilities/3005012345/score
X-Api-Key: YOUR_API_KEY

Path Parameters

ParameterTypeRequiredDescription
fei_numberstringYesFDA Establishment Identifier (FEI)

Response

{
"fei_number": "3005012345",
"facility_name": "Acme Pharmaceutical Manufacturing",
"risk_score": 78,
"risk_level": "high",
"confidence": 0.87,
"score_components": {
"historical_pattern": {
"score": 82,
"weight": 0.35,
"factors": [
"3 OAI inspections in last 5 years",
"1 warning letter in last 24 months",
"Deteriorating trend in classification"
]
},
"time_since_inspection": {
"score": 65,
"weight": 0.15,
"factors": [
"Last inspection: 11 months ago",
"Average inspection interval: 18 months",
"Due for routine inspection in ~7 months"
]
},
"citation_severity": {
"score": 85,
"weight": 0.25,
"factors": [
"Average severity score: 7.8/10",
"Repeat citations in aseptic processing",
"Critical CFR violations (211.113, 211.160)"
]
},
"industry_benchmark": {
"score": 70,
"weight": 0.15,
"factors": [
"OAI rate: 25% vs industry avg 12%",
"Citations per inspection: 6.7 vs avg 3.2",
"Warning letter rate: 8% vs avg 3%"
]
},
"enforcement_trend": {
"score": 75,
"weight": 0.10,
"factors": [
"Pending warning letter response",
"No import alerts currently active",
"No consent decrees"
]
}
},
"next_best_actions": [
{
"priority": 1,
"action": "Conduct comprehensive gap assessment against 21 CFR 211.113 (aseptic processing)",
"rationale": "Repeat citations in this area with high severity scores indicate systemic deficiency",
"estimated_remediation_days": 90
},
{
"priority": 2,
"action": "Engage external consultant for environmental monitoring program review",
"rationale": "Critical observation in latest inspection; external expertise recommended",
"estimated_remediation_days": 60
},
{
"priority": 3,
"action": "Prepare for likely follow-up inspection within 6-9 months",
"rationale": "OAI classification and pending warning letter response typically trigger follow-up",
"estimated_remediation_days": 180
},
{
"priority": 4,
"action": "Implement trending dashboard for environmental monitoring excursions",
"rationale": "Proactive monitoring can prevent future citations in this high-risk area",
"estimated_remediation_days": 45
}
],
"calculated_at": "2025-02-14T10:30:00Z",
"valid_until": "2025-03-14T10:30:00Z"
}

Response Fields

FieldTypeDescription
fei_numberstringFDA Establishment Identifier
facility_namestringFacility name
risk_scoreintegerOverall risk score (0-100, higher = more risk)
risk_levelstringRisk level: low (0-40), medium (41-65), high (66-85), critical (86-100)
confidencenumberModel confidence (0.0-1.0)
score_componentsobjectDetailed scoring breakdown
score_components.*.scoreintegerComponent score (0-100)
score_components.*.weightnumberComponent weight in overall score
score_components.*.factorsstring[]Contributing factors
next_best_actionsarrayRecommended actions prioritized by impact
next_best_actions[].priorityintegerPriority ranking
next_best_actions[].actionstringRecommended action
next_best_actions[].rationalestringWhy this action is recommended
next_best_actions[].estimated_remediation_daysintegerEstimated days to complete
calculated_atstringTimestamp when score was calculated
valid_untilstringScore expiration (refreshed monthly)

Examples

Get Facility Inspection History

curl -X GET "https://api.ctwise.ai/v1/483/facilities/3005012345/inspections?include_citations=true&include_compliance_actions=true" \
-H "X-Api-Key: YOUR_API_KEY"

Get OAI Inspections Only

curl -X GET "https://api.ctwise.ai/v1/483/facilities/3005012345/inspections?classification=OAI&date_from=2020-01-01" \
-H "X-Api-Key: YOUR_API_KEY"

Get Facility Risk Score

curl -X GET "https://api.ctwise.ai/v1/483/facilities/3005012345/score" \
-H "X-Api-Key: YOUR_API_KEY"

Python Example - Inspection History

import requests

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

# Get inspection history
response = requests.get(
f"{BASE_URL}/483/facilities/3005012345/inspections",
headers={"X-Api-Key": API_KEY},
params={
"include_citations": True,
"include_compliance_actions": True
}
)

data = response.json()
facility = data['facility']
summary = data['summary']

print(f"{facility['legal_name']} ({facility['city']}, {facility['state']})")
print(f"Total Inspections: {summary['total_inspections']}")
print(f"OAI Rate: {summary['oai_count'] / summary['total_inspections'] * 100:.1f}%")
print(f"Trend: {summary['trend']}")
print("\nRecent Inspections:")

for inspection in data['inspections'][:5]:
print(f" {inspection['inspection_end_date']}: {inspection['classification']} - {inspection['total_citations']} citations")
if 'compliance_actions' in inspection and inspection['compliance_actions']:
for action in inspection['compliance_actions']:
print(f" → {action['action_type']}: {action['action_id']}")

Python Example - Risk Score

import requests

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

# Get risk score
response = requests.get(
f"{BASE_URL}/483/facilities/3005012345/score",
headers={"X-Api-Key": API_KEY}
)

data = response.json()

print(f"Facility: {data['facility_name']}")
print(f"Risk Score: {data['risk_score']}/100 ({data['risk_level'].upper()})")
print(f"Confidence: {data['confidence']:.0%}")
print("\nTop Recommended Actions:")

for action in data['next_best_actions'][:3]:
print(f"{action['priority']}. {action['action']}")
print(f" Why: {action['rationale']}")
print(f" Timeline: ~{action['estimated_remediation_days']} days\n")

JavaScript Example

const API_KEY = 'your_api_key';
const BASE_URL = 'https://api.ctwise.ai/v1';

// Get inspection history
const historyResponse = await fetch(
`${BASE_URL}/483/facilities/3005012345/inspections?include_citations=true`,
{
headers: { 'X-Api-Key': API_KEY }
}
);

const history = await historyResponse.json();
console.log(`${history.facility.legal_name}: ${history.summary.total_inspections} inspections`);

// Get risk score
const scoreResponse = await fetch(
`${BASE_URL}/483/facilities/3005012345/score`,
{
headers: { 'X-Api-Key': API_KEY }
}
);

const score = await scoreResponse.json();
console.log(`Risk Level: ${score.risk_level} (${score.risk_score}/100)`);
console.log('Top Action:', score.next_best_actions[0].action);

Error Responses

Facility Not Found

{
"error": {
"code": "NOT_FOUND",
"message": "Facility with FEI number '3005012345' not found"
}
}

Status: 404 Not Found

Invalid FEI Format

{
"error": {
"code": "VALIDATION_ERROR",
"message": "Invalid FEI number format. Expected 10-digit number."
}
}

Status: 400 Bad Request

Invalid API Key

{
"message": "Unauthorized"
}

Status: 401 Unauthorized

Performance

MetricTarget
Response time< 2 seconds
Data freshnessUpdated weekly
Timeout30 seconds

Notes on Risk Scoring

  • Risk scores are recalculated monthly using the latest inspection data
  • Scores incorporate both historical patterns and forward-looking indicators
  • Component weights are calibrated using FDA enforcement patterns
  • High/critical scores do not guarantee regulatory action, but indicate elevated risk
  • Use scores as one input in overall compliance strategy, not sole decision factor