Insurance
Reference
Insurance Types and Schemas

Insurance Types and Schemas

⚠️

This page describes the insurance type schemas; the request itself is on the Quotes page.

An insurance type is Lunixi's provider-independent insurance code. In quote and order requests you state which insurance you want with this code. Which provider product is used is decided by your provider connections, not by your request.

  • A published type code never changes and is never removed. New types are added to the catalog.
  • Field names and formats are the same whichever provider you work with. Provider-specific field names are not accepted.
  • Who collects the premium depends on the product in your connection, not on the type. Check the premiumCollectedBy field of the quote option; if it is PROVIDER, your provider collects the premium: Provider Collection.

Type catalog

TypeCoversBasket item categoryType objectStatus
TICKET_CANCELLATIONCancellation of a bus, flight or train ticketTICKETtickets (array)Active, schema version 1
HOTEL_CANCELLATIONCancellation of a hotel bookingHOTELstay (object)Active, schema version 1
DEVICE_INSURANCEMobile phone insuranceDEVICEdevice (object)Active, schema version 1
DEVICE_PROTECTIONMobile phone repair and protection planDEVICEdevice (object)Active, schema version 1
EXTENDED_WARRANTYExtended warranty for electronics and home appliancesELECTRONICSproduct (object)Active, schema version 1
ROADSIDE_ASSISTANCEVehicle roadside assistanceVEHICLEvehicle (object)Active, schema version 1
TRAVEL_HEALTHDomestic and international travel health insuranceTRAVELtrip (object)Active, schema version 1
MUSICAL_INSTRUMENT_PROTECTIONMusical instrument repair and protection planMUSICAL_INSTRUMENTinstrument (object)Active, schema version 1
EVENT_ACCIDENTDaily personal accident cover for an event attendeeEVENTevent (object)Active, schema version 1
MICROMOBILITY_ACCIDENTDaily personal accident cover for the rider of a rented scooterMICROMOBILITYrental (object)Active, schema version 1
PERSONAL_ACCIDENTAnnual personal accidentNone: sold without a basket itemaccident (object)Active, schema version 1
MEDICAL_COMPLICATIONMedical procedure complications in health tourismHEALTHprocedure (object)Active, schema version 1
PET_HEALTHHealth insurance for cats and dogsPET; also sold without a basket itempet (object)Active, schema version 1
VEHICLE_TAG_PROTECTIONVehicle identification tag (UTTS) protectionVEHICLE; also sold without a basket itemvehicle (object)Active, schema version 1
MOTOR_GREEN_CARDGreen Card: the vehicle's liability insurance abroadVEHICLE or TRAVEL; also sold without a basket itemvehicle (object)Active, schema version 1
INBOUND_TRAVEL_HEALTHHealth insurance for a foreign visitor coming to TürkiyeTRAVEL; also sold without a basket itemtrip (object)Active, schema version 1
FOREIGN_RESIDENT_HEALTHHealth insurance for a foreigner residing in TürkiyeNone: sold without a basket itemresidence (object)Active, schema version 1
ABROAD_STAY_HEALTHHealth insurance while studying or working abroadEDUCATION or TRAVEL; also sold without a basket itemabroadStay (object)Active, schema version 1
MOTOR_THIRD_PARTY_LIABILITYCompulsory motor third-party liability insuranceVEHICLE; also sold without a basket item; leads toovehicle (object)Active, schema version 1; lead schema version 1
MOTOR_COMPREHENSIVEComprehensive motor insuranceVEHICLE; also sold without a basket item; leads toovehicle (object)Active, schema version 1; lead schema version 1
MOTOR_EXCESS_LIABILITYVoluntary excess motor liability insurance for a vehicleVEHICLE; also sold without a basket itemvehicle (object)Active, schema version 1
COMPULSORY_EARTHQUAKECompulsory earthquake insurance (DASK)HOME; also sold without a basket itemproperty (object)Active, schema version 1
HOME_INSURANCEHome insuranceHOME; also sold without a basket itemproperty (object)Active, schema version 1
SUPPLEMENTARY_HEALTHSupplementary health insuranceNone: sold without a basket itemhealth (object)Active, schema version 1
CARGO_TRANSITRoad cargo transit insuranceNone: lead onlyshipment (object)Active, lead schema version 1

The basket item category is the item's insuranceCategory value; which basket item a type is offered for is resolved from this field (see Basket Items). The DEVICE category has two separate types: device insurance and the repair plan are two products with different coverage, inputs and documents.

A type without a basket item category is not linked to a basket item; it is sold only on the API path, without a basket item: Selling Without a Basket Item. Types marked "also sold without a basket item" are sold both ways: with a basket item, and on the API path without one. All other types are offered only with a basket item.

Type objects other than tickets are singular: a quote covers a single stay, device, product, vehicle, trip, musical instrument, event ticket, rental, medical procedure, animal, period or home; on a basket-linked quote this is a single basket item. A PERSONAL_ACCIDENT, FOREIGN_RESIDENT_HEALTH or SUPPLEMENTARY_HEALTH quote covers a single person. On an INBOUND_TRAVEL_HEALTH or ABROAD_STAY_HEALTH quote all insured persons are on the same policy.

Lead types ("lead only") do not return a quote. These types have no quote, premium collection or policy; the buyer's details are passed to the provider in your connection as a lead: Leads. A quote request for a lead type receives 412 insurance.type.not_available. The fields of lead types are in their lead schema.

Types marked "leads too" both return quotes and accept leads. A quote request is sent with the type's schema, a lead request with the type's lead schema. A quote goes to the product in your connections that returns quotes, a lead to the product that accepts leads; they are separate products.

Schema version (schemaVersion)

The fields of each type are defined by a schema, and schemas are versioned per type (schemaVersion).

  • A published schema version never changes: its field set and requirements are not tightened later.
  • A breaking change is published as a new schemaVersion; the old version stays available alongside it.
  • A provider updating its own product does not change the Lunixi schema.

Pre-fill data in the basket item

For every type sold with a basket item, you can also give the fields on this page in the basket item, before the quote request:

  • Some of the non-personal fields are filled from the item's insuranceContext. Which key fills which field in which type: Basket Items › Pre-filling.
  • The person fields and the other fields of the type object are given with the item's insuranceData. Field names and formats are the same as on this page; the type object is a single object for the item (tickets included) and carries no basketItemId: Basket Items › Insurance pre-fill data.
  • The fields you give in the basket count towards the requirements of the quote. In the quote request you send only the missing ones: Quote › Quote with pre-fill data.

The fields of types sold only without a basket item, and of lead types, are sent in the request.

Stages

Whether a field is required depends on the stage of the request:

StageWhenRequired fields
QUOTEWhen you get a quoteThe fields needed for pricing
POLICYWhen you create an order and when the policy is issuedThe required fields of the QUOTE stage plus the fields needed for the policy
  • If the quote is linked to a payment's basket (by payment ID or on the Checkout Form), basketItemId is also required on the type object; on every entry when the type object is an array, such as tickets.
  • On a quote obtained without a basket item, basketItemId is not sent; if it is, the request is rejected.
  • Send the POLICY stage fields in the quote request as well. Order and policy requests carry no extra fields; the policy is issued with the quote's data. See Quotes.

Additional product requirements

A type's schema covers the fields of every product that offers the type. A product in your connections may make a field that is optional in the schema required, or ask for a field at an earlier stage than the schema does.

  • These fields are marked with requiredBy in the fields array of the Eligibility response.
  • If a field the product needs at the quote stage is missing, only that product's option is excluded; the other options are returned: Quotes › Excluded options.
  • If a field the product needs at the policy stage is missing, the order is rejected with 422 insurance.validation.invalid.

Person fields (policyholder, insured[])

The person fields are the same for every type. What varies between types is which identity types are accepted, how many insured persons can be sent, and which field is required at which stage. These are in the person table of each type's section.

FieldTypeRule
identityTypeenumIdentity type: TCKN, PASSPORT, VKN; limited to the ones the type accepts. If sent, identityNumber is required too.
identityNumberstringIdentity number, validated against identityType. If sent, identityType is required too.
firstNamestringFirst name. Text, at most 100 characters.
lastNamestringLast name. Text, at most 100 characters.
birthDatestringDate of birth, YYYY-MM-DD; cannot be in the future. In the MOTOR_THIRD_PARTY_LIABILITY schema it applies only to a natural person (TCKN, PASSPORT); if sent with identityType: VKN, the request is rejected.
genderenumGender: MALE, FEMALE. Exists only in the DEVICE_INSURANCE, TRAVEL_HEALTH, MUSICAL_INSTRUMENT_PROTECTION, MEDICAL_COMPLICATION, INBOUND_TRAVEL_HEALTH and FOREIGN_RESIDENT_HEALTH schemas; if sent for another type, the request is rejected.
birthPlacestringPlace of birth. Text, at most 100 characters. Exists only in the MEDICAL_COMPLICATION, INBOUND_TRAVEL_HEALTH and FOREIGN_RESIDENT_HEALTH schemas; if sent for another type, the request is rejected.
fatherNamestringFather's name. Text, at most 100 characters. Exists only in the FOREIGN_RESIDENT_HEALTH schema; if sent for another type, the request is rejected.
relationshipenumThe insured's relationship to the policyholder: SELF, SPOUSE, CHILD. Exists only in the ABROAD_STAY_HEALTH schema and only on insured[] entries; if sent elsewhere, the request is rejected.
nationalityCountryCodestringNationality, ISO 3166-1 alpha-2. Exists only in the EVENT_ACCIDENT, MICROMOBILITY_ACCIDENT, INBOUND_TRAVEL_HEALTH and FOREIGN_RESIDENT_HEALTH schemas; if sent for another type, the request is rejected.
companyNamestringCompany name. Text, at most 200 characters. Exists only in the MUSICAL_INSTRUMENT_PROTECTION and MOTOR_THIRD_PARTY_LIABILITY schemas and applies only when identityType: VKN; if sent with another identity type or for another type, the request is rejected.
heightCmintegerHealth declaration: height, centimetres; 30-250. Exists only in the SUPPLEMENTARY_HEALTH schema and only on insured[] entries; if sent elsewhere, the request is rejected.
weightKgintegerHealth declaration: weight, kilograms; 1-350. Exists only in the SUPPLEMENTARY_HEALTH schema and only on insured[] entries.
pregnancyStatusenumHealth declaration: pregnancy status, PREGNANT. Exists only in the SUPPLEMENTARY_HEALTH schema, only on insured[] entries, and applies only on a quote that asks for pregnancy cover: SUPPLEMENTARY_HEALTH.
emailstringEmail address.
phonestringPhone number, E.164.
addressobjectAddress; fields below.

address:

FieldTypeRule
countryCodestringCountry, ISO 3166-1 alpha-2.
cityCodestringTurkish province plate code, 01-81.
districtCodestringDistrict, Lunixi reference code (DISTRICT, under the province).
linestringAddress line. Text, at most 500 characters.

The health declaration (heightCm, weightKg, pregnancyStatus) is special-category personal data.

Where a person table says "address (province, district, line)", address is required at that stage together with cityCode, districtCode and line. Where it says "address (country, province, district, line)", countryCode is required too; where it says "address line", address is required with line only. Person fields not named in the table are optional.

In lead schemas, policyholder carries only the identity type and number, date of birth, email and phone; any other person field is rejected. See Lead schemas.

Format details: Data Formats.

Reference codes

Fields such as brand, model, vehicle type, usage, liability limit, product category, occupation, medical procedure, pet breed, dwelling type, bank and district carry a Lunixi reference code. Provider identifiers are not accepted. Get the valid codes from this endpoint:

GET /api/v1/insurance/reference/{kind}

