Skip to main content

Prior Authorization / Lightweight

Najeeb Prior Authorization Lightweight as a Service is a comprehensive pre-authorization processing solution designed to streamline and automate the pre-authorization workflow for insurance companies in the Kingdom of Saudi Arabia.

Service Model

This Service enables the utilization of the AI Engine capabilities without having to store any sensitive data outside the Insurance Company Network, as all the data submitted is processed ephemerally.

Prior Authorization MODES

The "Prior Authorization Lightweight" flow differs from the "Prior Authorization Standard" flow primarily in its validation logic. Unlike Standard mode, the Lightweight flow does not validate member policies, consumption limits, or existing entitlements. Furthermore, it omits pre-creation checks for members, policies, and policy holders, as well as membership join validations. Consequently, if a member or policy does not already exist in Lightweight mode, the system automatically creates it on the fly.

Service Description

Najeeb Prior Authorization Lightweight as a Service provides a seamless API integration that enables insurance companies to submit pre-authorization requests from their core systems and receive adjudicated results in real time. The service handles the entire pre-authorization lifecycle, from initial request submission to AI-powered adjudication, with all processing happening ephemerally within your dedicated, isolated Najeeb instance.

Key Features

  • Adjudication: Receive instant responses to pre-authorization submissions
  • Ephemeral Data Processing: All data is processed temporarily and securely within your isolated Najeeb instance
  • AI-Powered Processing: Leverage Najeeb's AI Engine for intelligent pre-authorization adjudication
  • Comprehensive Validation: Built-in validation for diagnoses, medical providers, and service codes
  • Automated Validation: Built-in validation for diagnosis codes, service codes, and prescriber information
  • KSA Compliance: Fully compliant with Saudi healthcare regulations
  • Scalable Architecture: Handles high volumes of requests with reliable performance
This is a lightweight version of the AI Engine capabilities

Due to this, some capabilities of the full version of the AI Engine will be dropped under this request like:

  • Policy and benefits validation
  • Network validation
  • Member enrollment and join checks
  • Contractual rejections due to the lack of price list information

How It Works

  1. Request Submission: Your core system sends a pre-authorization request to the Najeeb API
  2. Processing: The request is processed within your isolated Najeeb instance with ephemeral data handling
  3. Validation: Automated validation of diagnosis codes, service codes, and provider credentials
  4. Response: Adjudicated result is returned to your system with approval, rejection, or additional requirements

Requirements Prior to Integration

Before integrating with Najeeb Prior Authorization Lightweight as a Service, ensure you have the following:

Technical Requirements

  1. API Access Credentials
  • Valid API key (access-key) provided by Najeeb
  • Access to your dedicated Najeeb instance endpoint
  • Network connectivity to the Najeeb API infrastructure
  1. Data Requirements
  • Transaction data (authorization number, unique transaction ID, treatment date)
  • Policy data (policy number, policy holder ERP ID)
  • Medical provider data (CCHI number). For reporting purposes, we recommend sending a list of medical providers (including names and CCHI codes) to the Najeeb technical team in advance.
  • Member data (member ID, date of birth, gender, marital status)
  • Prescriber information (doctor ID, speciality, name)
  • Item/service details (service code, description, NPHIES code and type, quantity, amount)
  • Diagnosis codes (ICD-10 format)

Data Preparation

Ensure your system can provide:

  • Transaction Data: authorization number, a unique transaction ID
  • Policy Data: policy number, policy holder ERP ID
  • Member Data: member ID, date of birth, gender, marital status
  • Provider Data: medical provider CCHI number, doctor ID/specialty/name
  • Item Data: service code, service description, NPHIES code and type, quantity, amount, benefit/sub-benefit codes
  • Diagnosis Data: ICD-10 diagnosis codes (primary/secondary)
ph_erp_id

For the ph_erp_id field, provide your internal policyholder identifier. If this identifier is not available, send the value "default" for all requests.:::

member_id

If the member_id was not defined earlier in Najeeb, then Najeeb will create a new member record with the demographics defined in the request member_dob & member_gender. Important note: If a member already exists in the system, the existing record will be retained—no duplicate will be created and no overwrite will occur. However, if you send subsequent requests with the same member_id but differing demographic information, the system will flag a member information inconsistency warning.

Request Unique Identifier
  • transaction_id is the primary idempotency key and must be unique per request; a duplicate value returns an error.
  • authorization_number is not required to be unique; it can be reused across follow-up requests related to the same authorization.
Service Identifiers

