Cermati Protect Generic Insurance API
This is the documentation of Cermati Protect Generic Insurance API
This is the documentation of Cermati Protect Generic Insurance API
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/cermati:cermati-protect-generic-insurance-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
{
"openapi": "3.0.2",
"info": {
"title": "Cermati Protect Generic Insurance API",
"version": "1.0.2",
"description": "This is the documentation of Cermati Protect Generic Insurance API",
"termsOfService": "https://www.cermatiprotect.com/pages/terms-and-conditions",
"contact": {
"email": "dev.cermati@cermati.com"
},
"x-logo": {
"url": "https://static.cermatiprotect.com/static/dist/images/logo/cermati-protect-white.png"
}
},
"tags": [
{
"name": "API Specification",
"description": "The specification of Cermati Protect Generic Insurance API"
}
],
"servers": [
{
"url": "https://api-staging.cermatiprotect.com/insurance/v1"
},
{
"url": "https://api.cermatiprotect.com/insurance/v1"
}
],
"paths": {
"/generic": {
"post": {
"summary": "Create Application",
"description": "This endpoint creates an insurance application.",
"tags": [
"API Specification"
],
"requestBody": {
"$ref": "#/components/requestBodies/CreateApplication"
},
"responses": {
"200": {
"$ref": "#/components/responses/ApplicationOperation"
},
"409": {
"$ref": "#/components/responses/CreateApplicationConflictError"
},
"422": {
"$ref": "#/components/responses/CalculatePremiumCreateApplicationValidationError"
},
"500": {
"$ref": "#/components/responses/InternalServerError"
}
}
}
}
},
"components": {
"securitySchemes": {
"basicAuth": {
"type": "http",
"scheme": "basic"
}
},
"responses": {
"ApplicationOperation": {
"description": "",
"content": {
"application/json": {
"schema": {
"description": "",
"type": "object",
"properties": {
"refNo": {
"type": "string",
"maxLength": 140,
"description": "Unique identifier from the partner, this must be unique per application."
},
"trxId": {
"type": "string",
"maxLength": 100,
"description": "The application transaction ID generated by Cermati system."
},
"status": {
"$ref": "#/components/schemas/Status"
},
"documents": {
"type": "array",
"description": "List of the uploaded application documents",
"items": {
"type": "object",
"properties": {
"filename": {
"type": "string",
"description": "The name of the file"
},
"filetype": {
"type": "string",
"description": "The type of the file"
},
"type": {
"type": "string",
"description": "Type of the application document that is represented by this file"
}
}
}
},
"documentLinks": {
"type": "array",
"items": {
"$ref": "#/components/schemas/DocumentLink"
},
"description": "Download URL for uploaded application documents. The link will be available when the application is ISSUED status. This link will be generated and available for 24 hours from the last enquiry request. If the link expires, a partner is required to generate a new link to the document via enquire request."
},
"createdAt": {
"type": "string",
"format": "date-time",
"description": "Timestamp of the created application."
},
"updatedAt": {
"type": "string",
"format": "date-time",
"description": "Timestamp of the updated application."
},
"expiredAt": {
"type": "string",
"format": "date-time",
"description": "Expiration time of the created application."
},
"cancelledAt": {
"type": "string",
"format": "date-time",
"description": "Timestamp of the cancelled application."
}
},
"required": [
"refNo",
"trxId",
"status",
"createdAt"
]
},
"examples": {
"Success": {
"$ref": "#/components/examples/ApplicationOperationResponse"
}
}
}
}
},
"CreateApplicationConflictError": {
"description": "The error if the refNo already exists in our database",
"content": {
"application/json": {
"schema": {
"description": "",
"type": "object",
"properties": {
"error": {
"type": "string"
},
"trxId": {
"type": "string"
}
},
"required": [
"error"
]
},
"examples": {
"refNo Already Exists Error": {
"$ref": "#/components/examples/RefNoExistsResponse"
},
"refNo is Locked Error": {
"$ref": "#/components/examples/RefNoLockedResponse"
}
}
}
}
},
"CalculatePremiumCreateApplicationValidationError": {
"description": "If the request body doesn't comply to our validation rules, the error will show the problematic fields",
"content": {
"application/json": {
"schema": {
"description": "",
"type": "object",
"properties": {
"error": {
"anyOf": [
{
"type": "object",
"description": "The problem keyed by the property's name"
},
{
"type": "string"
}
]
}
},
"required": [
"error"
]
},
"examples": {
"Request Body Validation Error": {
"$ref": "#/components/examples/ReqBodyValidationErrorResponse"
},
"Product Id Is Not Valid Error": {
"$ref": "#/components/examples/ProductIdNotValidResponse"
}
}
}
}
},
"InternalServerError": {
"description": "The error if there is any error in our server",
"content": {
"application/json": {
"schema": {
"description": "",
"type": "object",
"properties": {
"error": {
"type": "string"
}
},
"required": [
"error"
]
},
"examples": {
"Internal Server Error": {
"$ref": "#/components/examples/InternalServerErrorResponse"
}
}
}
}
}
},
"requestBodies": {
"CreateApplication": {
"description": "The request that will be used to create application",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"productId": {
"type": "string",
"maxLength": 100,
"description": "Partnership Product Id given to partner.",
"example": "insurance-1"
},
"refNo": {
"type": "string",
"maxLength": 140,
"description": "Unique identifier from the partner, this must be unique per application.",
"example": "IN2331211"
},
"premium": {
"type": "number",
"description": "Amount of total insurance premium paid in IDR.",
"example": 15000
},
"adminFee": {
"type": "number",
"description": "Amount of admin fee paid in IDR.",
"example": 1200
},
"orderId": {
"type": "string",
"maxLength": 100,
"description": "Order ID/Transaction ID/Loan Contract ID on partner’s side.",
"example": "K14LB781608982"
},
"purchasedAt": {
"type": "string",
"format": "date-time",
"maxLength": 30,
"description": "Timestamp indicating when the order purchased (ISO 8601 format with timezone).",
"example": "2021-05-05T04:33:35.233+00:00"
},
"coverageStart": {
"type": "string",
"format": "date-time",
"maxLength": 30,
"description": "Date time indicating insurance coverage started (ISO 8601 format with timezone). Validation configured in product level.\n**Required for** Personal Insurance products.\n",
"example": "2021-05-05T04:33:35.233+00:00"
},
"coverageEnd": {
"type": "string",
"format": "date-time",
"maxLength": 30,
"description": "Date time indicating insurance coverage ended (ISO 8601 format with timezone). Validation configured in product level.",
"example": "2021-05-08T04:33:35.233+00:00"
},
"totalPrice": {
"type": "number",
"description": "Total price after discount for all transactions, including add-ons and tax, excluding premium in IDR. Amount >= 0.\n**Required for** Accommodation Insurance and Transportation Insurance products.\n",
"example": 5499000
},
"totalDiscount": {
"type": "number",
"description": "Total discount in IDR, amount >= 0.\n**Required for** Accommodation Insurance and Transportation Insurance products.\n",
"example": 0
},
"items": {
"type": "array",
"description": "The items that are included in this transaction.\n**Required for** Goods Insurance and Shipping Insurance products.\n",
"items": {
"$ref": "#/components/schemas/Item"
}
},
"shipment": {
"$ref": "#/components/schemas/Shipment"
},
"loan": {
"$ref": "#/components/schemas/Loan"
},
"transportationTrip": {
"$ref": "#/components/schemas/TransportationTrip"
},
"property": {
"$ref": "#/components/schemas/Property"
},
"rents": {
"type": "array",
"description": "The details of the tenancies/rents in the transaction. It can be accommodation room details, property tenancy details, or other tenancy details.\n**Required for** Accommodation Insurance products.\n*Request for Accommodation Insurance products must have 1-10 rents.*\n*Request for Property Insurance products can have 0-1 rent.*\n",
"items": {
"$ref": "#/components/schemas/Rent"
}
},
"parties": {
"type": "array",
"description": "The details of the parties/people that are involved in this transaction.\n*Request for Accommodation Insurance products must have 1 party with type CONTACT.*\n*Request for Credit Insurance products must have 1 party with type CREDITOR and 1 party with type DEBTOR.*\n*Request for Goods Insurance products must have 1 party with type CUSTOMER and 1 party with type SELLER.*\n*Request for Personal Insurance products must have 1 party with type INSURED.*\n*Request for Property Insurance products must have 1 party with type OWNER and 0-1 party with type RENTER.*\n*Request for Shipping Insurance products must have 1 party with type ORIGIN and 1 party with type DESTINATION.*\n*Request for Transportation Insurance products must have 1 party with type CONTACT and 1-20 parties with type PASSENGER.*\n",
"items": {
"$ref": "#/components/schemas/Party"
}
},
"overrideNotificationUrl": {
"$ref": "#/components/schemas/OverrideNotificationUrl"
},
"additionalParameters": {
"type": "object",
"additionalProperties": true,
"description": "Extra parameters applicable to the product. The expected fields depend on the product ID."
}
},
"required": [
"productId",
"refNo",
"parties"
]
},
"examples": {
"Create Accommodation Insurance Application": {
"$ref": "#/components/examples/CreateAccommodationInsuranceApplicationRequest"
},
"Create Credit Insurance Application": {
"$ref": "#/components/examples/CreateCreditInsuranceApplicationRequest"
},
"Create Goods Insurance Application": {
"$ref": "#/components/examples/CreateGoodsInsuranceApplicationRequest"
},
"Create Personal Insurance Application": {
"$ref": "#/components/examples/CreatePersonalInsuranceApplicationRequest"
},
"Create Property Insurance Application": {
"$ref": "#/components/examples/CreatePropertyInsuranceApplicationRequest"
},
"Create Shipping Insurance Application": {
"$ref": "#/components/examples/CreateShippingInsuranceApplicationRequest"
},
"Create Transportation Insurance Application": {
"$ref": "#/components/examples/CreateTransportationInsuranceApplicationRequest"
}
}
}
}
}
},
"schemas": {
"Status": {
"type": "string",
"maxLength": 20,
"description": "Status of the application, refer to Insurance Application Status section.",
"enum": [
"ACTIVATED",
"CANCELLED",
"DATA_COMPLETE",
"DATA_INCOMPLETE",
"EXPIRED",
"INVALID",
"ISSUED",
"REJECTED"
]
},
"Item": {
"type": "object",
"description": "The details of item that will be insured.",
"properties": {
"skuId": {
"maxLength": 100,
"type": "string",
"description": "SKU of the item. This needs to be specified when updating identities.",
"example": "Pho/Sam/A72/256-8"
},
"name": {
"maxLength": 140,
"type": "string",
"description": "Name of the item.",
"example": "Samsung A72 256/8"
},
"brand": {
"maxLength": 140,
"type": "string",
"description": "Brand of the item.",
"example": "Samsung"
},
"category": {
"maxLength": 200,
"type": "string",
"description": "Category of the item.",
"example": "Smartphone"
},
"pricePerUnit": {
"type": "number",
"description": "Base price of single item in IDR. Must be >= 0.",
"example": 6499000
},
"discountPerUnit": {
"type": "number",
"description": "Applied discount for single item in IDR. Must be >= 0.",
"example": 100000
},
"feePerUnit": {
"type": "number",
"description": "Applied fee for single item in IDR. Must be >= 0.",
"example": 1000
},
"weight": {
"type": "number",
"description": "Weight in kg. Must be >= 0.",
"example": 1
},
"quantity": {
"type": "number",
"description": "Quantity of the item. Must be > 0.",
"example": 1
},
"description": {
"maxLength": 500,
"type": "string",
"description": "Item description and specification.",
"example": "Samsung A72 256/8 Super AMOLED, 90Hz, 800 nits (HBM)"
},
"validAt": {
"maxLength": 30,
"type": "string",
"format": "date-time",
"description": "Timestamp of item validity (ISO 8601).",
"example": "2021-05-05T07:33:35.233+00:00"
},
"invalidAt": {
"maxLength": 30,
"type": "string",
"format": "date-time",
"description": "Timestamp of item invalidity (ISO 8601).",
"example": "2021-05-05T07:33:35.233+00:00"
},
"activationRequired": {
"type": "boolean",
"description": "This field indicates that the specified items require the customer to do activation using identities field. If activationRequired is TRUE then identities field need to be updated for claim.\n**Required for** Goods Insurance products\n",
"example": false
},
"identities": {
"type": "array",
"description": "Identities of each item e.g. IMEI, S/N, or unique item identifier from partner. Some insurance requires this to be updated after the application is submitted.",
"items": {
"$ref": "#/components/schemas/ItemIdentity"
}
}
},
"required": [
"skuId",
"name",
"category",
"pricePerUnit",
"discountPerUnit",
"feePerUnit",
"weight",
"quantity"
]
},
"ItemIdentity": {
"type": "object",
"properties": {
"type": {
"type": "string",
"maxLength": 30,
"description": "Identity type of the good. Available option: IMEI/Serial Number/Other (please specify).",
"example": "IMEI"
},
"number": {
"type": "string",
"maxLength": 50,
"description": "Identities of each item e.g. IMEI, S/N, or unique item identifier from partner. Some insurance requires this to be updated after the application is submitted. Requires at least 1 element of object type Identity.",
"example": "507406906851065"
}
},
"required": [
"idType",
"idNumber"
]
},
"Shipment": {
"type": "object",
"description": "The shipment in the transaction.\n**Required for** Goods Insurance and Shipping Insurance products.\n",
"properties": {
"shippingId": {
"maxLength": 140,
"type": "string",
"description": "Delivery ID or Airway Bill Number (AWB).\n**Required for** Shipping Insurance products\n",
"example": "CGK012455485646"
},
"courierName": {
"maxLength": 140,
"type": "string",
"description": "Name of the logistic provider e.g. Self, JNT, Sicepat, etc.\n**Required for** Shipping Insurance products\n",
"example": "Courier"
},
"serviceType": {
"maxLength": 140,
"type": "string",
"description": "Delivery service type e.g. standard, express, same day.\n**Required for** Shipping Insurance products\n",
"example": "Express"
},
"shippingFee": {
"type": "number",
"description": "Total delivery fee in IDR. Value >= 0.\n**Required for** Shipping Insurance products\n",
"example": 9000
},
"otherFee": {
"type": "number",
"description": "Total other fees for shipping level in IDR e.g. processing fee, tax, etc. Value >= 0.\n**Required for** Shipping Insurance products\n",
"example": 1000
},
"shippedAt": {
"maxLength": 30,
"type": "string",
"format": "date-time",
"description": "Timestamp shipping occurred (ISO 8601 format with timezone). Some integration case this field needs to be included in data complete validation e.g. re-shipping.",
"example": "2021-05-06T04:33:35.233+00:00"
},
"deliveredAt": {
"maxLength": 30,
"type": "string",
"format": "date-time",
"description": "Timestamp delivered to destination (ISO 8601). Required for re-shipping insurance to be updated later if empty to enable activation. Some integration case this field needs to be included in data complete validation e.g. re-shipping.",
"example": "2021-05-05T07:33:35.233+00:00"
}
}
},
"Loan": {
"type": "object",
"description": "The details of loan.\n**Required for** Credit Insurance products.\n",
"properties": {
"loanDate": {
"maxLength": 10,
"type": "string",
"format": "date",
"description": "The loan application date. Format: ”YYYY-MM-DD”.\n**Required for** Credit Insurance products.\n",
"example": "2021-05-01"
},
"dueDate": {
"maxLength": 10,
"type": "string",
"format": "date",
"description": "Due date from given loan. Format: ”YYYY-MM-DD”.\n**Required for** Credit Insurance products.\n",
"example": "2021-11-01"
},
"tenure": {
"type": "integer",
"format": "int64",
"description": "Tenure based on tenureUnit. Example: if value is 6 and tenureUnit is “MONTHLY” then the loan tenure is 6 months.\n**Required for** Credit Insurance products.\n",
"example": 6
},
"tenureUnit": {
"type": "string",
"enum": [
"DAILY",
"MONTHLY",
"YEARLY"
],
"description": "Unit for tenure.",
"example": "MONTHLY"
},
"loanAmount": {
"type": "number",
"description": "Loan amount in IDR. Amount must be >= 0.\n**Required for** Credit Insurance products.\n",
"example": 5000000
}
}
},
"TransportationTrip": {
"type": "object",
"description": "The details of transportation trip in this transaction.\n**Required for** Transportation Insurance products.\n",
"properties": {
"tripType": {
"type": "string",
"maxLength": 20,
"description": "Type of the trip: \n - One-way, \n - Round-trip, \n - Multiple stops, \n - Smart trip\n - Other, please specify\n**Required for** Transportation Insurance products.\n",
"example": "One-way"
},
"origin": {
"$ref": "#/components/schemas/Location"
},
"destination": {
"$ref": "#/components/schemas/Location"
},
"trips": {
"type": "array",
"description": "List of trips included under the same order ID. Max 10 trips.\n**Required for** Transportation Insurance products.\n",
"minItems": 1,
"maxItems": 10,
"items": {
"$ref": "#/components/schemas/Trip"
}
}
}
},
"Trip": {
"type": "object",
"description": "The trip details.",
"properties": {
"tripId": {
"type": "string",
"maxLength": 200,
"description": "Unique identifier associated with the trip. Accepts alphanumeric without special characters.",
"example": "T41948"
},
"tripType": {
"type": "string",
"enum": [
"BUS",
"FLIGHT",
"SHIP",
"TRAIN"
],
"description": "Type of trip.",
"example": "FLIGHT"
},
"tripLegs": {
"type": "array",
"items": {
"$ref": "#/components/schemas/TripLeg"
}
},
"ticketPrice": {
"$ref": "#/components/schemas/PriceCategory"
},
"ticketRefundableAmount": {
"$ref": "#/components/schemas/PriceCategory"
},
"addOns": {
"type": "array",
"items": {
"$ref": "#/components/schemas/AddOn"
}
}
},
"required": [
"tripId",
"tripType",
"tripLegs",
"ticketPrice",
"ticketRefundableAmount"
]
},
"TripLeg": {
"type": "object",
"description": "A leg taken for within a trip.",
"properties": {
"tripNo": {
"type": "string",
"maxLength": 100,
"description": "Trip Number can be mapped into Flight Number, Train Number.",
"example": "GA404"
},
"tripName": {
"type": "string",
"maxLength": 140,
"description": "Trip name associated with bus name, train name or airline name e.g. Taksaka Luxury, Argo Parahyangan, Citilink, Garuda Indonesia.",
"example": "Garuda Indonesia GA 404"
},
"class": {
"type": "string",
"maxLength": 50,
"description": "Cabin class e.g. Economy, Business, Executive, First class.",
"example": "Economy"
},
"subclass": {
"type": "string",
"maxLength": 50,
"description": "Cabin subclass e.g. if the class is \"Economy (CA)\", fill this field with CA.",
"example": "M"
},
"origin": {
"$ref": "#/components/schemas/Location"
},
"destination": {
"$ref": "#/components/schemas/Location"
},
"departureTime": {
"type": "string",
"format": "date-time",
"description": "Scheduled trip departure time (ISO 8601 format with timezone).",
"example": "2021-05-09T02:25:04.962+00:00"
},
"arrivalTime": {
"type": "string",
"format": "date-time",
"description": "Scheduled trip arrival time (ISO 8601 format with timezone). The value must be after or equal to the departureTime value.",
"example": "2021-05-09T05:20:04.962+00:00"
}
},
"required": [
"tripNo",
"tripName",
"class",
"origin",
"destination",
"departureTime",
"arrivalTime"
]
},
"PriceCategory": {
"type": "object",
"description": "Ticket price for this passenger after tax, excluding add-on for each category.",
"properties": {
"adult": {
"type": "integer",
"format": "int64",
"description": "Adult price amount in IDR, amount >= 0.",
"example": 1709100
},
"child": {
"type": "integer",
"format": "int64",
"description": "Child price amount in IDR, amount >= 0.",
"example": 854550
},
"infant": {
"type": "integer",
"format": "int64",
"description": "Infant price amount in IDR, amount >= 0.",
"example": 854550
}
},
"required": [
"adult",
"child",
"infant"
]
},
"Location": {
"type": "object",
"description": "Location details.",
"properties": {
"code": {
"type": "string",
"maxLength": 5,
"description": "Can follow standard IATA airport code for flight, or station code for train.",
"example": "CGK"
},
"type": {
"type": "string",
"enum": [
"AIRPORT",
"PORT",
"STATION",
"TERMINAL",
"AGENT",
"SHELTER"
],
"description": "Indicating the location type options.",
"example": "AIRPORT"
},
"name": {
"type": "string",
"maxLength": 140,
"description": "Name of the location.",
"example": "Soekarno-Hatta International"
}
},
"required": [
"code",
"type",
"name"
]
},
"Property": {
"type": "object",
"description": "The details of property.\n**Required for** Accommodation Insurance and Property Insurance products\n",
"properties": {
"name": {
"type": "string",
"maxLength": 140,
"description": "Name of the property.",
"example": "Hotel Indonesia Kempinski Jakarta"
},
"type": {
"type": "string",
"maxLength": 30,
"description": "Property type, options:\n- hotel\n- apartment\n- motel\n- bed and breakfast\n- house\n- townhouse\n- condominium\n- other (please specify)\n",
"example": "hotel"
},
"locationName": {
"type": "string",
"maxLength": 140,
"description": "Name of the location.",
"example": "Hotel Indonesia Kempinski Jakarta"
},
"address": {
"type": "string",
"maxLength": 1000,
"description": "Property’s street address.",
"example": "Jalan MH Thamrin No. 1"
},
"province": {
"type": "string",
"maxLength": 140,
"description": "Property’s province (provinsi).\n**Required for** Property Insurance products.\n",
"example": "Jalan MH Thamrin No. 1"
},
"city": {
"type": "string",
"maxLength": 140,
"description": "Property’s city (kota).",
"example": "DKI Jakarta"
},
"district": {
"type": "string",
"maxLength": 140,
"description": "Property’s district (kecamatan).\n**Required for** Property Insurance products.\n",
"example": "Jakarta Pusat"
},
"village": {
"type": "string",
"maxLength": 140,
"description": "Property’s village/subdistrict (kelurahan).\n**Required for** Property Insurance products.\n",
"example": "Menteng"
},
"postalCode": {
"type": "string",
"maxLength": 10,
"description": "Property’s postal code.",
"example": "10310"
},
"country": {
"type": "string",
"maxLength": 2,
"description": "Country where the property is located. ISO Country code e.g. ID, SG.",
"example": "ID"
},
"totalRooms": {
"type": "integer",
"format": "int64",
"description": "Total number of room(s). Required for rented property. The minimum value for this property is 1.",
"example": 500
},
"gues
# --- truncated at 32 KB (72 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/cermati/refs/heads/main/openapi/cermati-protect-openapi.json