kindDataparentCode
COUNTRYCountry (ISO 3166-1 alpha-2)Not sent
CITYProvince (plate code)Not sent
DISTRICTDistrictRequired: province code
DEVICE_BRANDMobile phone brandNot sent
DEVICE_MODELMobile phone modelRequired: DEVICE_BRAND code
VEHICLE_BRANDVehicle brandNot sent
VEHICLE_MODELVehicle modelRequired: VEHICLE_BRAND code
VEHICLE_TYPEVehicle type (usage style or class)Not sent
PRODUCT_CATEGORYProduct category (electronics and home appliances, musical instruments)Not sent
OCCUPATIONOccupationNot sent
MEDICAL_PROCEDURE_COVERMedical procedure and cover limitNot sent
PET_BREEDPet breedRequired: the animal's species, CAT or DOG
VEHICLE_USAGEVehicle usageNot sent
LIABILITY_LIMITLiability limit per vehicleNot sent
DWELLING_TYPEDwelling typeNot sent
DWELLING_FLOORFloor of the unitNot sent
BANKBankNot sent
BANK_BRANCHBank branchRequired: BANK code
FINANCE_INSTITUTIONFinance institutionNot sent
ADDRESS_VILLAGEAddress chain: town or villageRequired: DISTRICT code
ADDRESS_NEIGHBOURHOODAddress chain: neighbourhoodRequired: ADDRESS_VILLAGE code
ADDRESS_STREETAddress chain: avenue or streetRequired: ADDRESS_NEIGHBOURHOOD code
ADDRESS_BUILDINGAddress chain: buildingRequired: ADDRESS_STREET code; also outerDoorNumber
ADDRESS_UNITAddress chain: independent unit (flat); its code is the UAVT address codeRequired: ADDRESS_BUILDING code
Query parameterTypeDescription
parentCodestringParent code. Send it for the kinds where the table marks it as required.
limitintegerRecords per page, 1-100. Default 25.
cursorstringpageInfo.nextCursor from the previous response. Not sent on the first page.
vehicleTypeCodestringVEHICLE_BRAND and VEHICLE_MODEL only: vehicle type code (VEHICLE_TYPE). Sent together with modelYear; see List by vehicle type and year.
modelYearintegerVEHICLE_BRAND and VEHICLE_MODEL only: model year. Sent together with vehicleTypeCode.
outerDoorNumberstringADDRESS_BUILDING only, and required there: the building's outer door number; see UAVT address chain.

In the response the codes are in the data.items array; each entry carries code, label (display names by language code, e.g. tr-TR) and parentCode. Paging information is in the pageInfo field. The list returns only codes in use and is the same for all merchants; the brand and model list filtered by vehicle type and year and the address chain are the exceptions.

  • Send the code as is; do not use the display name (label) in requests.
  • A code that is well-formed but not recognized, or that has no counterpart at your connection's provider, is rejected at quote time with 422 insurance.reference.unknown (Error Codes). Do not send guessed or empty values.
  • The country code (COUNTRY) is also used in nationality and destination country fields. If a country has no counterpart at your connection's provider, that field receives 422 insurance.reference.unknown too.

List by vehicle type and year

You can filter the VEHICLE_BRAND and VEHICLE_MODEL lists by vehicle type and model year: GET /api/v1/insurance/reference/VEHICLE_BRAND?vehicleTypeCode=<vehicle type code>&modelYear=<year>. For the model list, send the brand as parentCode.

  • The filtered list is read from the providers in your connections at request time. Only the brands and models that your connections offer and that have a Lunixi code are returned, so the list is specific to your account and can change over time.
  • vehicleTypeCode and modelYear are sent together. If one is missing, the request receives 422 insurance.validation.invalid (reason: required). If neither is sent, all codes in use are returned.
  • The model year must be between 1950 and the year after the current year; otherwise reason: invalid_model_year.
  • If these parameters are sent for another kind, reason: not_applicable is returned.
  • If none of your connections has a provider that offers a filtered list, the response is 422 insurance.validation.invalid (field: kind, reason: live_reference_unavailable). If the vehicle type code has no counterpart at your connection's provider, the response is 422 insurance.reference.unknown.

UAVT address chain

In the home types (COMPULSORY_EARTHQUAKE, HOME_INSURANCE) the home's address is sent as a single field: property.uavtAddressCode, the address code of the independent unit in the National Address Database (UAVT). The UAVT address code is a national code. If your buyer knows the code, you can send it directly; otherwise find it by walking the address chain step by step. At each step, show the list to the buyer and send the code of the chosen entry as the parentCode of the next step:

StepRequestChosen code
1. ProvinceGET /api/v1/insurance/reference/CITYProvince plate code
2. DistrictGET /api/v1/insurance/reference/DISTRICT?parentCode=<province code>District code
3. Town or villageGET /api/v1/insurance/reference/ADDRESS_VILLAGE?parentCode=<district code>Town or village code
4. NeighbourhoodGET /api/v1/insurance/reference/ADDRESS_NEIGHBOURHOOD?parentCode=<town or village code>Neighbourhood code
5. Avenue or streetGET /api/v1/insurance/reference/ADDRESS_STREET?parentCode=<neighbourhood code>Avenue or street code
6. BuildingGET /api/v1/insurance/reference/ADDRESS_BUILDING?parentCode=<street code>&outerDoorNumber=<outer door number>Building code
7. Independent unitGET /api/v1/insurance/reference/ADDRESS_UNIT?parentCode=<building code>UAVT address code

The code of the entry chosen at the last step is the UAVT address code; send it in the quote request as property.uavtAddressCode. The other codes of the chain are not sent with the quote.

  • From the town or village step onwards, the lists are read from the providers in your connections at request time and are not stored permanently. If none of your connections has a provider that offers the address chain, the request receives 422 insurance.validation.invalid (field: kind, reason: live_reference_unavailable).
  • The codes of the chain are national address codes. Town or village, neighbourhood, avenue or street and building codes have 1-12 digits; the independent unit's code (the UAVT address code) has 10 digits. Codes are text; leading zeros are kept. At these steps, a malformed parent code receives reason: invalid_reference_code with the field path parentCode.
  • At the town or village step, if the district code has no counterpart at your connection's provider, the request receives 422 insurance.reference.unknown with the field path parentCode.
  • The building list needs the building's outer door number (outerDoorNumber) together with the street code. An outer door number starts with a digit; it can contain digits, letters, /, -, . and spaces; it has at most 16 characters (e.g. 12, 12A, 12/1). If it is not sent, reason: required is returned; if it is malformed, reason: invalid_outer_door_number. If it is sent for another kind, reason: not_applicable is returned.
  • In address lists label is the official place name; tr-TR and en-US carry the same text. Paging is the same as for the other reference lists (limit, cursor).
  • An address is personal data. Do not send the chain codes or the UAVT address code in the insuranceContext field of a basket item.

The UAVT address code is checked at quote time. A malformed code receives 422 insurance.validation.invalid (reason: invalid_uavt_address_code) with the field path property.uavtAddressCode. A well-formed code that does not exist in UAVT receives reason: unknown_uavt_address_code with the same field path, and the quote request is not sent to the provider.

TICKET_CANCELLATION: schema version 1

Insurance against the cancellation of a bus, flight or train ticket. It is resolved from a basket item with insuranceCategory: TICKET.

The type-specific fields of the request body have three roots: policyholder, insured and the type object tickets.

FieldTypeRequiredRule
policyholderobjectNoThe policyholder. Accepted identity types: TCKN, PASSPORT, VKN.
insuredarrayQUOTEThe insured persons; 1-10 entries. Accepted identity types: TCKN, PASSPORT.
ticketsarrayQUOTEThe insured tickets; 1-10 entries. basketItemId is unique across tickets: one basket item is one ticket.

tickets[]

FieldTypeRequiredRule
basketItemIdstringOn a basket-linked quoteThe id of the basket item the ticket belongs to. At most 256 characters; leading and trailing spaces are not accepted, the value is stored as is.
transportModeenumQUOTEBUS, FLIGHT, TRAIN
carrierstringQUOTEThe carrier. Text, at most 100 characters.
priceAmountintegerQUOTETicket amount in minor units; at least 1.
departureAtstringQUOTEDeparture time. ISO 8601, time zone required.
originCitystringQUOTEDeparture city. Text, at most 100 characters.
destinationCitystringQUOTEArrival city. Text, at most 100 characters.
originAirportCodestringQUOTE, FLIGHT onlyDeparture airport, three-letter IATA code.
destinationAirportCodestringQUOTE, FLIGHT onlyArrival airport, three-letter IATA code.
isPromotionalbooleanNoPromotional ticket. If not sent, the ticket is treated as non-promotional.
pnrstringPOLICYBooking reference. Text, at most 32 characters.
ticketNumberstringPOLICYTicket number. Text, at most 64 characters.
flightNumberstringPOLICY, FLIGHT onlyFlight number.

Fields marked "FLIGHT only" apply only to a ticket with transportMode: FLIGHT, and their requirement is applied only then. If they are sent for another transport mode, the request is rejected.

Persons

PersonQUOTEPOLICY
insured[]Identity type and number, date of birthEmail, phone
policyholder——

No person field in policyholder is required on its own; only identityType and identityNumber are sent together.

Person insured with a passport

You can insure a foreign passenger with a passport (identityType: PASSPORT) instead of a Turkish identity number. A person with a passport also needs these fields:

FieldPersonRequiredRule
firstName, lastNameinsured[], policyholderQUOTEFirst and last name. Accepted with any identity type; required only with a passport.
genderinsured[], policyholderQUOTEMALE, FEMALE. Valid only with a passport.
residenceCountryCodeinsured[]QUOTECountry of residence, ISO 3166-1 alpha-2 (TR, DE). Valid only with a passport.

If gender or residenceCountryCode is sent with a Turkish identity number, the field path gets not_applicable. These fields can also be given on the basket item with insuranceData: Basket Items › Insurance data.

Example request: Quotes.

HOTEL_CANCELLATION: schema version 1

Insurance against the cancellation of a hotel booking. It is resolved from a basket item with insuranceCategory: HOTEL. The type object stay is a single stay.

FieldTypeRequiredRule
policyholderobjectPOLICYThe policyholder. Accepted identity types: TCKN, PASSPORT, VKN.
insuredarrayQUOTEThe insured persons; 1-10 entries. Accepted identity types: TCKN, PASSPORT.
stayobjectQUOTEThe insured stay.

stay

FieldTypeRequiredRule
basketItemIdstringOn a basket-linked quoteThe id of the basket item the stay belongs to. At most 256 characters; the value is stored as is.
hotelNamestringQUOTEHotel name. Text, at most 200 characters.
checkInDatestringQUOTECheck-in day, YYYY-MM-DD.
checkOutDatestringQUOTECheck-out day, YYYY-MM-DD; must be after the check-in day.
guestCountintegerQUOTENumber of guests, 1-20.
reservationAmountintegerQUOTEBooking amount in minor units; at least 1.
cityCodestringPOLICYProvince of the hotel, plate code 01-81.

Dates are calendar days at the place of stay.

Persons

PersonQUOTEPOLICY
insured[]Identity type and number, date of birth—
policyholder—Identity type and number, date of birth, email, phone, address (province, district, line)

Example

The examples on this page show only the type-specific fields of the quote request, together with the policy fields; for the currency and the basket source see Quotes. Values are examples; replace the values in angle brackets with your buyer's details, and the reference codes with codes you got from the reference endpoints:

{
  "insuranceType": "HOTEL_CANCELLATION",
  "policyholder": {
    "identityType": "TCKN",
    "identityNumber": "<identity number>",
    "birthDate": "<YYYY-MM-DD>",
    "email": "<email>",
    "phone": "<E.164 phone>",
    "address": {
      "cityCode": "35",
      "districtCode": "<district code>",
      "line": "<address line>"
    }
  },
  "insured": [
    {
      "identityType": "TCKN",
      "identityNumber": "<identity number>",
      "birthDate": "<YYYY-MM-DD>"
    }
  ],
  "stay": {
    "basketItemId": "hotel-1",
    "hotelName": "Example Hotel",
    "checkInDate": "2025-12-23",
    "checkOutDate": "2025-12-25",
    "guestCount": 2,
    "reservationAmount": 450000,
    "cityCode": "35"
  }
}