service_code, service_description, nphies_code, nphies_type, and service_type are all required on every item.

Integration Guide

The Najeeb Prior Authorization Lightweight integration is accomplished through a single API endpoint that receives a pre-authorization request from your insurance company core system. All data processing is ephemeral and handled entirely within your isolated Najeeb instance.

Historical Data Synch

Najeeb offers additional endpoints for synchronizing historical claims and requests made by the member. While integration with these APIs is optional, it allows Najeeb to make more accurate decisions by leveraging the member's past data.

Base URL

https://api.{client_namespace}.najeeb.ai/v4.0/health

Authentication

All API requests are authenticated using an API key passed in a dedicated header:

access-key: YOUR_API_KEY

For access key provisioning, please contact Najeeb support.

API Endpoint

Create Prior Authorization Lightweight Request

POST /approval-request/create

This endpoint receives a prior authorization request from your core system and processes it ephemerally within your isolated Najeeb instance. The request is validated and acknowledged synchronously.

Request Headers
HeaderTypeRequiredDescription
access-keystringYesAPI key for authentication
Content-TypestringYesMust be application/json
Request Body Parameters

The request body is a JSON object with the following structure:

{
"authorization_number": "string",
"transaction_id": "string",
"transaction_type": "string",
"policy_no": "string",
"ph_erp_id": "string",
"related_authorization_number": "string",
"medical_provider_cchi_no": "string",
"member_id": "string",
"member_dob": "string",
"member_gender": "string",
"marital_status": "string",
"treatment_date": "date",
"request_date": "date",
"claim_type": "string",
"claim_sub_type": "string",
"is_emergency": "boolean",
"is_maternity": "boolean",
"is_new_born": "boolean",
"benefit_code": "number",
"benefit_description": "string",
"diagnoses": [
{
"type": "primary",
"code": "string",
"name": "string"
},
{
"type": "secondary",
"code": "string",
"name": "string"
}
],
"items": [
{
"claimed_quantity": "number",
"claimed_amount": "number",
"duration": "string",
"admission_date": "date",
"frequency": "string",
"discharge_date": "date",
"justification": "string",
"erp_item_id": "string",
"service_code": "string",
"service_description": "string",
"nphies_code": "string",
"nphies_type": "string",
"service_type": "string",
"benefit_code": "number",
"benefit_description": "string",
"sub_benefit_code": "number",
"sub_benefit_description": "string",
"serial_number": "string"
}
],
"doctor_id": "string",
"doctor_speciality": "string",
"doctor_name": "string",
"approval_remarks": "string",
"additional_remarks": "string",
"currency": "string",
"currency_rate": "number",
"nphies_bundle_id": "string",
"provider_system_id": "string",
"provider_comment": "string",
"erp_user_id": "string",
"price_list_level": "string"
}
Parameter Details
Root Level Parameters
ParameterTypeRequiredDescriptionAccepted Values
authorization_number *stringYesThe authorization number of the prior authorization can be repeated.Alphanumeric string, 1-255 characters
transaction_id *stringYesUnique transaction ID for this request; a duplicate value returns an errorAlphanumeric string, max 255 characters
transaction_typestringNoIndicates whether this request is a pre-authorization or a claimEnum: PREAUTH, CLAIM
policy_no *stringYesThe policy number of the prior authorizationAlphanumeric string, 1-255 characters
ph_erp_id *stringYesThe ERP ID of the policy holder.String, 1-255 characters
related_authorization_numberstringNoThe related authorization number of the prior authorizationAlphanumeric string, max 255 characters
medical_provider_cchi_no *stringYesThe CCHI number of the medical providerAlphanumeric string, 1-255 characters
member_id *stringYesThe member ID of the prior authorizationAlphanumeric string, 1-255 characters
member_dob *stringYesMember date of birthISO 8601 format: YYYY-MM-DDTHH:mm:ss.sssZ
member_gender *stringYesThe gender of the memberEnum: MALE, FEMALE
marital_status *stringYesThe marital status of the memberEnum: SINGLE, MARRIED, ENGAGED, UNKNOWN, WIDOWED, DIVORCED, SEPARATED
treatment_date *dateYesThe treatment date of the prior authorizationISO 8601 format: YYYY-MM-DDTHH:mm:ss.sssZ
request_date *dateYesThe request date of the prior authorizationISO 8601 format: YYYY-MM-DDTHH:mm:ss.sssZ
claim_type *stringYesThe claim type of the prior authorizationEnum: INSTITUTIONAL, PROFESSIONAL, PHARMACY, DENTAL, OPTICAL
claim_sub_type *stringYesThe claim sub type of the prior authorizationEnum: IN_PATIENT, OUT_PATIENT, EMERGENCY
is_emergencybooleanNoFlag indicating an emergency casetrue, false
is_maternitybooleanNoFlag indicating a maternity casetrue, false
is_new_bornbooleanNoFlag indicating a newborn casetrue, false
benefit_codenumberNoThe benefit code of the prior authorizationInteger, 0-9999999
benefit_descriptionstringNoBenefit description. Used to auto-create the benefit if the code does not exist in the systemString, max 255 characters
diagnoses *arrayYesArray of diagnosis objectsMinimum 1 diagnosis required
items *arrayYesArray of item objectsMinimum one item is required
doctor_idstringNoThe doctor ID of the prior authorizationAlphanumeric string, max 255 characters
doctor_specialitystringNoThe doctor's medical specialtyString, max 255 characters
doctor_namestringNoThe doctor's nameString, max 255 characters
approval_remarksstringNoRemarks for approvalFree text, max 255 characters
additional_remarksstringNoAdditional remarks or notesFree text, max 255 characters
currencystringNoCurrency codeString, max 255 characters
currency_ratenumberNoCurrency exchange rateDecimal, minimum 0
nphies_bundle_idstringNoThe NPHIES bundle ID of the prior authorizationAlphanumeric string, max 255 characters
provider_system_idstringNoProvider system identifierAlphanumeric string, max 255 characters
provider_commentstringNoProvider commentsFree text, max 255 characters
erp_user_idstringNoThe ERP user ID of the prior authorizationAlphanumeric string, max 255 characters
price_list_levelstringNoThe price list level of the prior authorizationAlphanumeric string, max 255 characters
Diagnosis Object
ParameterTypeRequiredDescriptionAccepted Values
type *EnumYesType of diagnosisEnum: primary, secondary
code *stringYesICD-10 diagnosis codeValid ICD-10 code format, max 255 characters
namestringNoDiagnosis name/descriptionString, max 255 characters
Item Object
ParameterTypeRequiredDescriptionAccepted Values
service_code *stringYesService code of the itemAlphanumeric string, 1-255 characters
service_description *stringYesService description of the itemString, 1-255 characters
nphies_code *stringYesNPHIES code of the itemAlphanumeric string, 1-255 characters
nphies_type *stringYesNPHIES type of the itemEnum: AMBULATORY, CONSULTATION, PHARMACEUTICAL, DEVICE, OPTICAL, DENTAL, BABY_FORMULA
service_type *stringYesService type of the itemEnum: AMBULATORY, CONSULTATION, PHARMACEUTICAL, DEVICE, OPTICAL, DENTAL, BABY_FORMULA
claimed_quantitynumberNoQuantity of the item (defaults to 1 if not sent)Integer, 1-1000000000
claimed_amountnumberNoClaimed amount/price of the itemDecimal, default 0
durationstringNoDuration of the itemFree text
admission_datedateNoAdmission date of the itemISO 8601 format: YYYY-MM-DDTHH:mm:ss.sssZ
frequencystringNoFrequency of the itemEnum:[OD, BID, Q12H, TID, Q8H, QID, Q6H, QD, Q24H, QOD, QM, Q4H]
discharge_datedateNoDischarge date of the itemISO 8601 format: YYYY-MM-DDTHH:mm:ss.sssZ
justificationstringNoMedical justification for the itemFree text, max 255 characters
erp_item_idstringNoERP item ID of the itemAlphanumeric string, max 255 characters
benefit_codenumberNoBenefit code of the itemInteger, 0-9999999
benefit_descriptionstringNoBenefit description. Used to auto-create the benefit if the code does not exist in the systemString, max 255 characters
sub_benefit_codenumberNoSub benefit code of the itemInteger, 0-9999999
sub_benefit_descriptionstringNoSub-benefit description. Used to auto-create the sub-benefit if the code does not exist in the systemString, max 255 characters
serial_numberstringNoSerial number of the itemAlphanumeric string, max 255 characters
Enums