DEVICE_INSURANCE: schema version 1

An insurance policy for a mobile phone. It is resolved from a basket item with insuranceCategory: DEVICE. The type object device is a single device. The device's IMEI and the sum insured are required at the quote stage.

FieldTypeRequiredRule
policyholderobjectNoThe policyholder. Accepted identity types: TCKN, PASSPORT. If you send it, it must be the same person as the insured.
insuredarrayQUOTEThe insured: the owner of the device; exactly 1 entry. Accepted identity types: TCKN, PASSPORT.
deviceobjectQUOTEThe insured device.

device

FieldTypeRequiredRule
basketItemIdstringOn a basket-linked quoteThe id of the basket item the device belongs to. At most 256 characters; the value is stored as is.
brandCodestringQUOTEBrand, reference code (DEVICE_BRAND).
modelCodestringQUOTEModel, reference code (DEVICE_MODEL, under the brand).
imeistringQUOTEThe device's IMEI: 15 digits, check digit validated.
sumInsuredAmountintegerQUOTESum insured (device value) in minor units; at least 1.
coverageStartDatestringNoFirst day of coverage, YYYY-MM-DD. If the product in your connection does not take a start day, the quote is rejected.

Persons

PersonQUOTEPOLICY
insured[0]Identity type and number, first name, last name, date of birth, email, phoneGender, address (province, district, line)
policyholder——

The price is calculated with the insured person's details; that is why the person fields are required at the quote stage.

Example

{
  "insuranceType": "DEVICE_INSURANCE",
  "insured": [
    {
      "identityType": "TCKN",
      "identityNumber": "<identity number>",
      "firstName": "<first name>",
      "lastName": "<last name>",
      "birthDate": "<YYYY-MM-DD>",
      "gender": "FEMALE",
      "email": "<email>",
      "phone": "<E.164 phone>",
      "address": {
        "cityCode": "34",
        "districtCode": "<district code>",
        "line": "<address line>"
      }
    }
  ],
  "device": {
    "basketItemId": "phone-1",
    "brandCode": "<brand code>",
    "modelCode": "<model code>",
    "imei": "<IMEI>",
    "sumInsuredAmount": 3500000
  }
}

DEVICE_PROTECTION: schema version 1

A protection plan that covers the repair costs of a mobile phone. It is resolved from a basket item with insuranceCategory: DEVICE. The type object device is a single device. The quote is taken with the brand and model only, without the IMEI and without personal data.

FieldTypeRequiredRule
policyholderobjectNoThe policyholder. Accepted identity types: TCKN, PASSPORT. If you send it, it must be the same person as the insured.
insuredarrayPOLICYThe insured: the owner of the device; at most 1 entry. Accepted identity types: TCKN, PASSPORT.
deviceobjectQUOTEThe protected device.

device

FieldTypeRequiredRule
basketItemIdstringOn a basket-linked quoteThe id of the basket item the device belongs to. At most 256 characters; the value is stored as is.
brandCodestringQUOTEBrand, reference code (DEVICE_BRAND).
modelCodestringQUOTEModel, reference code (DEVICE_MODEL, under the brand).
imeistringPOLICYThe device's IMEI: 15 digits, check digit validated.
deviceValueAmountintegerNoDevice value in minor units; at least 1. A product that prices by model does not use this field.
coverageStartDatestringNoFirst day of coverage, YYYY-MM-DD.

The IMEI cannot be registered after the policy; send it in the quote request at the latest, together with the policy fields.

Persons

PersonQUOTEPOLICY
insured[0]—Identity type and number, date of birth, email, phone, address (province, district, line)
policyholder——

Example

{
  "insuranceType": "DEVICE_PROTECTION",
  "insured": [
    {
      "identityType": "TCKN",
      "identityNumber": "<identity number>",
      "birthDate": "<YYYY-MM-DD>",
      "email": "<email>",
      "phone": "<E.164 phone>",
      "address": {
        "cityCode": "06",
        "districtCode": "<district code>",
        "line": "<address line>"
      }
    }
  ],
  "device": {
    "basketItemId": "phone-1",
    "brandCode": "<brand code>",
    "modelCode": "<model code>",
    "imei": "<IMEI>"
  }
}

EXTENDED_WARRANTY: schema version 1

12 or 24 more months of cover for electronics and home appliances after the manufacturer's warranty ends. It is resolved from a basket item with insuranceCategory: ELECTRONICS. The type object product is a single product. The quote is taken without personal data.

FieldTypeRequiredRule
policyholderobjectNoThe policyholder. Accepted identity types: TCKN, PASSPORT. If you send it, it must be the same person as the insured.
insuredarrayPOLICYThe insured: the owner of the product; at most 1 entry. Accepted identity types: TCKN, PASSPORT.
productobjectQUOTEThe product whose warranty is extended.

product

FieldTypeRequiredRule
basketItemIdstringOn a basket-linked quoteThe id of the basket item the product belongs to. At most 256 characters; the value is stored as is.
categoryCodestringQUOTEProduct category, reference code (PRODUCT_CATEGORY).
brandstringQUOTEThe product's brand. Text, at most 100 characters.
modelstringQUOTEThe product's model. Text, at most 100 characters.
priceAmountintegerQUOTEThe product's sale price in minor units; at least 1.
warrantyMonthsintegerQUOTEExtra warranty period in months: 12 or 24. A JSON number; text such as "12" is not accepted.

The upper limit of the product price is a rule of the product in your connection; a request above the limit is rejected at the quote stage. Corporate customers (tax identity number) are not supported in this version.

Persons

PersonQUOTEPOLICY
insured[0]—Identity type and number, first name, last name, date of birth, email, phone, address (province, district, line)
policyholder——

Example

{
  "insuranceType": "EXTENDED_WARRANTY",
  "insured": [
    {
      "identityType": "TCKN",
      "identityNumber": "<identity number>",
      "firstName": "<first name>",
      "lastName": "<last name>",
      "birthDate": "<YYYY-MM-DD>",
      "email": "<email>",
      "phone": "<E.164 phone>",
      "address": {
        "cityCode": "16",
        "districtCode": "<district code>",
        "line": "<address line>"
      }
    }
  ],
  "product": {
    "basketItemId": "tv-1",
    "categoryCode": "<category code>",
    "brand": "Example Brand",
    "model": "Example Model 55",
    "priceAmount": 2500000,
    "warrantyMonths": 24
  }
}

ROADSIDE_ASSISTANCE: schema version 1

Towing and on-site assistance when a vehicle breaks down on the road. It is resolved from a basket item with insuranceCategory: VEHICLE. The type object vehicle is a single vehicle. The quote is taken without personal data and without the plate.

FieldTypeRequiredRule
policyholderobjectNoThe policyholder. Accepted identity types: TCKN, PASSPORT. If you send it, it must be the same person as the insured.
insuredarrayPOLICYThe insured: the owner of the vehicle; at most 1 entry. Accepted identity types: TCKN, PASSPORT.
vehicleobjectQUOTEThe vehicle to be assisted.

vehicle

FieldTypeRequiredRule
basketItemIdstringOn a basket-linked quoteThe id of the basket item the vehicle belongs to. At most 256 characters; the value is stored as is.
brandCodestringQUOTEBrand, reference code (VEHICLE_BRAND).
modelCodestringQUOTEModel, reference code (VEHICLE_MODEL, under the brand).
modelYearintegerQUOTEModel year. A JSON number; between 1950 and the year after the current year.
vehicleTypeCodestringQUOTEVehicle type, reference code (VEHICLE_TYPE).
platestringPOLICYTurkish licence plate; no spaces, upper case.

This version accepts only vehicles with a Turkish plate.

Persons

PersonQUOTEPOLICY
insured[0]—First name, last name, email, phone, address (province, district, line)
policyholder——

The insured person's identity and date of birth are optional. The address is also used as the billing address.

Example

{
  "insuranceType": "ROADSIDE_ASSISTANCE",
  "insured": [
    {
      "firstName": "<first name>",
      "lastName": "<last name>",
      "email": "<email>",
      "phone": "<E.164 phone>",
      "address": {
        "cityCode": "07",
        "districtCode": "<district code>",
        "line": "<address line>"
      }
    }
  ],
  "vehicle": {
    "basketItemId": "car-1",
    "brandCode": "<brand code>",
    "modelCode": "<model code>",
    "modelYear": 2022,
    "vehicleTypeCode": "<vehicle type code>",
    "plate": "<plate>"
  }
}

TRAVEL_HEALTH: schema version 1

Health insurance for domestic and international travel. It is resolved from a basket item with insuranceCategory: TRAVEL. The type object trip is a single trip; all insured persons of the trip are on the same policy.

FieldTypeRequiredRule
policyholderobjectPOLICYThe policyholder. Accepted identity types: TCKN, PASSPORT.
insuredarrayQUOTEThe insured persons; 1-10 entries. Accepted identity types: TCKN, PASSPORT. identityNumber is unique across the insured persons.
tripobjectQUOTEThe insured trip.

trip

FieldTypeRequiredRule
basketItemIdstringOn a basket-linked quoteThe id of the basket item the trip belongs to. At most 256 characters; the value is stored as is.
scopeenumQUOTEScope: DOMESTIC or INTERNATIONAL.
startDatestringQUOTEFirst day, YYYY-MM-DD.
endDatestringQUOTELast day, YYYY-MM-DD; must be after the first day.
residenceCountryCodestringQUOTECountry of residence, ISO 3166-1 alpha-2.
destinationCountryCodesstring[]QUOTE, INTERNATIONAL onlyDestination countries; 1-10 entries, each ISO 3166-1 alpha-2, no duplicates.
originCityCodestringPOLICY, DOMESTIC onlyDeparture province of a domestic trip, plate code 01-81.

Fields marked "INTERNATIONAL only" and "DOMESTIC only" apply only in that scope, and their requirement is applied only then. If they are sent for the other scope, the request is rejected.

Persons

PersonQUOTEPOLICY
insured[]Identity type and number, date of birth—
policyholder—Identity type and number, date of birth, email, phone

The products in your connection differ by the scope of the trip and by the identity type of the insured persons. For a person insured with a passport, the first name, last name and gender (gender) may also be needed; send these fields if you have them. A product that does not fit the request returns no quote. If no product fits the request (for example, the products in your connection accept a single destination country and you sent several), the quote is rejected with 422 insurance.quote.declined.

Example

International trip:

{
  "insuranceType": "TRAVEL_HEALTH",
  "policyholder": {
    "identityType": "TCKN",
    "identityNumber": "<identity number>",
    "birthDate": "<YYYY-MM-DD>",
    "email": "<email>",
    "phone": "<E.164 phone>"
  },
  "insured": [
    {
      "identityType": "TCKN",
      "identityNumber": "<identity number>",
      "birthDate": "<YYYY-MM-DD>"
    }
  ],
  "trip": {
    "basketItemId": "tour-1",
    "scope": "INTERNATIONAL",
    "startDate": "2025-12-23",
    "endDate": "2025-12-30",
    "residenceCountryCode": "TR",
    "destinationCountryCodes": ["DE"]
  }
}

On a domestic trip, destinationCountryCodes is not sent; for the policy, the departure province originCityCode is sent:

{
  "scope": "DOMESTIC",
  "startDate": "2025-12-23",
  "endDate": "2025-12-26",
  "residenceCountryCode": "TR",
  "originCityCode": "06"
}

MUSICAL_INSTRUMENT_PROTECTION: schema version 1

A protection plan that covers the repair cost of a musical instrument after sudden and unforeseen damage. It is resolved from a basket item with insuranceCategory: MUSICAL_INSTRUMENT. The type object instrument is a single instrument. The quote is obtained without personal data, from the instrument's brand, model and value.

FieldTypeRequiredRule
policyholderobjectNoThe policyholder. Accepted identity types: TCKN, VKN. If you send it, it must be the same person as the insured.
insuredarrayPOLICYThe insured: the owner of the instrument; at most 1 entry. Accepted identity types: TCKN (individual), VKN (company).
instrumentobjectQUOTEThe protected musical instrument.

instrument

FieldTypeRequiredRule
basketItemIdstringOn a basket-linked quoteThe id of the basket item the instrument belongs to. At most 256 characters; the value is stored as is.
brandstringQUOTEThe instrument's brand. Text, at most 100 characters.
modelstringQUOTEThe instrument's model. Text, at most 100 characters.
valueAmountintegerQUOTEThe instrument's value in minor units; at least 1.
categoryCodestringNoThe instrument's category, reference code (PRODUCT_CATEGORY).
serialNumberstringNoThe instrument's serial number. Text, at most 100 characters.
  • Musical instrument categories are in the PRODUCT_CATEGORY list. For this type, a code that is not a musical instrument category (for example an electronics product category) is rejected with 422 insurance.reference.unknown.
  • If you send the serial number, it is printed on the policy document.
  • If the product in your connection offers several plans, one quote request returns a separate option per plan: Quotes › Multiple options.

Persons

PersonQUOTEPOLICY
insured[0]—Identity type and number, email, phone; plus the fields below depending on the identity type
policyholder——

At the policy stage, depending on the identity type:

  • TCKN: the date of birth (birthDate) or the first and last name (firstName, lastName). If neither is present, the request receives 422 insurance.validation.invalid with the field path insured[0].birthDate. Gender (gender) is optional.
  • VKN: the company name (companyName).

For a company (VKN) policy, if the product in your connection does not support cancelling it, the cancellation result is insurance.policy.cancel_failed and the policy stays in force: Cancellation and Premium Refund.

Example

{
  "insuranceType": "MUSICAL_INSTRUMENT_PROTECTION",
  "insured": [
    {
      "identityType": "TCKN",
      "identityNumber": "<identity number>",
      "birthDate": "<YYYY-MM-DD>",
      "email": "<email>",
      "phone": "<E.164 phone>"
    }
  ],
  "instrument": {
    "basketItemId": "guitar-1",
    "brand": "Example Brand",
    "model": "Example Model",
    "valueAmount": 4500000,
    "categoryCode": "<category code>",
    "serialNumber": "<serial number>"
  }
}

If the insured is a company, send insured like this:

"insured": [
  {
    "identityType": "VKN",
    "identityNumber": "<tax identity number>",
    "companyName": "<company name>",
    "email": "<email>",
    "phone": "<E.164 phone>"
  }
]

EVENT_ACCIDENT: schema version 1

Personal accident insurance for an event attendee, valid on the day of the event. It is resolved from a basket item with insuranceCategory: EVENT. The type object event is a single event ticket: a quote covers one ticket and one attendee. The price is calculated from the attendee's details, so the person fields are required at the quote stage.

FieldTypeRequiredRule
policyholderobjectNoThe policyholder. Accepted identity type: TCKN. If you send it, it must be the same person as the insured.
insuredarrayQUOTEThe insured: the attendee; exactly 1 entry. Accepted identity type: TCKN.
eventobjectQUOTEThe insured event ticket.

event

FieldTypeRequiredRule
basketItemIdstringOn a basket-linked quoteThe id of the basket item the ticket belongs to. At most 256 characters; the value is stored as is.
coverageStartDatestringQUOTEThe event day, YYYY-MM-DD. It must be the day you get the quote.
  • The policy is valid on the day it is issued and lasts at most one day. Get the quote on the event day.
  • The day is a calendar day in Türkiye. A past day is rejected with 422 insurance.validation.invalid (reason: must_not_be_past), a future day with 422 insurance.quote.declined.
  • The day is checked again at order and collection time. If the day has changed since the quote, the operation is rejected with insurance.quote.declined; get a new quote.
  • Each ticket is a separate basket item and a separate quote.

Persons

PersonQUOTEPOLICY
insured[0]Identity type and number, date of birth, email, phone—
policyholder——

Nationality (nationalityCountryCode) is optional; if not sent, TR is assumed.

Example

{
  "insuranceType": "EVENT_ACCIDENT",
  "insured": [
    {
      "identityType": "TCKN",
      "identityNumber": "<identity number>",
      "birthDate": "<YYYY-MM-DD>",
      "email": "<email>",
      "phone": "<E.164 phone>"
    }
  ],
  "event": {
    "basketItemId": "concert-1",
    "coverageStartDate": "<today, YYYY-MM-DD>"
  }
}

MICROMOBILITY_ACCIDENT: schema version 1

Personal accident insurance for the rider of a rented scooter, valid on the day of the rental. It is resolved from a basket item with insuranceCategory: MICROMOBILITY. The type object rental is a single rental: a quote covers one rental and one rider. The price is calculated from the rider's details, so the person fields are required at the quote stage.

FieldTypeRequiredRule
policyholderobjectNoThe policyholder. Accepted identity type: TCKN. If you send it, it must be the same person as the insured.
insuredarrayQUOTEThe insured: the rider; exactly 1 entry. Accepted identity type: TCKN.
rentalobjectQUOTEThe insured rental.

rental

FieldTypeRequiredRule
basketItemIdstringOn a basket-linked quoteThe id of the basket item the rental belongs to. At most 256 characters; the value is stored as is.
coverageStartDatestringNoThe coverage day, YYYY-MM-DD. If you send it, it must be the day you get the quote.
  • The policy is valid on the day it is issued and lasts at most one day.
  • The day is a calendar day in Türkiye. A past day is rejected with 422 insurance.validation.invalid (reason: must_not_be_past), a future day with 422 insurance.quote.declined. If you sent the day and it has changed since the quote, the order is rejected with insurance.quote.declined.

Persons

PersonQUOTEPOLICY
insured[0]Identity type and number, date of birth, email, phone—
policyholder——

Nationality (nationalityCountryCode) is optional; if not sent, TR is assumed.

Example

{
  "insuranceType": "MICROMOBILITY_ACCIDENT",
  "insured": [
    {
      "identityType": "TCKN",
      "identityNumber": "<identity number>",
      "birthDate": "<YYYY-MM-DD>",
      "email": "<email>",
      "phone": "<E.164 phone>"
    }
  ],
  "rental": {
    "basketItemId": "ride-1"
  }
}

PERSONAL_ACCIDENT: schema version 1

Annual personal accident insurance for one person. This type is not linked to a basket item; it is sold only on the API path, without a basket item: Selling Without a Basket Item. The type object accident holds the insurance details and carries no basketItemId. The quote is obtained without personal data, from the start day only.

FieldTypeRequiredRule
policyholderobjectNoThe policyholder. Accepted identity type: TCKN. If you send it, it must be the same person as the insured.
insuredarrayPOLICYThe insured; at most 1 entry. Accepted identity type: TCKN.
accidentobjectQUOTEThe insurance details.

accident

FieldTypeRequiredRule
coverageStartDatestringQUOTEThe coverage start day, YYYY-MM-DD; cannot be before today.
occupationCodestringPOLICYThe insured's occupation, reference code (OCCUPATION).
beneficiaryNamestringPOLICYThe name of the beneficiary. Text, at most 100 characters.
vehiclePlatestringNoTurkish plate; no spaces, upper case.
  • The day is a calendar day in Türkiye. A past start day receives 422 insurance.validation.invalid (reason: must_not_be_past) at quote time. If the start day has passed when the order is created, the order is rejected with insurance.quote.declined; get a new quote.
  • The occupation code is checked against its counterpart at your connection's provider when the order is created. A code without a counterpart receives 422 insurance.reference.unknown at the order and no premium is collected. Get the valid codes from the reference endpoint.

Persons

PersonQUOTEPOLICY
insured[0]—Identity type and number, date of birth, email, phone
policyholder——

Example

{
  "insuranceType": "PERSONAL_ACCIDENT",
  "insured": [
    {
      "identityType": "TCKN",
      "identityNumber": "<identity number>",
      "birthDate": "<YYYY-MM-DD>",
      "email": "<email>",
      "phone": "<E.164 phone>"
    }
  ],
  "accident": {
    "coverageStartDate": "<YYYY-MM-DD>",
    "occupationCode": "<occupation code>",
    "beneficiaryName": "<beneficiary name>"
  }
}

MEDICAL_COMPLICATION: schema version 1

Insurance against complications of a medical procedure performed as part of health tourism. It is resolved from a basket item with insuranceCategory: HEALTH. The type object procedure is a single procedure: a quote covers one procedure and one patient. Persons are insured with a passport. The price is calculated from the insured's details, so the person and procedure fields are required at the quote stage.

FieldTypeRequiredRule
policyholderobjectNoThe policyholder. Accepted identity type: PASSPORT. If not sent, the insured is also the policyholder; if sent, it can be a different person.
insuredarrayQUOTEThe insured: the person undergoing the procedure; exactly 1 entry. Accepted identity type: PASSPORT.
procedureobjectQUOTEThe insured medical procedure.

procedure

FieldTypeRequiredRule
basketItemIdstringOn a basket-linked quoteThe id of the basket item the procedure belongs to. At most 256 characters; the value is stored as is.
procedureCoverCodestringQUOTEThe procedure and cover limit, reference code (MEDICAL_PROCEDURE_COVER).
procedureDatestringQUOTEThe procedure day, YYYY-MM-DD; must be within the coverage period.
facilityNamestringQUOTEThe name of the healthcare facility performing the procedure. Text, at most 200 characters.
startDatestringQUOTEThe coverage start day, YYYY-MM-DD; cannot be before today.
endDatestringQUOTEThe coverage end day, YYYY-MM-DD; must be after the start day.
  • Days are calendar days in Türkiye. A procedure day outside the coverage period receives 422 insurance.validation.invalid (reason: out_of_range) with the field path procedure.procedureDate.
  • If the start day has passed when the order is created, the order is rejected with insurance.quote.declined; get a new quote.
  • If the product in your connection does not support cancelling this policy, a cancellation request returns 412 insurance.provider.not_integrated.

Persons

PersonQUOTEPOLICY
insured[0]Identity type and number, first name, last name, gender, date of birth, place of birth, email, phone—
policyholder (if sent)Identity type and number, first name, last name, gender, date of birth, place of birth—

Example

{
  "insuranceType": "MEDICAL_COMPLICATION",
  "insured": [
    {
      "identityType": "PASSPORT",
      "identityNumber": "<passport number>",
      "firstName": "<first name>",
      "lastName": "<last name>",
      "gender": "MALE",
      "birthDate": "<YYYY-MM-DD>",
      "birthPlace": "<place of birth>",
      "email": "<email>",
      "phone": "<E.164 phone>"
    }
  ],
  "procedure": {
    "basketItemId": "treatment-1",
    "procedureCoverCode": "<procedure code>",
    "procedureDate": "<YYYY-MM-DD>",
    "facilityName": "Example Hospital",
    "startDate": "<YYYY-MM-DD>",
    "endDate": "<YYYY-MM-DD>"
  }
}

PET_HEALTH: schema version 1

Health insurance for cats and dogs. It is resolved from a basket item with insuranceCategory: PET; it is also sold without a basket item (Selling Without a Basket Item). The type object pet is a single animal. The price is calculated from the animal's and the owner's details, so the owner and animal fields are required at the quote stage.

FieldTypeRequiredRule
policyholderobjectQUOTEThe policyholder: the animal's owner. Accepted identity type: TCKN.
insuredarrayNoAt most 1 entry. Accepted identity type: TCKN. If you send it, it must be the same person as the policyholder.
petobjectQUOTEThe insured animal.

pet