Transaction Type Enum:

  • PREAUTH - Pre-authorization request
  • CLAIM - Claim request

Member Gender Enum:

  • MALE - Male
  • FEMALE - Female

Marital Status Enum:

  • SINGLE - Single
  • MARRIED - Married
  • ENGAGED - Engaged
  • UNKNOWN - Unknown
  • WIDOWED - Widowed
  • DIVORCED - Divorced
  • SEPARATED - Separated

Claim Type Enum:

  • INSTITUTIONAL - Institutional services for inpatients
  • PROFESSIONAL - Professional services for outpatients
  • PHARMACY - Pharmacy services
  • DENTAL - Dental services
  • OPTICAL - Optical services

Claim Sub Type Enum:

  • IN_PATIENT - Inpatient services
  • OUT_PATIENT - Outpatient services
  • EMERGENCY - Emergency services

Diagnosis Type Enum:

  • primary - Primary diagnosis
  • secondary - Secondary diagnosis
Example Request
curl -X POST "https://api.{client_namespace}.najeeb.ai/v4.0/health/approval-request/create" \
-H "access-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"authorization_number": "AU-12345",
"transaction_id": "550e8400-e29b-41d4-a716-446655440001",
"transaction_type": "PREAUTH",
"policy_no": "no-01",
"ph_erp_id": "default",
"medical_provider_cchi_no": "10566",
"member_id": "mem-01",
"member_dob": "1990-01-15T00:00:00.000Z",
"member_gender": "MALE",
"marital_status": "SINGLE",
"treatment_date": "2024-02-15T10:00:00.000Z",
"request_date": "2024-02-15T10:04:20.346Z",
"claim_type": "PROFESSIONAL",
"claim_sub_type": "OUT_PATIENT",
"diagnoses": [
{
"type": "primary",
"code": "E40",
"name": "Kwashiorkor"
},
{
"type": "secondary",
"code": "Z24",
"name": "Need for immunisation against certain single viral diseases"
}
],
"items": [
{
"service_code": "FMCARS0008",
"service_description": "Pharmacological Stress Echocardiography",
"nphies_code": "55113-00-00",
"nphies_type": "AMBULATORY",
"service_type": "AMBULATORY",
"claimed_quantity": 1,
"claimed_amount": 100,
"justification": "Patient requires cardiac assessment"
}
],
"doctor_id": "1",
"doctor_speciality": "Cardiology",
"doctor_name": "Dr. Ahmed",
"approval_remarks": "This is a test prior authorization",
"additional_remarks": "Patient requires cardiac evaluation",
"currency": "SAR",
"currency_rate": 1,
"provider_system_id": "Provider System ID",
"provider_comment": "Provider Comment"
}'