FieldTypeRequiredRule
basketItemIdstringOn a basket-linked quoteThe id of the basket item the animal belongs to. At most 256 characters; the value is stored as is. Not sent on a quote obtained without a basket item.
coverageStartDatestringQUOTEThe coverage start day, YYYY-MM-DD; cannot be before today.
petNamestringQUOTEThe animal's name. Text, at most 100 characters.
petSpeciesenumQUOTESpecies: CAT, DOG.
petBreedCodestringQUOTEBreed, reference code (PET_BREED, under the species).
petGenderenumQUOTEThe animal's sex: MALE, FEMALE.
petBirthDatestringQUOTEThe animal's date of birth, YYYY-MM-DD; cannot be in the future.
petColorstringNoThe animal's colour. Text, at most 50 characters.
  • Get the breed codes under the species: GET /api/v1/insurance/reference/PET_BREED?parentCode=CAT. Send a breed that matches the species.
  • The day is a calendar day in Türkiye. A past start day receives 422 insurance.validation.invalid (reason: must_not_be_past) at quote time. If the start day has passed when the order is created, the order is rejected with insurance.quote.declined; get a new quote.
  • Some products in your connections need the animal's colour. If you do not send petColor, only those products' options are excluded with the field path pet.petColor; the other options are returned: Quotes › Excluded options.
  • If the product in your connection offers several plans, one quote request returns a separate option per plan: Quotes › Multiple options.

Persons

PersonQUOTEPOLICY
policyholderIdentity type and number, date of birth, email, phone—
insured[0] (if sent)——

Example

{
  "insuranceType": "PET_HEALTH",
  "policyholder": {
    "identityType": "TCKN",
    "identityNumber": "<identity number>",
    "birthDate": "<YYYY-MM-DD>",
    "email": "<email>",
    "phone": "<E.164 phone>"
  },
  "pet": {
    "basketItemId": "pet-1",
    "coverageStartDate": "<YYYY-MM-DD>",
    "petName": "<animal's name>",
    "petSpecies": "CAT",
    "petBreedCode": "<breed code>",
    "petGender": "FEMALE",
    "petBirthDate": "<YYYY-MM-DD>",
    "petColor": "<colour>"
  }
}

On a quote obtained without a basket item, pet.basketItemId is not sent.

VEHICLE_TAG_PROTECTION: schema version 1

Protection for the vehicle's vehicle identification tag (UTTS): cover for the device, wrong fuel filling, and towing or recovery. It is resolved from a basket item with insuranceCategory: VEHICLE; it is also sold without a basket item. The type object vehicle is the device of a single vehicle. The quote is obtained without personal data or vehicle identifiers, from the start day only.

FieldTypeRequiredRule
policyholderobjectNoThe policyholder. Accepted identity type: TCKN. If you send it, it must be the same person as the insured.
insuredarrayPOLICYThe insured: the vehicle's owner; at most 1 entry. Accepted identity type: TCKN.
vehicleobjectQUOTEThe vehicle the device is fitted to.

vehicle

FieldTypeRequiredRule
basketItemIdstringOn a basket-linked quoteThe id of the basket item the vehicle belongs to. At most 256 characters; the value is stored as is. Not sent on a quote obtained without a basket item.
coverageStartDatestringQUOTEThe coverage start day, YYYY-MM-DD; cannot be before today.
platestringPOLICYTurkish plate; no spaces, upper case.
chassisNumberstringPOLICYChassis number (VIN), 17 characters.
tagInstallationCodestringPOLICYThe device's installation code: no spaces, upper-case letters and digits, 4-32 characters.
  • This version accepts only vehicles with a Turkish plate.
  • The day is a calendar day in Türkiye. A past start day receives 422 insurance.validation.invalid (reason: must_not_be_past) at quote time. If the start day has passed when the order is created, the order is rejected with insurance.quote.declined; get a new quote.
  • Formats of the chassis number and the installation code: Data Formats › Vehicle documents and identifiers.

Persons

PersonQUOTEPOLICY
insured[0]—Identity type and number, date of birth, email, phone
policyholder——

Example

{
  "insuranceType": "VEHICLE_TAG_PROTECTION",
  "insured": [
    {
      "identityType": "TCKN",
      "identityNumber": "<identity number>",
      "birthDate": "<YYYY-MM-DD>",
      "email": "<email>",
      "phone": "<E.164 phone>"
    }
  ],
  "vehicle": {
    "basketItemId": "car-1",
    "coverageStartDate": "<YYYY-MM-DD>",
    "plate": "<plate>",
    "chassisNumber": "<chassis number>",
    "tagInstallationCode": "<installation code>"
  }
}

MOTOR_GREEN_CARD: schema version 1

Green Card: the vehicle's liability insurance abroad. It is resolved from a basket item with insuranceCategory: VEHICLE or TRAVEL; it is also sold without a basket item. The type object vehicle is a single period of a single vehicle. The price is calculated from the insured's and the vehicle's details, so every field is required at the quote stage.

FieldTypeRequiredRule
policyholderobjectNoThe policyholder. Accepted identity type: TCKN. If you send it, it must be the same person as the insured.
insuredarrayQUOTEThe insured: the vehicle's owner; exactly 1 entry. Accepted identity type: TCKN.
vehicleobjectQUOTEThe insured vehicle and the coverage period.

vehicle

FieldTypeRequiredRule
basketItemIdstringOn a basket-linked quoteThe id of the basket item the vehicle belongs to. At most 256 characters; the value is stored as is. Not sent on a quote obtained without a basket item.
platestringQUOTETurkish plate; no spaces, upper case.
registrationDocumentobjectQUOTEThe vehicle registration document: serial and number; both required.
registrationDatestringQUOTERegistration date, YYYY-MM-DD; cannot be in the future.
seatCountintegerQUOTENumber of seats, driver included; 1-100.
vehicleTypeCodestringQUOTEVehicle class, reference code (VEHICLE_TYPE).
startDatestringQUOTEThe coverage start day, YYYY-MM-DD; cannot be before today.
endDatestringQUOTEThe coverage end day, YYYY-MM-DD; must be after the start day.

registrationDocument:

FieldTypeRule
serialstringThe registration document's serial code: 1-4 upper-case letters.
numberstringThe registration document's number: 4-10 digits, as text.
  • This version accepts only vehicles with a Turkish plate.
  • If the vehicle class has no price for the period you chose, the quote is rejected with 422 insurance.quote.declined.
  • The day is a calendar day in Türkiye. A past start day receives 422 insurance.validation.invalid (reason: must_not_be_past) at quote time. If the start day has passed when the order is created, the order is rejected with insurance.quote.declined; get a new quote.
  • Once the policy is issued, you can download the Green Card certificate from the certificate endpoint.

Persons

PersonQUOTEPOLICY
insured[0]Identity type and number, date of birth, email, phone—
policyholder——

Example

{
  "insuranceType": "MOTOR_GREEN_CARD",
  "insured": [
    {
      "identityType": "TCKN",
      "identityNumber": "<identity number>",
      "birthDate": "<YYYY-MM-DD>",
      "email": "<email>",
      "phone": "<E.164 phone>"
    }
  ],
  "vehicle": {
    "basketItemId": "car-1",
    "plate": "<plate>",
    "registrationDocument": {
      "serial": "<serial code>",
      "number": "<registration number>"
    },
    "registrationDate": "<YYYY-MM-DD>",
    "seatCount": 5,
    "vehicleTypeCode": "<vehicle class code>",
    "startDate": "<YYYY-MM-DD>",
    "endDate": "<YYYY-MM-DD>"
  }
}

INBOUND_TRAVEL_HEALTH: schema version 1

Health insurance for a foreign visitor coming to Türkiye. It is a separate type from TRAVEL_HEALTH: the type object has the same name (trip), but its fields are this schema's. It is resolved from a basket item with insuranceCategory: TRAVEL; it is also sold without a basket item. The type object trip is a single period of a single visit; all insured persons are on the same policy. Persons are insured with a passport. The price is calculated from the persons' details, so the person fields are required at the quote stage.

FieldTypeRequiredRule
policyholderobjectQUOTEThe policyholder. Accepted identity type: PASSPORT. Does not have to be one of the insured.
insuredarrayQUOTEThe insured persons; 1-10 entries. Accepted identity type: PASSPORT. identityNumber is unique among the insured.
tripobjectQUOTEThe insured visit.

trip

FieldTypeRequiredRule
basketItemIdstringOn a basket-linked quoteThe id of the basket item the visit belongs to. At most 256 characters; the value is stored as is. Not sent on a quote obtained without a basket item.
startDatestringQUOTEThe coverage start day, YYYY-MM-DD; cannot be before today.
endDatestringQUOTEThe coverage end day, YYYY-MM-DD; must be after the start day.
  • The day is a calendar day in Türkiye. A past start day receives 422 insurance.validation.invalid (reason: must_not_be_past) at quote time. If the start day has passed when the order is created, the order is rejected with insurance.quote.declined; get a new quote.
  • If a nationality (nationalityCountryCode) has no counterpart at your connection's provider, the quote receives 422 insurance.reference.unknown with the person's field path.
  • If the product in your connection does not support cancelling this policy, a cancellation request returns 412 insurance.provider.not_integrated.

Persons

PersonQUOTEPOLICY
policyholderIdentity type and number, first name, last name, gender, date of birth, place of birth, nationality, address line, email, phone—
insured[]Identity type and number, first name, last name, gender, date of birth, place of birth, nationality, address line—

The contact details are the policyholder's; the insured persons' email and phone are optional.

Example

{
  "insuranceType": "INBOUND_TRAVEL_HEALTH",
  "policyholder": {
    "identityType": "PASSPORT",
    "identityNumber": "<passport number>",
    "firstName": "<first name>",
    "lastName": "<last name>",
    "gender": "FEMALE",
    "birthDate": "<YYYY-MM-DD>",
    "birthPlace": "<place of birth>",
    "nationalityCountryCode": "DE",
    "email": "<email>",
    "phone": "<E.164 phone>",
    "address": {
      "line": "<address line>"
    }
  },
  "insured": [
    {
      "identityType": "PASSPORT",
      "identityNumber": "<passport number>",
      "firstName": "<first name>",
      "lastName": "<last name>",
      "gender": "FEMALE",
      "birthDate": "<YYYY-MM-DD>",
      "birthPlace": "<place of birth>",
      "nationalityCountryCode": "DE",
      "address": {
        "line": "<address line>"
      }
    }
  ],
  "trip": {
    "basketItemId": "visit-1",
    "startDate": "<YYYY-MM-DD>",
    "endDate": "<YYYY-MM-DD>"
  }
}

FOREIGN_RESIDENT_HEALTH: schema version 1

Health insurance for a foreigner residing in Türkiye. This type is not linked to a basket item; it is sold only on the API path, without a basket item: Selling Without a Basket Item. The type object residence is the residence period and carries no basketItemId. The quote is obtained without personal data, from the start day only. The person is insured with a passport.

FieldTypeRequiredRule
policyholderobjectNoThe policyholder. Accepted identity type: PASSPORT. If you send it, it must be the same person as the insured.
insuredarrayPOLICYThe insured; at most 1 entry. Accepted identity type: PASSPORT.
residenceobjectQUOTEThe residence period.

residence

FieldTypeRequiredRule
startDatestringQUOTEThe coverage start day, YYYY-MM-DD; cannot be before today.
endDatestringPOLICYThe coverage end day, YYYY-MM-DD; must be after the start day.
  • The day is a calendar day in Türkiye. A past start day receives 422 insurance.validation.invalid (reason: must_not_be_past) at quote time. If the start day has passed when the order is created, the order is rejected with insurance.quote.declined; get a new quote.
  • The residence address is in Türkiye: insured[0].address.countryCode must be TR. With another country the order is rejected with insurance.quote.declined.
  • If the nationality, the address country, the province or the district has no counterpart at your connection's provider, the order receives 422 insurance.reference.unknown with the field's path and no premium is collected.
  • If the product in your connection does not support cancelling this policy, a cancellation request returns 412 insurance.provider.not_integrated.

Persons

PersonQUOTEPOLICY
insured[0]—Identity type and number, first name, last name, gender, date of birth, place of birth, father's name, nationality, email, phone, address (country, province, district, line)
policyholder——

Example

{
  "insuranceType": "FOREIGN_RESIDENT_HEALTH",
  "insured": [
    {
      "identityType": "PASSPORT",
      "identityNumber": "<passport number>",
      "firstName": "<first name>",
      "lastName": "<last name>",
      "gender": "MALE",
      "birthDate": "<YYYY-MM-DD>",
      "birthPlace": "<place of birth>",
      "fatherName": "<father's name>",
      "nationalityCountryCode": "DE",
      "email": "<email>",
      "phone": "<E.164 phone>",
      "address": {
        "countryCode": "TR",
        "cityCode": "34",
        "districtCode": "<district code>",
        "line": "<address line>"
      }
    }
  ],
  "residence": {
    "startDate": "<YYYY-MM-DD>",
    "endDate": "<YYYY-MM-DD>"
  }
}

ABROAD_STAY_HEALTH: schema version 1

Health insurance for the duration of studying or working abroad. It is a separate type from TRAVEL_HEALTH. It is resolved from a basket item with insuranceCategory: EDUCATION or TRAVEL; it is also sold without a basket item. The type object abroadStay is a single period with a single destination country; all insured persons are on the same policy. Persons are insured with a Turkish identity number. The price is calculated from the persons' details, so the person fields are required at the quote stage.

FieldTypeRequiredRule
policyholderobjectQUOTEThe policyholder. Accepted identity type: TCKN.
insuredarrayQUOTEThe insured persons; 1-10 entries. Accepted identity type: TCKN. identityNumber is unique among the insured.
abroadStayobjectQUOTEThe insured period.

abroadStay

FieldTypeRequiredRule
basketItemIdstringOn a basket-linked quoteThe id of the basket item the period belongs to. At most 256 characters; the value is stored as is. Not sent on a quote obtained without a basket item.
startDatestringQUOTEThe coverage start day, YYYY-MM-DD; cannot be before today.
endDatestringQUOTEThe coverage end day, YYYY-MM-DD; must be after the start day.
coverageRegionenumQUOTECoverage region: EUROPE or WORLDWIDE.
destinationCountryCodestringQUOTEDestination country, ISO 3166-1 alpha-2. Must be one of the countries of the chosen region.
  • The destination country cannot be Türkiye (TR); the quote is rejected with 422 insurance.quote.declined.
  • If the destination country has no counterpart in the chosen region at your connection's provider, the quote receives 422 insurance.reference.unknown with the field path abroadStay.destinationCountryCode.
  • The policyholder's address is in Türkiye: policyholder.address.countryCode must be TR. With another country the order is rejected with insurance.quote.declined.
  • The day is a calendar day in Türkiye. A past start day receives 422 insurance.validation.invalid (reason: must_not_be_past) at quote time. If the start day has passed when the order is created, the order is rejected with insurance.quote.declined; get a new quote.

Persons

PersonQUOTEPOLICY
policyholderIdentity type and number, date of birth, email, phone, address lineAddress (country, province, district, line)
insured[]Identity type and number, date of birth, relationship (relationship)—

If the policyholder is also insured, they are listed in insured[] with relationship: SELF.

Example

{
  "insuranceType": "ABROAD_STAY_HEALTH",
  "policyholder": {
    "identityType": "TCKN",
    "identityNumber": "<identity number>",
    "birthDate": "<YYYY-MM-DD>",
    "email": "<email>",
    "phone": "<E.164 phone>",
    "address": {
      "countryCode": "TR",
      "cityCode": "06",
      "districtCode": "<district code>",
      "line": "<address line>"
    }
  },
  "insured": [
    {
      "identityType": "TCKN",
      "identityNumber": "<identity number>",
      "birthDate": "<YYYY-MM-DD>",
      "relationship": "CHILD"
    }
  ],
  "abroadStay": {
    "basketItemId": "school-1",
    "startDate": "<YYYY-MM-DD>",
    "endDate": "<YYYY-MM-DD>",
    "coverageRegion": "EUROPE",
    "destinationCountryCode": "DE"
  }
}

MOTOR_THIRD_PARTY_LIABILITY: schema version 1

Compulsory motor third-party liability insurance. It is resolved from a basket item with insuranceCategory: VEHICLE; it is also sold without a basket item. Leads can be opened for this type too: Lead schemas. The type object vehicle is a single policy for a single vehicle. Which vehicle fields are needed is decided by the vehicle's registration scenario (registrationScenario). The price is calculated from the insured's and the vehicle's details, so every field is required at the quote stage.

FieldTypeRequiredRule
policyholderobjectNoThe policyholder. Accepted identity types: TCKN, PASSPORT, VKN. If you send it, it must be the same person as the insured.
insuredarrayQUOTEThe insured: the vehicle's owner; exactly 1 entry. Accepted identity types: TCKN, PASSPORT, VKN; one of them applies, depending on the registration scenario (Registration scenarios).
vehicleobjectQUOTEThe insured vehicle.

vehicle

FieldTypeRequiredRule
basketItemIdstringOn a basket-linked quoteThe id of the basket item the vehicle belongs to. At most 256 characters; the value is stored as is. Not sent on a quote obtained without a basket item.
registrationScenarioenumQUOTEThe vehicle's registration scenario: RENEWAL, NEW_REGISTRATION, FOREIGN_PLATE, OWNERSHIP_TRANSFER, DEALER_SHORT_TERM. It has no default.
plateCityCodestringQUOTE, NEW_REGISTRATION onlyThe plate province code of a vehicle that has no plate yet, 01-81.
platestringQUOTE, except NEW_REGISTRATIONPlate; no spaces, upper case. A foreign plate in the FOREIGN_PLATE scenario, a Turkish plate in the other scenarios.
registrationDocumentobjectQUOTE, RENEWAL, OWNERSHIP_TRANSFER, DEALER_SHORT_TERM onlyThe vehicle registration document: serial and number; both required.
chassisNumberstringQUOTE, NEW_REGISTRATION, FOREIGN_PLATE onlyChassis number (VIN), 17 characters.
engineNumberstringQUOTE, NEW_REGISTRATION, FOREIGN_PLATE onlyEngine number.
modelCodestringQUOTE, except RENEWALModel, reference code (VEHICLE_MODEL). The brand is the model's parent code; it is not sent separately.
modelYearintegerQUOTE, NEW_REGISTRATION, FOREIGN_PLATE, DEALER_SHORT_TERM onlyModel year. A JSON number between 1950 and the year after the current year.
vehicleTypeCodestringQUOTE, except RENEWALVehicle type (usage style), reference code (VEHICLE_TYPE).
policyDurationMonthsintegerQUOTE, FOREIGN_PLATE onlyPolicy duration, months; 1-12.

Fields marked with scenarios apply only in those scenarios, and the requirement is applied only then. If they are sent in another scenario, the request receives 422 insurance.validation.invalid (reason: not_applicable) with the field's path.

Registration scenarios

registrationScenarioVehicleIdentity type of the insuredVehicle fields
RENEWALPolicy for a registered vehicleTCKNplate, registrationDocument
NEW_REGISTRATIONA vehicle not yet registered, with no plateTCKNplateCityCode, modelCode, modelYear, vehicleTypeCode, engineNumber, chassisNumber
FOREIGN_PLATEA vehicle with a foreign platePASSPORTplate (foreign plate), modelCode, modelYear, vehicleTypeCode, engineNumber, chassisNumber, policyDurationMonths
OWNERSHIP_TRANSFERA registered vehicle before the transfer at the notary; the insured is the person taking over the vehicleTCKNplate, registrationDocument, vehicleTypeCode, modelCode
DEALER_SHORT_TERMA car dealer's short-term policy; the insured is the dealer companyVKNplate, registrationDocument, vehicleTypeCode, modelCode, modelYear

Prepare the quote step by step:

  1. Determine the vehicle's registration scenario with the buyer and send it as registrationScenario.
  2. Collect the insured's details with the scenario's identity type. If the identity type does not match the scenario, the quote receives 422 insurance.validation.invalid (reason: not_supported_for_registration_scenario) with the field path insured[0].identityType, and the request is not sent to the provider.
  3. If the scenario is not RENEWAL, get the vehicle type from the VEHICLE_TYPE list; find the model from the list by vehicle type and year: first VEHICLE_BRAND, then VEHICLE_MODEL under the brand.
  4. Fill in the scenario's vehicle fields as in the table and get the quote.
  • For an insured with VKN, the company name (companyName) is required and the date of birth is not sent. With TCKN and PASSPORT, the date of birth is required.
  • No coverage start day is sent for this type; the policy period is set by the product in your connection.
  • In the NEW_REGISTRATION scenario, if the model year is not one of the years the product in your connection accepts, the quote receives 422 insurance.validation.invalid (reason: not_supported_by_provider) with the field path vehicle.modelYear.
  • If the vehicle type or the model has no counterpart at your connection's provider, the quote receives 422 insurance.reference.unknown with the field's path.
  • If the product in your connection accepts only Turkish mobile numbers, a quote with another number receives 422 insurance.quote.declined.
  • For a policy issued with a passport or tax identity number, if the product in your connection does not support cancelling it, the cancellation results in insurance.policy.cancel_failed and the policy stays in force: Cancellation and Premium Refund.
  • Formats of the foreign plate and the engine number: Data Formats.

Persons

PersonQUOTEPOLICY
insured[0]Identity type and number, email, phone; date of birth with TCKN and PASSPORT, company name (companyName) with VKN—
policyholder——

Example

Renewal (RENEWAL):

{
  "insuranceType": "MOTOR_THIRD_PARTY_LIABILITY",
  "insured": [
    {
      "identityType": "TCKN",
      "identityNumber": "<identity number>",
      "birthDate": "<YYYY-MM-DD>",
      "email": "<email>",
      "phone": "<E.164 phone>"
    }
  ],
  "vehicle": {
    "basketItemId": "car-1",
    "registrationScenario": "RENEWAL",
    "plate": "<plate>",
    "registrationDocument": {
      "serial": "<serial code>",
      "number": "<registration number>"
    }
  }
}

For a new registration (NEW_REGISTRATION) the plate province code is sent instead of a plate:

"vehicle": {
  "basketItemId": "car-1",
  "registrationScenario": "NEW_REGISTRATION",
  "plateCityCode": "34",
  "modelCode": "<model code>",
  "modelYear": 2026,
  "vehicleTypeCode": "<vehicle type code>",
  "engineNumber": "<engine number>",
  "chassisNumber": "<chassis number>"
}

For a dealer's short-term policy (DEALER_SHORT_TERM) the insured is sent with a tax identity number:

"insured": [
  {
    "identityType": "VKN",
    "identityNumber": "<tax identity number>",
    "companyName": "<company name>",
    "email": "<email>",
    "phone": "<E.164 phone>"
  }
]

MOTOR_COMPREHENSIVE: schema version 1

Comprehensive motor insurance. It is resolved from a basket item with insuranceCategory: VEHICLE; it is also sold without a basket item. Leads can be opened for this type too: Lead schemas. The type object vehicle is a single policy for a single vehicle. The price is calculated from the insured's and the vehicle's details, so the fields are sent at the quote stage.

The products in your connections need different vehicle fields. The schema covers all of them; only the fields every product needs are required in the schema. If an optional field that a product needs is missing, only that product's option is excluded: Additional product requirements.

FieldTypeRequiredRule
policyholderobjectNoThe policyholder. Accepted identity type: TCKN. If you send it, it must be the same person as the insured.
insuredarrayQUOTEThe insured: the vehicle's owner; exactly 1 entry. Accepted identity type: TCKN.
vehicleobjectQUOTEThe insured vehicle.

vehicle