Note: claim_type accepts INSTITUTIONAL, PROFESSIONAL, PHARMACY, DENTAL, or OPTICAL — adjust to the value that matches the service being submitted.

Response

Success Response (201 Created)

{
"pre_auth_internal_id": "number",
"status": "string",
"authorization_number": "string",
"transaction_id": "string",
"note": "string",
"items_results": [
{
"service_code": "string",
"approved": "boolean",
"approved_quantity": "number",
"approved_duration": "string",
"najeeb_ai_alert": "string",
"rejection_reason": []
},
{
"service_code": "string",
"approved": "boolean",
"approved_quantity": "string",
"approved_duration": "string",
"najeeb_ai_alert": "string",
"rejection_reason": [
{
"code": "string",
"nphies_code": "string",
"message": "string"
}
]
}
]
}
Response Fields
FieldTypeDescription
approval_request_internal_idnumberInternal identifier assigned to the request
statusstring"COMPLETED": means the request processing has been completed
authorization_numberstringEchoes the submitted authorization number
transaction_idstringEchoes the submitted transaction ID
request_alertsarray of stringAI-generated alerts on request level
items_decisionsarrayPer-item adjudication decisions (see Item Decision Object below)
Item Decision Object
FieldTypeDescription
service_codestringService/item code being processed
approvedbooleanFinal approval decision by Najeeb (true/false)
approved_quantitynumberQuantity approved by Najeeb for the service/item
approved_durationnumberDuration approved by Najeeb (in days)
najeeb_ai_alertnumberAI-generated alert or note on the level of the item
rejection_reasonnumberList of rejection reason objects (see below)
Rejection Reason Object
FieldTypeDescription
codestringRejection reason code from Najeeb
nphies_codestringCorresponding NPHIES code
messagestringRejection message
Example Success Response
{
"pre_auth_internal_id": 12345,
"status": "COMPLETED",
"authorization_number": "AU-12345",
"transaction_id": "550e8400-e29b-41d4-a716-446655440000",
"request_alerts": ["This Pre-auth request is similar to previously rejected requests."],
"items_results": [
{
"service_code": "FMCARS0008",
"approved": true,
"approved_quantity": 1,
"approved_duration": "30",
"najeeb_ai_alert": "",
"rejection_reason": []
},
{
"service_code": "55113-00-00",
"approved": false,
"approved_quantity": 0,
"approved_duration": "0",
"najeeb_ai_alert": "Service not medically justified for the given diagnosis",
"rejection_reason": [
{
"code": "MN-1-1",
"nphies_code": "MN-1-1",
"message": "Diagnosis does not support the requested service"
}
]
}
]
}