FieldTypeRequiredRule
basketItemIdstringOn a basket-linked quoteThe id of the basket item the vehicle belongs to. At most 256 characters; the value is stored as is. Not sent on a quote obtained without a basket item.
platestringQUOTETurkish plate; no spaces, upper case.
coverageStartDatestringQUOTEThe coverage start day, YYYY-MM-DD; cannot be before today.
registrationDocumentobjectNoThe vehicle registration document: serial and number; if you send it, both are required.
registrationDatestringNoRegistration date, YYYY-MM-DD; cannot be in the future.
modelYearintegerNoModel year. A JSON number between 1950 and the year after the current year.
vehicleTypeCodestringNoVehicle type, reference code (VEHICLE_TYPE).
modelCodestringNoModel, reference code (VEHICLE_MODEL).
chassisNumberstringNoChassis number (VIN), 17 characters.
engineNumberstringNoEngine number.
originCountryCodestringNoCountry of origin, ISO 3166-1 alpha-2.
driverIdentityNumberstringNoThe driver's Turkish identity number; validated in the TCKN format.
  • One product in your connection may need the registration document, another the model year and the registration date. Options offered to vehicle owners living abroad additionally need the country of origin, the engine and chassis numbers, the model, the vehicle type and the driver's identity number. To get every option, send all the vehicle fields you can collect from your buyer. A missing field is returned with its path on the excluded option (e.g. vehicle.registrationDocument): Quotes › Excluded options.
  • Each product in your connections returns its own option; one quote request can return several options: Quotes › Multiple options.
  • This version accepts only vehicles with a Turkish plate.
  • The day is a calendar day in Türkiye. A past start day receives 422 insurance.validation.invalid (reason: must_not_be_past) at quote time. If the start day has passed when the order is created, the order is rejected with insurance.quote.declined; get a new quote.
  • If the vehicle type, the model or the country of origin has no counterpart at your connection's provider, that product's option is excluded with insurance.reference.unknown and the field's path.
  • If the product in your connection accepts only Turkish mobile numbers, a quote with another number receives 422 insurance.quote.declined.

Persons

PersonQUOTEPOLICY
insured[0]Identity type and number, date of birth, email, phone—
policyholder——

Example

{
  "insuranceType": "MOTOR_COMPREHENSIVE",
  "insured": [
    {
      "identityType": "TCKN",
      "identityNumber": "<identity number>",
      "birthDate": "<YYYY-MM-DD>",
      "email": "<email>",
      "phone": "<E.164 phone>"
    }
  ],
  "vehicle": {
    "basketItemId": "car-1",
    "plate": "<plate>",
    "coverageStartDate": "<YYYY-MM-DD>",
    "registrationDocument": {
      "serial": "<serial code>",
      "number": "<registration number>"
    },
    "registrationDate": "<YYYY-MM-DD>",
    "modelYear": 2022,
    "vehicleTypeCode": "<vehicle type code>"
  }
}

MOTOR_EXCESS_LIABILITY: schema version 1

Voluntary excess motor liability insurance for a vehicle. It is resolved from a basket item with insuranceCategory: VEHICLE; it is also sold without a basket item. The type object vehicle is a single policy for a single vehicle. The price is calculated from the insured's and the vehicle's details and the chosen limit, so every field is required at the quote stage.

FieldTypeRequiredRule
policyholderobjectNoThe policyholder. Accepted identity type: TCKN. If you send it, it must be the same person as the insured.
insuredarrayQUOTEThe insured: the vehicle's owner; exactly 1 entry. Accepted identity type: TCKN.
vehicleobjectQUOTEThe insured vehicle and the limit.

vehicle

FieldTypeRequiredRule
basketItemIdstringOn a basket-linked quoteThe id of the basket item the vehicle belongs to. At most 256 characters; the value is stored as is. Not sent on a quote obtained without a basket item.
platestringQUOTETurkish plate; no spaces, upper case.
registrationDocumentobjectQUOTEThe vehicle registration document: serial and number; both required.
chassisNumberstringQUOTEChassis number (VIN), 17 characters.
engineNumberstringQUOTEEngine number.
modelCodestringQUOTEModel, reference code (VEHICLE_MODEL).
modelYearintegerQUOTEModel year. A JSON number between 1950 and the year after the current year.
vehicleTypeCodestringQUOTEVehicle type, reference code (VEHICLE_TYPE).
vehicleUsageCodestringQUOTEThe vehicle's usage, reference code (VEHICLE_USAGE).
coverageStartDatestringQUOTEThe coverage start day, YYYY-MM-DD; cannot be before today.
liabilityLimitCodestringQUOTELiability limit per vehicle, reference code (LIABILITY_LIMIT).
  • Get the limits from the GET /api/v1/insurance/reference/LIABILITY_LIMIT list. Show the display name (label) to the buyer and send the code in the request.
  • This version accepts only vehicles with a Turkish plate.
  • The day is a calendar day in Türkiye. A past start day receives 422 insurance.validation.invalid (reason: must_not_be_past) at quote time. If the start day has passed when the order is created, the order is rejected with insurance.quote.declined; get a new quote.
  • If the limit, the usage, the vehicle type or the model has no counterpart at your connection's provider, the quote receives 422 insurance.reference.unknown with the field's path.
  • If the product in your connection accepts only Turkish mobile numbers, a quote with another number receives 422 insurance.quote.declined.

Persons

PersonQUOTEPOLICY
insured[0]Identity type and number, date of birth, email, phone—
policyholder——

Example

{
  "insuranceType": "MOTOR_EXCESS_LIABILITY",
  "insured": [
    {
      "identityType": "TCKN",
      "identityNumber": "<identity number>",
      "birthDate": "<YYYY-MM-DD>",
      "email": "<email>",
      "phone": "<E.164 phone>"
    }
  ],
  "vehicle": {
    "basketItemId": "car-1",
    "plate": "<plate>",
    "registrationDocument": {
      "serial": "<serial code>",
      "number": "<registration number>"
    },
    "chassisNumber": "<chassis number>",
    "engineNumber": "<engine number>",
    "modelCode": "<model code>",
    "modelYear": 2022,
    "vehicleTypeCode": "<vehicle type code>",
    "vehicleUsageCode": "<usage code>",
    "coverageStartDate": "<YYYY-MM-DD>",
    "liabilityLimitCode": "<limit code>"
  }
}

COMPULSORY_EARTHQUAKE: schema version 1

Compulsory earthquake insurance (DASK) for a home. It is resolved from a basket item with insuranceCategory: HOME; it is also sold without a basket item. The type object property is a single policy for a single independent unit (home). The home's address is sent as a UAVT address code: UAVT address chain. The price is calculated from the insured's and the home's details, so the home fields are required at the quote stage.

FieldTypeRequiredRule
policyholderobjectNoThe policyholder. Accepted identity type: TCKN. If you send it, it must be the same person as the insured.
insuredarrayQUOTEThe insured; exactly 1 entry. Accepted identity type: TCKN.
propertyobjectQUOTEThe insured home.

property

FieldTypeRequiredRule
basketItemIdstringOn a basket-linked quoteThe id of the basket item the home belongs to. At most 256 characters; the value is stored as is. Not sent on a quote obtained without a basket item.
uavtAddressCodestringQUOTEUAVT address code: 10 digits, as text.
coverageStartDatestringQUOTEThe coverage start day, YYYY-MM-DD; cannot be before today.
areaSqmintegerQUOTEGross area of the unit, square metres; 1-100000.
floorCountintegerQUOTETotal number of floors of the building; 1-200.
constructionTypeenumQUOTEConstruction type: REINFORCED_CONCRETE_STEEL (steel, reinforced concrete or frame) or OTHER.
constructionYearintegerQUOTEThe building's construction year. A JSON number between 1800 and the current year.
priorDamageenumQUOTEThe building's previous damage: NONE, LIGHT, MODERATE, TOTAL_LOSS (heavily damaged).
usageenumQUOTEHow the unit is used: RESIDENTIAL, COMMERCIAL, OTHER.
lienholderobjectNoLienholder: the bank or finance institution that financed the home. Fields below.

lienholder:

FieldTypeRequiredRule
institutionTypeenumIf lienholder is sentType of institution: BANK or FINANCE (finance institution).
bankCodestringBANK onlyBank, reference code (BANK).
bankBranchCodestringBANK onlyBranch, reference code (BANK_BRANCH, under the bank).
branchCityCodestringBANK onlyThe branch's province, plate code 01-81.
financeInstitutionCodestringFINANCE onlyFinance institution, reference code (FINANCE_INSTITUTION).