Error Responses

Error Response Structure

{
"ErrorCode": "string",
"message": "string",
"details": ["string"]
}

Error Codes

Error CodeHTTP StatusDescription
E_BAD_REQUEST_400400Request validation failed — see the details array for field-level errors
E_EPA_02404Diagnosis not found
E_EPA_069409Prior authorization already exists with this transaction_id:{{transaction_id}}
401 Unauthorized401Missing or invalid access-key
Example Error Responses

Bad Request:

{
"ErrorCode": "E_BAD_REQUEST_400",
"message": "Bad request",
"details": [
"member_gender must be one of the following values: MALE, FEMALE"
]
}

Diagnosis Not Found:

{
"ErrorCode": "E_EPA_02",
"message": "Diagnosis not found, The codes of the diagnosis are:[0]",
"details": []
}

Duplicate Prior Authorization:

{
"ErrorCode": "E_EPA_069",
"message": "Prior authorization already exists with this transaction_id:{{transaction_id}}",
"details": []
}

Error: Unauthorized:

{
"ErrorCode": "API key is required",
"message": "Unauthorized",
"details": []
}

Data Processing

All data processing is ephemeral, meaning:

  • Data is processed temporarily within your isolated Najeeb instance
  • No persistent storage of request data (except for audit logs)
  • Data is securely handled and encrypted in transit
  • Compliance with KSA data protection regulations

Best Practices

  1. Date Formats: Use ISO 8601 format with timezone for all date fields (e.g., 2024-01-15T10:04:20.346Z)
  2. Diagnoses: A single primary diagnosis is required to support the requested services. You may also send one or multiple additional diagnoses.
  3. Items: Ensure all required item fields are provided, especially service_code, service_description, nphies_code, nphies_type, and service_type
  4. Error Handling: Implement retry logic with exponential backoff for transient errors
  5. Validation: Validate data before sending requests to avoid unnecessary API calls
  6. Monitoring: Monitor response times and error rates
  7. Logging: Log all requests and responses for audit and debugging purposes
  8. Timeout Configuration: Set your HTTP client timeout to 50 seconds to accommodate AI Engine processing time.

Code Examples

curl -X POST "https://api.{client_namespace}.najeeb.ai/v4.0/health/approval-request/create" \
-H "access-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"authorization_number": "AU-12sdfghj2",
"transaction_id": "transaction_id3",
"transaction_type": "PREAUTH",
"policy_no": "no-01",
"ph_erp_id": "default",
"medical_provider_cchi_no": "10566",
"member_id": "mem-01",
"member_dob": "2025-12-29T11:41:30.625Z",
"member_gender": "MALE",
"marital_status": "SINGLE",
"treatment_date": "2025-12-29T11:41:30.625Z",
"request_date": "2025-12-29T11:41:30.625Z",
"claim_type": "PROFESSIONAL",
"claim_sub_type": "OUT_PATIENT",
"diagnoses": [
{
"type": "primary",
"code": "E40"
},
{
"type": "secondary",
"code": "Z24",
"name": "Need for immunisation against certain single viral diseases"
}
],
"items": [
{
"service_code": "40903-00-00",
"service_description": "Neuroendoscopy",
"service_type": "AMBULATORY",
"nphies_code": "40903-00-00",
"nphies_type": "AMBULATORY",
"claimed_quantity": 1,
"claimed_amount": 500
}
]
}'

Webhook Response (Najeeb Decision Result)

After the Najeeb Engine finishes processing a pre-authorization request, Najeeb delivers the final decision to your configured webhook endpoint. This is the asynchronous response referenced in the Integration Guide.

Webhook Configuration

To receive the Najeeb decision, register a webhook with hook_type set to PRE_AUTH_RESULT. See Webhook for registration details and the example payload.

Response Payload Structure

{
"event_type": "PRE_AUTH_RESULT",
"data": {
"pre_auth_internal_id": 161081,
"transaction_id": "#tr-0001",
"authorization_number": "#A-0001",
"nphies_reopen_at": null,
"nphies_reopen_reason": null,
"submitter_erp_id": null,
"approval_remarks": "This is a test prior authorization",
"referral_remarks": null,
"internal_referral_notes": null,
"is_referred": false,
"internal_notes": null,
"request_alerts": [
"A prior authorization for the same diagnosis and service was previously submitted and rejected."
],
"status": "PENDING",
"reviewer_erp_id": null,
"member_id": "uat-a-002",
"source": "PORTAL",
"is_emergency": false,
"is_new_born": false,
"is_maternity": false,
"related_authorization_number": null,
"claim_type": null,
"treatment_date": "2025-12-05T19:40:28.542Z",
"period_start_date": "2025-12-05T19:40:28.542Z",
"doctor_id": "1",
"doctor_name": "Dr. Ahmed",
"doctor_speciality": "Cardiology",
"nphies_bundle_id": "1",
"provider_system_id": "Provider System ID",
"provider_comment": "Provider Comment",
"ERP_user_id": null,
"price_list_level": "Price List Level",
"patient_id": "uat-a-002",
"medical_provider_cchi_no": "22697412",
"ph_erp_id": "default",
"currency": "SAR",
"currency_rate": 1,
"is_reviewer_accepted_as_road_traffic_accident": false,
"is_traffic_accident": false,
"assign_to_erp_id": null,
"additional_remarks": null,
"total_recovery_utilized": 0,
"total_exgratia_utilized": 0,
"benefit_code": null,
"is_referral": false,
"referral_provider_cchi_code": null,
"valid_days": null,
"referred_at": null,
"encounter": {
"encounter_id": "Encounter ID",
"encounter_status": "active",
"encounter_class": "inpatient",
"encounter_priority": "urgent",
"encounter_start_date": "2025-12-05T19:40:28.542Z",
"encounter_end_date": "2025-12-05T19:40:28.542Z",
"encounter_arrival_code": "A01",
"encounter_department": "Cardiology",
"encounter_triage_category": "Category1",
"encounter_triage_date": "2025-12-05T19:40:28.542Z",
"encounter_death_cause": "Heart Failure",
"encounter_admit_source": "Referral",
"encounter_length_of_stay": "5 days",
"encounter_admission": "Admission details",
"encounter_discharge": "Discharge details"
},
"items_decisions": [
{
"item_erp_id": "16562",
"service_code": "9-420-05",
"duration": null,
"frequency": "10 times",
"admission_date": "2025-12-05T19:40:28.541Z",
"discharge_date": "2025-12-05T19:40:28.541Z",
"approved_quantity": 2,
"approved_amount": 4500,
"price": 0,
"request_amount": 4500,
"provider_deductible_amount": 0,
"net_request_amount": 4500,
"rejected_amount": 0,
"price_rejected_amount": 0,
"net_payable": null,
"decision": "PENDING",
"warning_message": null,
"benefit_code": 10,
"sub_benefit_code": 1001,
"reason_code": [
{
"najeeb_ai_code": "BE-1-5",
"najeeb_ai_description": "Claim information is inconsistent with preauthorized services",
"najeeb_ai_message": "Pharmaceutical service Hepsera 10 mg tablet is inconsistent with claim type PROFESSIONAL",
"nphies_code": "BE-1-5",
"nphies_description": "Claim information is inconsistent with preauthorized services",
"special_case_amount": null,
"erp_code": null,
"is_approved": false,
"source": "RULES"
},
{
"najeeb_ai_code": "AD-2-5",
"najeeb_ai_description": "Time limit for submission has expired",
"najeeb_ai_message": "The time difference between the treatment date and the request date is more than 48 hours.",
"nphies_code": "AD-2-5",
"nphies_description": "Time limit for submission has expired",
"special_case_amount": null,
"erp_code": null,
"is_approved": false,
"source": "RULES"
}
],
"najeeb_ai_alert": "Diagnosis \"Z24\" is invalid / inactive as per the ICD AM 10th Ed. Electronic Code List Edits.",
"najeeb_ai_score": 0,
"pbm_drug_info": {
"sfda_code": "9-420-05",
"name": "Hepsera 10 mg tablet",
"scientific_name": "adefovir dipivoxil",
"manufacture_name": "Hepsera",
"pharmaceutical_form": "Tablet",
"strength": "10",
"unit": "mg",
"package_size": "30.000",
"price": 1871.95
}
},
{
"item_erp_id": "16562",
"service_code": "179-186-02",
"duration": null,
"frequency": "10 times",
"admission_date": "2025-12-05T19:40:28.541Z",
"discharge_date": "2025-12-05T19:40:28.541Z",
"approved_quantity": 2,
"approved_amount": 4500,
"price": 0,
"request_amount": 4500,
"provider_deductible_amount": 0,
"net_request_amount": 4500,
"rejected_amount": 0,
"price_rejected_amount": 0,
"net_payable": null,
"decision": "PENDING",
"warning_message": null,
"benefit_code": 10,
"sub_benefit_code": 1001,
"reason_code": [
{
"najeeb_ai_code": "BE-1-5",
"najeeb_ai_description": "Claim information is inconsistent with preauthorized services",
"najeeb_ai_message": "Pharmaceutical service Albenda 200 mg tablet is inconsistent with claim type PROFESSIONAL",
"nphies_code": "BE-1-5",
"nphies_description": "Claim information is inconsistent with preauthorized services",
"special_case_amount": null,
"erp_code": null,
"is_approved": false,
"source": "RULES"
},
{
"najeeb_ai_code": "AD-2-5",
"najeeb_ai_description": "Time limit for submission has expired",
"najeeb_ai_message": "The time difference between the treatment date and the request date is more than 48 hours.",
"nphies_code": "AD-2-5",
"nphies_description": "Time limit for submission has expired",
"special_case_amount": null,
"erp_code": null,
"is_approved": false,
"source": "RULES"
}
],
"najeeb_ai_alert": "Diagnosis \"Z24\" is invalid / inactive as per the ICD AM 10th Ed. Electronic Code List Edits.",
"najeeb_ai_score": 0,
"pbm_drug_info": {
"sfda_code": "179-186-02",
"name": "Albenda 200 mg tablet",
"scientific_name": "albendazole",
"manufacture_name": "Albenda",
"pharmaceutical_form": "Film-coated tablet",
"strength": "200",
"unit": "mg",
"package_size": "2.000",
"price": 6.15
}
}
]
}
}
Event Type