Fields marked "BANK only" and "FINANCE only" apply only for that institution type and are required there. If they are sent for the other type, the request is rejected. If there is no lienholder, do not send lienholder.

  • Checking of the UAVT address code: UAVT address chain.
  • Building fields are raw values (year, floor count, square metres); do not convert them into ranges. A value the product in your connection does not accept (e.g. more floors than the product's limit) receives 422 insurance.validation.invalid (reason: not_supported_by_provider) with the field's path.
  • The day is a calendar day in Türkiye. A past start day receives 422 insurance.validation.invalid (reason: must_not_be_past) at quote time. If the start day has passed when the order is created, the order is rejected with insurance.quote.declined; get a new quote.
  • If the bank, branch, finance institution or the address district has no counterpart at your connection's provider, the request receives 422 insurance.reference.unknown with the field's path.
  • If the product in your connection accepts only Turkish mobile numbers, a quote with another number receives 422 insurance.quote.declined.

Persons

PersonQUOTEPOLICY
insured[0]Identity type and number, date of birth, email, phoneAddress (province, district, line)
policyholder——

Example

{
  "insuranceType": "COMPULSORY_EARTHQUAKE",
  "insured": [
    {
      "identityType": "TCKN",
      "identityNumber": "<identity number>",
      "birthDate": "<YYYY-MM-DD>",
      "email": "<email>",
      "phone": "<E.164 phone>",
      "address": {
        "cityCode": "35",
        "districtCode": "<district code>",
        "line": "<address line>"
      }
    }
  ],
  "property": {
    "basketItemId": "home-1",
    "uavtAddressCode": "<UAVT address code>",
    "coverageStartDate": "<YYYY-MM-DD>",
    "areaSqm": 120,
    "floorCount": 5,
    "constructionType": "REINFORCED_CONCRETE_STEEL",
    "constructionYear": 2005,
    "priorDamage": "NONE",
    "usage": "RESIDENTIAL"
  }
}

If a bank financed the home, lienholder is sent like this:

"lienholder": {
  "institutionType": "BANK",
  "bankCode": "<bank code>",
  "bankBranchCode": "<branch code>",
  "branchCityCode": "35"
}

HOME_INSURANCE: schema version 1

Home insurance. It is resolved from a basket item with insuranceCategory: HOME; it is also sold without a basket item. The type object property is a single policy for a single independent unit (home). The home's address is sent as a UAVT address code: UAVT address chain. The price is calculated from the insured's and the home's details and the sums insured, so every field is required at the quote stage.

FieldTypeRequiredRule
policyholderobjectNoThe policyholder. Accepted identity type: TCKN. If you send it, it must be the same person as the insured.
insuredarrayQUOTEThe insured; exactly 1 entry. Accepted identity type: TCKN.
propertyobjectQUOTEThe insured home.

property

FieldTypeRequiredRule
basketItemIdstringOn a basket-linked quoteThe id of the basket item the home belongs to. At most 256 characters; the value is stored as is. Not sent on a quote obtained without a basket item.
uavtAddressCodestringQUOTEUAVT address code: 10 digits, as text.
areaSqmintegerQUOTEGross area of the unit, square metres; 1-100000.
constructionYearintegerQUOTEThe building's construction year. A JSON number between 1800 and the current year.
dwellingTypeCodestringQUOTEDwelling type, reference code (DWELLING_TYPE).
floorCodestringQUOTEThe floor the unit is on, reference code (DWELLING_FLOOR).
contentsFireAmountintegerQUOTESum insured for contents against fire, minor units; at least 1, at most 100000000 (TRY 1,000,000).
interiorDecorationAmountintegerQUOTESum insured for interior decoration, minor units; at least 1, at most 100000000 (TRY 1,000,000).
glassBreakageAmountintegerQUOTESum insured for glass breakage, minor units; at least 2000000 (TRY 20,000).
vacantOverThreeMonthsbooleanQUOTEThe home stays empty for more than three months a year.
hasEarthquakePolicybooleanQUOTEThe home has a compulsory earthquake insurance policy in force.
inGatedSitebooleanQUOTEThe home is in a gated community.
hasAlarmbooleanQUOTEThe home has an alarm.
hasCamerabooleanQUOTEThe home has a security camera.
hasWindowBarsbooleanQUOTEThe windows have iron bars.
hasFireExtinguisherbooleanQUOTEThe home has a fire extinguisher.
hasSprinklerbooleanQUOTEThe home has a sprinkler system.
hasResidualCurrentDevicebooleanQUOTEThe home has a residual current device.
hasGasDetectorbooleanQUOTEThe home has a natural gas detector.
isOwnerbooleanQUOTEThe insured owns the home.
includeWatercraftbooleanQUOTECover for watercraft is requested.
lienholderobjectNoLienholder: the bank or finance institution that financed the home. Fields below.

The lienholder fields are the same as for COMPULSORY_EARTHQUAKE (above); only the branch province (branchCityCode) is not in this schema, and if it is sent the request is rejected.

  • Yes/no fields are JSON booleans (true, false) and all of them are required; text such as "true" is not accepted.
  • If a sum insured is outside the limits, the quote receives 422 insurance.validation.invalid with the field's path: reason: must_be_at_most_100000000 at the upper limit, reason: must_be_at_least_<limit> at the lower limit.
  • If the product in your connection takes the sums insured in whole lira, an amount with kuruş receives reason: not_supported_by_provider with the field's path. Send the sums insured in whole lira (a multiple of 100 minor units).
  • No coverage start day is sent in this version; the policy period is set by the product in your connection.
  • Checking of the UAVT address code: UAVT address chain.
  • If the dwelling type, the floor, the bank, the branch or the finance institution has no counterpart at your connection's provider, the quote receives 422 insurance.reference.unknown with the field's path.
  • If the product in your connection accepts only Turkish mobile numbers, a quote with another number receives 422 insurance.quote.declined.

Persons

PersonQUOTEPOLICY
insured[0]Identity type and number, date of birth, email, phone—
policyholder——

Example

{
  "insuranceType": "HOME_INSURANCE",
  "insured": [
    {
      "identityType": "TCKN",
      "identityNumber": "<identity number>",
      "birthDate": "<YYYY-MM-DD>",
      "email": "<email>",
      "phone": "<E.164 phone>"
    }
  ],
  "property": {
    "basketItemId": "home-1",
    "uavtAddressCode": "<UAVT address code>",
    "areaSqm": 120,
    "constructionYear": 2005,
    "dwellingTypeCode": "<dwelling type code>",
    "floorCode": "<floor code>",
    "contentsFireAmount": 50000000,
    "interiorDecorationAmount": 10000000,
    "glassBreakageAmount": 2000000,
    "vacantOverThreeMonths": false,
    "hasEarthquakePolicy": true,
    "inGatedSite": false,
    "hasAlarm": false,
    "hasCamera": false,
    "hasWindowBars": false,
    "hasFireExtinguisher": true,
    "hasSprinkler": false,
    "hasResidualCurrentDevice": true,
    "hasGasDetector": true,
    "isOwner": true,
    "includeWatercraft": false
  }
}

SUPPLEMENTARY_HEALTH: schema version 1

Supplementary health insurance. This type is not linked to a basket item; it is sold only on the API path, without a basket item: Selling Without a Basket Item. The type object health holds the details of the insurance and carries no basketItemId. A quote covers a single person, insured with a Turkish identity number. The health declaration (height, weight, pregnancy status) is in the insured's fields. The price is calculated from the insured's details, so the person fields are required at the quote stage.

FieldTypeRequiredRule
policyholderobjectNoThe policyholder. Accepted identity type: TCKN. If you send it, it must be the same person as the insured.
insuredarrayQUOTEThe insured; exactly 1 entry. Accepted identity type: TCKN.
healthobjectQUOTEThe details of the insurance.

health

FieldTypeRequiredRule
planTypeenumQUOTEPlan type: INPATIENT or INPATIENT_OUTPATIENT (inpatient and outpatient).
pregnancyCoverbooleanNotrue: only plans with pregnancy cover are requested. If not sent or false, only plans without pregnancy cover are returned.
installmentCountintegerNoNumber of instalments, 1-12. If not sent, the premium is collected in a single payment.

Health declaration

FieldTypeRequiredRule
insured[0].heightCmintegerQUOTEHeight, centimetres; 30-250.
insured[0].weightKgintegerQUOTEWeight, kilograms; 1-350.
insured[0].pregnancyStatusenumWhen pregnancyCover: truePregnancy status: PREGNANT.
  • The quote returns only plans of the plan type chosen with planType. If the product in your connection offers plans from several insurance companies, one quote request returns a separate option per company and plan: Quotes › Multiple options.
  • When pregnancyCover: true, insured[0].pregnancyStatus is required; if it is not sent, reason: required is returned. On a quote without pregnancy cover, a pregnancyStatus is rejected with reason: not_applicable.
  • The health declaration is special-category personal data. It is sent only in the quote request; error responses carry only the field's path, never its value. Do not use a real person's details in tests.
  • You can list an option's contracted health facilities by province: Quotes › Contracted facilities.
  • Some options do not accept instalments. For such an option, if installmentCount is greater than 1, the premium collection is rejected with insurance.quote.declined.
  • The insured's address is in Türkiye: insured[0].address.countryCode must be TR. With another country, the order is rejected with insurance.quote.declined.
  • If the province, district or country of the address has no counterpart at your connection's provider, the request receives 422 insurance.reference.unknown with the field's path.
  • First and last names are not needed.
  • If the product in your connection accepts only Turkish mobile numbers, a quote with another number receives 422 insurance.quote.declined.

Persons

PersonQUOTEPOLICY
insured[0]Identity type and number, date of birth, email, phone, the address province (address.cityCode), height, weight; pregnancy status with pregnancy coverThe address country, district and line (countryCode, districtCode, line)
policyholder——

Example

{
  "insuranceType": "SUPPLEMENTARY_HEALTH",
  "insured": [
    {
      "identityType": "TCKN",
      "identityNumber": "<identity number>",
      "birthDate": "<YYYY-MM-DD>",
      "email": "<email>",
      "phone": "<E.164 phone>",
      "heightCm": 170,
      "weightKg": 70,
      "address": {
        "countryCode": "TR",
        "cityCode": "06",
        "districtCode": "<district code>",
        "line": "<address line>"
      }
    }
  ],
  "health": {
    "planType": "INPATIENT_OUTPATIENT"
  }
}

Lead schemas

The fields of lead types are defined by a lead schema. A lead schema uses the same rules as a quote schema and is versioned separately per type (schemaVersion).

  • A lead has no stages: the fields marked "Yes" in the table are required in the lead request.
  • Every lead schema has an optional note field at its root: the lead note, text, at most 1000 characters. The note may carry personal data; it is hidden in the lead's masked view.
  • A lead has no amount, currency, basket item or payment.
  • Request and outcomes: Leads.

MOTOR_THIRD_PARTY_LIABILITY and MOTOR_COMPREHENSIVE: lead schema version 1

A lead for compulsory motor third-party liability insurance (MOTOR_THIRD_PARTY_LIABILITY) or comprehensive motor insurance (MOTOR_COMPREHENSIVE). Both types have the same lead schema. The type object vehicle is a single vehicle.

FieldTypeRequiredRule
policyholderobjectYesThe lead owner: the vehicle's owner. Fields below.
vehicleobjectYesThe vehicle. Fields below.
notestringNoThe lead note. Text, at most 1000 characters.

policyholder:

FieldTypeRequiredRule
identityTypeenumYesIdentity type: TCKN only.
identityNumberstringYesTurkish identity number.
birthDatestringYesDate of birth, YYYY-MM-DD; cannot be in the future.
emailstringYesEmail address.
phonestringYesPhone number, E.164.

vehicle:

FieldTypeRequiredRule
platestringYesTurkish plate; no spaces, upper case.
registrationDocumentobjectYesThe vehicle registration document: serial (1-4 upper-case letters) and number (4-10 digits, as text); both required.

Example:

{
  "insuranceType": "MOTOR_COMPREHENSIVE",
  "policyholder": {
    "identityType": "TCKN",
    "identityNumber": "<identity number>",
    "birthDate": "<YYYY-MM-DD>",
    "email": "<email>",
    "phone": "<E.164 phone>"
  },
  "vehicle": {
    "plate": "<plate>",
    "registrationDocument": {
      "serial": "<serial code>",
      "number": "<registration number>"
    }
  },
  "note": "<lead note>"
}

CARGO_TRANSIT: lead schema version 1

A lead for road cargo transit insurance. The type object shipment is a single shipment; vehicle is the carrying vehicle.

FieldTypeRequiredRule
policyholderobjectYesThe lead owner: the authorized person. Same fields as the motor lead: above.
companyobjectNoThe tax identity of the company submitting the lead. Fields below.
shipmentobjectYesThe shipment. Fields below.
vehicleobjectYesThe carrying vehicle's plate (plate) and registration document (registrationDocument). Same fields as the motor lead: above.
notestringNoThe lead note. Text, at most 1000 characters.

company:

FieldTypeRequiredRule
identityTypeenumYesIdentity type: VKN only.
identityNumberstringYesTax identity number: 10 digits, the check digit is validated.

If you send company, send both fields. The company name is not in this schema; if it is sent, the request is rejected.

shipment:

FieldTypeRequiredRule
cargoDescriptionstringYesThe goods carried. Text, at most 500 characters.
carrierVehicleenumYesCarrying vehicle type: TRUCK.
invoiceAmountintegerYesThe invoice value of the goods, minor units; at least 1.
consigneeNamestringYesThe consignee company. Text, at most 200 characters.
originCityCodestringYesOrigin province, plate code 01-81.
destinationCityCodestringYesDestination province, plate code 01-81.
departureDatestringYesDeparture day, YYYY-MM-DD.

Example:

{
  "insuranceType": "CARGO_TRANSIT",
  "policyholder": {
    "identityType": "TCKN",
    "identityNumber": "<identity number>",
    "birthDate": "<YYYY-MM-DD>",
    "email": "<email>",
    "phone": "<E.164 phone>"
  },
  "company": {
    "identityType": "VKN",
    "identityNumber": "<tax identity number>"
  },
  "shipment": {
    "cargoDescription": "<goods>",
    "carrierVehicle": "TRUCK",
    "invoiceAmount": 50000000,
    "consigneeName": "<consignee company>",
    "originCityCode": "34",
    "destinationCityCode": "06",
    "departureDate": "<YYYY-MM-DD>"
  },
  "vehicle": {
    "plate": "<plate>",
    "registrationDocument": {
      "serial": "<serial code>",
      "number": "<registration number>"
    }
  }
}

Validation

  • Any field that is not in the schema is rejected. A field sent under a provider's own field name is rejected too, because it is not in the schema.
  • Text fields are trimmed and normalized to Unicode NFC. Empty text, control characters such as line breaks, and placeholder values such as "yok" ("none") are not accepted. If there is no value, do not send the field.
  • Numeric fields (amounts, guest count, seat count, model year, warranty period, policy duration, square metres, floor count, construction year, height, weight, instalment count) are JSON numbers; a number sent as text is not accepted. The registration document number (registrationDocument.number) and the UAVT address code (uavtAddressCode) are text.
  • All violations are collected in a single error response. Each violation carries the field path, for example tickets[0].departureAt, stay.checkOutDate, vehicle.registrationDocument.number, property.lienholder.bankCode or insured[1].identityNumber. The value you sent is not written to the error response.
  • After schema validation, the existence of reference codes, whether the type is enabled on your account, and consistency with the basket are checked separately.