Every webhook payload includes "event_type": "PRE_AUTH_RESULT" at the root level so you can identify the notification type. Decision fields are nested under the data object.

Parameter Details

Root Level Parameters

ParameterTypeNullableDescription
event_typestringNoWebhook event identifier. Always PRE_AUTH_RESULT for this response
pre_auth_internal_idnumberNoNajeeb internal identifier for the prior authorization
transaction_idstringYesThe unique transaction ID submitted in the original request
authorization_numberstringYesThe authorization number of the prior authorization
statusstringYesThe final decision status of the prior authorization
period_start_datestringYesThe period start date of the prior authorization
treatment_datestringYesThe treatment date of the prior authorization
doctor_idstringYesThe doctor ID
doctor_namestringYesThe doctor's name
doctor_specialitystringYesThe doctor's medical specialty
nphies_reopen_atstringYesTimestamp when the request was reopened via NPHIES
nphies_reopen_reasonstringYesReason for reopening via NPHIES
submitter_erp_idstringYesERP ID of the reviewer who submitted the decision
reviewer_erp_idstringYesERP ID of the assigned reviewer
member_idstringYesThe member UUID
patient_idstringYesThe patient UUID
sourcestringYesThe source of the prior authorization
is_emergencybooleanYesFlag indicating an emergency case
is_new_bornbooleanYesFlag indicating a newborn case
is_maternitybooleanYesFlag indicating a maternity case
related_authorization_numberstringYesThe related authorization number for follow-up requests
claim_typestringYesThe claim type (INSTITUTIONAL, PROFESSIONAL, PHARMACY, DENTAL, OPTICAL)
claim_sub_typestringYesThe claim sub type (IN_PATIENT, OUT_PATIENT, EMERGENCY)
nphies_bundle_idstringYesThe NPHIES bundle ID
provider_system_idstringYesProvider system identifier
provider_commentstringYesProvider comments
ERP_user_idstringYesThe ERP user ID
price_list_levelstringYesThe price list level
medical_provider_cchi_nostringYesCCHI number of the medical provider
ph_erp_idstringYesERP code of the policy holder
currencystringYesCurrency code
currency_ratenumberYesCurrency exchange rate
is_reviewer_accepted_as_road_traffic_accidentbooleanYesWhether the reviewer accepted the case as a road traffic accident
is_traffic_accidentbooleanYesWhether the case is flagged as a road traffic accident
is_referralbooleanNoFlag indicating the request is a referred request from a previous one.
referral_provider_cchi_codestringYesCCHI code of the referral provider
valid_daysnumberYesNumber of valid days for the authorization
referred_atstringYesTimestamp when the request was referred
referral_remarksstringYesRemarks for referral
internal_referral_notesstringYesInternal referral notes
internal_notesstringYesInternal notes
is_referredbooleanNoFlag indicating the request is a referral (defaults to false)
assign_to_erp_idstringYesERP ID of the assigned user
approval_remarksstringYesRemarks for approval
additional_remarksstringYesAdditional remarks or notes
request_alertsarrayNoArray of alert and note strings generated during processing
total_recovery_utilizednumberNoTotal recovery amount utilized (defaults to 0)
total_exgratia_utilizednumberNoTotal ex-gratia amount utilized (defaults to 0)
benefit_codestringYesThe benefit code associated with the request

Encounter Object

ParameterTypeNullableDescription
encounter_idstringYesEncounter identifier
encounter_statusstringYesEncounter status
encounter_classstringYesEncounter class
encounter_prioritystringYesEncounter priority
encounter_start_datestringYesEncounter start date
encounter_end_datestringYesEncounter end date
encounter_arrival_codestringYesEncounter arrival code
encounter_departmentstringYesEncounter department
encounter_triage_categorystringYesEncounter triage category
encounter_triage_datestringYesEncounter triage date
encounter_death_causestringYesEncounter death cause
encounter_admit_sourcestringYesEncounter admit source
encounter_length_of_staystringYesEncounter length of stay
encounter_admissionstringYesEncounter admission details
encounter_dischargestringYesEncounter discharge details

Item Decision Object

Each entry in the items_decisions array represents the AI Engine's decision for a specific item in the pre-authorization request.

ParameterTypeNullableDescription
Warning message associated with the pricelist validationsstringYesThe ERP item ID submitted in the original request
service_codestringYesService code of the item
durationstringYesApproved duration
frequencystringYesFrequency of the item
admission_datestringYesAdmission date
discharge_datestringYesDischarge date
approved_quantitynumberYesThe approved quantity for this item
approved_amountnumberYesThe approved amount for this item
pricenumberYesPrice list price for the item
request_amountnumberYesThe originally requested amount
provider_deductible_amountnumberYesProvider deductible amount
net_request_amountnumberYesNet requested amount after deductions
rejected_amountnumberYesThe rejected amount for this item
price_rejected_amountnumberYesThe price-based rejected amount
net_payablenumberYesNet payable amount
approval_remarksstringYesRemarks for approval
decisionstringYesThe decision status for this item
warning_messagestringYesWarning message associated with the pricelist validations
benefit_codenumberYesBenefit code of the item
sub_benefit_codenumberYesSub benefit code of the item
reason_codearrayNoArray of reason objects explaining the decision (see below)
najeeb_ai_alertstringNoA system-generated note attached to this item indicating an AI-driven flag or observation.
najeeb_ai_scorenumberYesNajeeb AI confidence score
pbm_drug_infoobjectYesPBM drug information if the item is a pharmaceutical (see below)

Reason Code Object

Each entry in the reason_code array provides a detailed reason for the item decision.

ParameterTypeNullableDescription
najeeb_ai_codestringYesNajeeb internal reason code
najeeb_ai_descriptionstringYesNajeeb internal reason description
najeeb_ai_messagestringYesThe cause or detailed message from the AI Engine
nphies_codestringYesThe NPHIES-mapped reason code
nphies_descriptionstringYesThe NPHIES-mapped reason description
special_case_amountnumberYesAmount associated with special case handling
is_approvedbooleanYestrue if the reason code starts with 00, indicating an approval reason
sourcestringYesSource of the reason (e.g., AI, RULES, MANUAL)

PBM Drug Info Object

Present only when the item is a pharmaceutical product. Contains drug details from the PBM module.

ParameterTypeNullableDescription
sfda_codestringNoSaudi FDA drug code
namestringNoDrug name
scientific_namestringYesScientific (generic) name of the drug
manufacture_namestringYesManufacturer name
pharmaceutical_formstringYesPharmaceutical form (e.g., tablet, capsule, injection)
strengthstringYesDrug strength
unitstringYesUnit of measurement
package_sizestringYesPackage size
pricenumberYesDrug price

Example Webhook Payload

See the PRE_AUTH_RESULT example payload on the Webhook page. You must register a webhook with hook_type set to PRE_AUTH_RESULT to receive the decision result.