e-Devlet Kapısı Data API: KPS identity and service catalog
e-Devlet Kapısı is the official Android app for Turkey's national e-government gateway, published by T.C. Cumhurbaşkanlığı Siber Güvenlik Başkanlığı. It brings government-service search, favorite procedures, My City institution lists, Personal Info and barcode or QR document checking into one mobile experience, with selected procedures opening in service or payment webviews. Sign-in options include an e-Devlet password and TCKK identity-card NFC verification with a PIN and SMS confirmation, alongside push approvals for two-factor login. Turkish citizens in Turkey and abroad, including residents of Germany, use it to reach public services from their phones.
KPS identity records connect kimlikNo and adSoyad with the registered address in acikAdres, the registry update date in kpsSonGuncellemeTarihi and verification flags such as epostaVerified and cepTelVerified. With the account holder's authorization, those fields support identity matching and form pre-filling for onboarding teams. Card-proofing records add token, challenge and smsRequired; account settings expose two-factor status through ikiAsamaOtpAcikMi.
Service directories pair serviceName and serviceCode with institutionName, while search results use hizmetAdi and hizmetKodu. Municipal portals can group institutions by cityCode and show available-service counts from serviceCount, then connect those institutions with matching procedures. Document-checking workflows use the returned barkodluBelge HTML. Push approvals associate did and tid with approvalType, resultCode and server time. openData Studio turns these catalog and verification data structures into callable open data for civic-service integrations, with account-specific records remaining subject to user authorization.
Screenshots
API surface
The endpoints and request/response examples below are reconstructed from the app's interface — illustrative, not a live capture.
Government service catalog
POST
/v1/services/listopendataLoads service-catalog tiles with serviceName, serviceCode, institutionName and the link used to open a selected procedure.
Auth: Login-stage form submission without a session cookie. The login flag indicates session status.
- return
- login
- data
- baseUrl
- content
- conceptServices
- serviceDomainURLs
- resultCode
- resultMessage
- resultText
- configPath
- explanation
- question
- iconName
- institutionCode
- institutionName
- link
- serviceCode
- serviceName
- serviceDomainType
POST /v1/services/list HTTP/1.1 Content-Type: application/x-www-form-urlencoded get=get&appVersion=<app-version>&operatingSystem=Android&language=tr&mode=demo{ "return": true, "login": 1, "data": { "baseUrl": "<service-root>", "content": [ { "configPath": "<service-reference>", "explanation": "Example government procedure", "question": "", "iconName": "<service-icon>", "institutionCode": 101, "institutionName": "Example public institution", "link": "<service-link>", "serviceCode": 1001, "serviceName": "Example service", "serviceDomainType": 1 } ], "conceptServices": [], "serviceDomainURLs": [], "resultCode": 0, "resultMessage": "OK", "resultText": "OK" } }Search government services
POST
/v1/services/searchopendataSearches the government-service catalog by text and returns procedure names, service and institution codes, and mobile service-link references.
Auth: Login-stage form submission without a session cookie. The login flag indicates session status.
- return
- login
- data
- baseUrl
- serviceDomainURLs
- content
- hizmetAdi
- hizmetKodu
- kurumAdi
- kurumKodu
- kurumTipi
- mobilHizmetKlasoru
- mobilHizmetURL
- iconName
- url
- serviceDomainType
POST /v1/services/search HTTP/1.1 Content-Type: application/x-www-form-urlencoded isMobile=true&aranan=example&appVersion=<app-version>&operatingSystem=Android&language=tr&mode=demo{ "return": true, "login": 1, "data": { "baseUrl": "<service-root>", "serviceDomainURLs": [], "content": [ { "hizmetAdi": "Example civil-registry service", "hizmetKodu": "1002", "kurumAdi": "Example registry institution", "kurumKodu": "102", "kurumTipi": "merkezi", "mobilHizmetKlasoru": "<service-folder>", "mobilHizmetURL": "<service-link>", "iconName": "<service-icon>", "url": "<service-link>", "serviceDomainType": 1 } ] } }Institutions by city (My City)
POST
/v1/agencies/by-cityopendataLists municipalities and agencies for a cityCode, with institutionName and available-service counts for the My City directory.
Auth: Login-stage form submission without a session cookie. The login flag indicates session status.
- return
- login
- data
- resultCode
- content
- kod
- baseUrl
- institutionCode
- institutionName
- serviceCount
- totalCount
- sectionCode
- cityCode
- categoryCode
- iconName
POST /v1/agencies/by-city HTTP/1.1 Content-Type: application/x-www-form-urlencoded get=get&categoryCode=2&cityCode=34&appVersion=<app-version>&operatingSystem=Android&language=tr&mode=demo{ "return": true, "login": 1, "data": { "resultCode": 0, "content": [ { "institutionCode": 3401, "institutionName": "Example municipality", "serviceCount": 12, "totalCount": 12, "sectionCode": 2, "cityCode": 34, "categoryCode": 2, "iconName": "<municipality-icon>" } ], "kod": 0, "baseUrl": "<service-root>" } }Toggle favorite service
POST
/v1/services/favorites/updateopendataAdds or removes a service from the home favorites list using favori and hizmetKodu, returning the updated service tiles.
Auth: Login-stage form submission without a session cookie. The login flag indicates session status.
- return
- login
- data
- baseUrl
- content
- resultCode
- resultMessage
- resultText
- configPath
- explanation
- iconName
- institutionCode
- institutionName
- link
- serviceCode
- serviceName
- serviceDomainType
- favori
- hizmetKodu
POST /v1/services/favorites/update HTTP/1.1 Content-Type: application/x-www-form-urlencoded favori=add&hizmetKodu=1001&appVersion=<app-version>&operatingSystem=Android&language=tr&mode=demo{ "return": true, "login": 1, "data": { "baseUrl": "<service-root>", "content": [ { "configPath": "<service-reference>", "explanation": "Example government procedure", "iconName": "<service-icon>", "institutionCode": 101, "institutionName": "Example public institution", "link": "<service-link>", "serviceCode": 1001, "serviceName": "Example service", "serviceDomainType": 1 } ], "resultCode": 0, "resultMessage": "OK", "resultText": "OK" } }Citizen KPS profile
POST
/v1/account/profile/readosintReturns the signed-in user's KPS identity, registered address, phone and email verification flags, and two-factor account status for Personal Info.
Auth: Authenticated session cookie (w3a) and a stored User-Agent. A login value of 0 indicates that sign-in is required.
- return
- login
- data
- kullaniciBilgisi
- kimlikBilgisi
- adresBilgisi
- kisiselBilgiler
- kimlikNo
- ad
- soyad
- adSoyad
- cinsiyet
- dogumTarih
- babaAd
- anaAd
- dogumYer
- medeniHal
- adresNo
- kpsSonGuncellemeTarihi
- acikAdres
- ceptelUlkeKodu
- ceptel
- eposta
- epostaVerified
- cepTelVerified
- yuzyuzeTelVerfied
- twoFactorLogin
- twoFactorUser
- canShowBanner
- ikiAsamaOtpAcikMi
POST /v1/account/profile/read HTTP/1.1 Cookie: w3a=<session-cookie> User-Agent: <stored-user-agent> Content-Type: application/x-www-form-urlencoded appVersion=<app-version>&operatingSystem=Android&language=tr&mode=demo{ "return": true, "login": 1, "data": { "kullaniciBilgisi": { "kimlikBilgisi": { "kimlikNo": "<identity-number>", "ad": "<given-name>", "soyad": "<family-name>", "adSoyad": "<full-name>", "cinsiyet": "<sex-code>", "dogumTarih": "<birth-date>", "babaAd": "<father-name>", "anaAd": "<mother-name>", "dogumYer": "<birthplace>", "medeniHal": "<marital-status>", "adresNo": "<address-number>", "kpsSonGuncellemeTarihi": "<updated-date>" }, "adresBilgisi": { "acikAdres": "<registered-address>", "kpsSonGuncellemeTarihi": "<updated-date>" }, "kisiselBilgiler": { "ceptelUlkeKodu": "90", "ceptel": "<masked-phone>", "eposta": "<email-address>", "epostaVerified": "E", "cepTelVerified": "E", "yuzyuzeTelVerfied": "H" } }, "twoFactorLogin": true, "twoFactorUser": 1, "canShowBanner": 1, "ikiAsamaOtpAcikMi": 1 } }NFC TCKK token challenge
POST
/v1/identity/card/challengeosintStarts TCKK chip sign-in by returning a token and challenge for the NFC card-read step.
Auth: Pre-session login form with uuid, authCode and the card PIN. No session cookie is required at this step.
- return
- login
- data
- uuid
- authCode
- pin
- token
- challenge
- sonucKodu
- sonucAciklamasi
POST /v1/identity/card/challenge HTTP/1.1 Content-Type: application/x-www-form-urlencoded uuid=<device-uuid>&authCode=<authorization-code>&pin=<card-pin>&operatingSystem=Android&appVersion=<app-version>&language=tr&mode=demo{ "return": true, "login": 0, "data": { "token": "<card-token>", "challenge": "<card-challenge>", "sonucKodu": "0", "sonucAciklamasi": "OK" } }NFC TCKK card verification
POST
/v1/identity/card/verifyosintSubmits TCKK chip data groups and signedData, then reports whether SMS confirmation is needed and which masked phone receives it.
Auth: Pre-session login form using the token and uuid from the card-challenge step, plus card proof. No session cookie is attached.
- return
- login
- data
- seriNo
- token
- uuid
- file1
- file2
- file3
- signedData
- sonucKodu
- sonucAciklamasi
- smsRequired
- cepTel
- ulkeKodu
- isSMSSent
- smsDuration
POST /v1/identity/card/verify HTTP/1.1 Content-Type: application/x-www-form-urlencoded seriNo=<card-serial>&token=<card-token>&uuid=<device-uuid>&file1=<chip-group-1>&file2=<chip-group-2>&file3=<chip-group-3>&signedData=<signed-card-proof>&operatingSystem=Android&appVersion=<app-version>&language=tr&mode=demo{ "return": true, "login": 0, "data": { "sonucKodu": "0", "sonucAciklamasi": "OK", "smsRequired": true, "cepTel": "<masked-phone>", "ulkeKodu": "90", "isSMSSent": true, "smsDuration": 120 } }NFC TCKK SMS confirmation
POST
/v1/identity/card/confirmosintConfirms the SMS code against the NFC token to complete chip-based sign-in.
Auth: Pre-session login form using the prior card token and uuid together with the SMS confirmation code.
- return
- login
- data
- messageArr
- uuid
- token
- smsCode
POST /v1/identity/card/confirm HTTP/1.1 Content-Type: application/x-www-form-urlencoded uuid=<device-uuid>&token=<card-token>&smsCode=<sms-code>&operatingSystem=Android&appVersion=<app-version>&language=tr&mode=demo{ "return": true, "login": 1, "data": {}, "messageArr": [ "Example confirmation successful" ] }Barcode / QR document check
POST
/v1/documents/verifyopendataChecks an issued document barcode or QR and returns barkodluBelge HTML; the flow can also request the associated validation fields.
Auth: Authenticated session cookie (w3a) and a stored User-Agent. A login value of 0 indicates that sign-in is required. Verification-field discovery also accepts field and sorgulananBarkod.
- return
- login
- data
- messageArr
- barkodluBelge
- qr
- os
- field
- sorgulananBarkod
POST /v1/documents/verify HTTP/1.1 Cookie: w3a=<session-cookie> Content-Type: application/x-www-form-urlencoded qr=<document-qr>&os=Android&appVersion=<app-version>&language=tr&mode=demo{ "return": true, "login": 1, "data": { "barkodluBelge": "<html><body>Illustrative document verification result</body></html>" }, "messageArr": [] }Push OTP approval
POST
/v1/access/approvals/submitosintConfirms or rejects a login push approval using device and transaction identifiers, otp and approvalType, returning resultCode and server time.
Auth: Device-linked OTP form using did, tid, t and otp with an approval choice. No session cookie is attached.
- did
- tid
- t
- otp
- op
- approvalType
- operatingSystem
- appVersion
- language
- mode
- resultCode
- time
POST /v1/access/approvals/submit HTTP/1.1 Content-Type: application/x-www-form-urlencoded did=<device-id>&tid=<transaction-id>&t=<push-token>&otp=<one-time-code>&op=approve&approvalType=1&operatingSystem=Android&appVersion=<app-version>&language=tr&mode=demo{ "resultCode": "0", "time": "2026-10-27T12:00:00Z" }Session logout
POST
/v1/account/session/endosintEnds the current signed-in session and returns login and return flags indicating the sign-out result.
Auth: Authenticated session cookie (w3a) and a stored User-Agent. A login value of 0 indicates that sign-in is required.
- login
- return
- appVersion
- operatingSystem
- language
- mode
POST /v1/account/session/end HTTP/1.1 Cookie: w3a=<session-cookie> Content-Type: application/x-www-form-urlencoded appVersion=<app-version>&operatingSystem=Android&language=tr&mode=demo{ "login": 0, "return": true }
Data categories
- identity
- government-services
- document-verification
- two-factor-auth
Where teams use this data
HR onboarding against KPS identity
Employers pull kimlikNo, adSoyad, dogumTarih and acikAdres from the signed-in profile to pre-fill contracts and match the TCKK chip proofing trail (token, challenge, smsRequired) instead of re-keying a nüfus extract.
Municipal service directory
City portals sync institutionName, cityCode and serviceCount for My City, then attach hizmetAdi / hizmetKodu search hits so residents jump to the matching procedure without browsing the full catalog.
Issued-document barcode check
Registrars post a scanned QR and render barkodluBelge to confirm a nüfus or diploma print is still valid, using the same field/sorgulananBarkod list the in-app scanner shows.
Push-OTP desk approval
Helpdesks consume did, tid, otp and approvalType on the giris approval call, plus ikiAsamaOtpAcikMi from the profile, to reconcile which devices completed two-factor login.
Frequently asked questions
Which identity fields are represented in the personal profile?
The signed-in profile groups registry identity under kullaniciBilgisi.kimlikBilgisi, including kimlikNo, ad, soyad, adSoyad, cinsiyet, dogumTarih, babaAd, anaAd, dogumYer, medeniHal, adresNo and kpsSonGuncellemeTarihi. Address and contact sections include acikAdres, ceptel and eposta with verification flags. Profile, document checking and sign-out use a session cookie with a stored User-Agent. These account-specific records require the account holder's authorization; the examples use placeholders rather than personal details.
How do TCKK NFC sign-in and push OTP approval differ?
NFC sign-in begins with uuid, authCode and a card PIN to obtain token and challenge. Card verification submits seriNo, chip file1 through file3 and signedData. If smsRequired is true, smsCode confirms the existing token and uuid to finish chip-based sign-in. Catalog requests and pre-session NFC stages use the login flow without a session cookie. Push approval is a separate device-linked flow using did, tid, otp and approvalType, with resultCode and time in the response. Where present, login indicates session status; 0 means there is no active signed-in session, not necessarily that a pre-session NFC step failed.
Which fields support a searchable municipal service directory?
Catalog entries pair serviceName and serviceCode with institutionName and service links. Text-search results provide hizmetAdi, hizmetKodu, kurumAdi and kurumKodu. My City records add cityCode, categoryCode and serviceCount so a portal can group institutions by city and connect them with matching procedures.
What does a document check return, and are the examples official?
The document-check flow accepts qr and returns document HTML as barkodluBelge, together with status and message fields. It can also request validation-field details using field and sorgulananBarkod. The response shown here is illustrative, not an actual citizen document. All path-only API models and sample values on this page are integration examples rather than official production service addresses. They describe catalog, identity and verification data structures without supplying production addresses or access credentials, and do not grant access to anyone's personal records or approval codes.
Apps similar to e-Devlet Kapısı
- e-Nabız — e-Nabız is the Turkish Ministry of Health personal-health app, where citizens and authorised relatives or physicians open diagnoses, tests, images, medicines, vaccines and allergies after activating the service by signing in through e-Devlet on enabiz.gov.tr.
- GİB — GİB is the Turkish Revenue Administration (Gelir İdaresi Başkanlığı) mobile app for viewing and paying taxes, fees and penalties the administration collects, plus registry, vehicle and e-Archive invoice records.
- Cimer Mobil — Cimer Mobil is the Presidential Communication Center app from Türkiye's Directorate of Communications, used to file and track complaints, requests, suggestions and information requests to public institutions, including applications that CİMER also accepts via e-Devlet.
- mygov — mygov is Azerbaijan's Innovation and Digital Development Agency app for digital access to government services and contact with authorities, and turkiye.gov.tr lists the my.gov.az portal as a sister e-government gateway.
- Absher — Absher is the Saudi Ministry of Interior e-services app and portal, launched in 2010, covering document renewals, appointments, Hajj permits, job applications and crime reporting.
- Singpass — Singpass is Singapore's national digital identity, used to sign in to government and business services, present identity in person, digitally sign, and open official personal data.
- Pak Identity — Pak Identity is NADRA's Android app for Pakistani citizens to apply for CNIC and NICOP issuance, modification, renewal and reprint, with in-app photo, fingerprint and signature capture and online payment.
- DigiLocker — DigiLocker is India's Ministry of Electronics and Information Technology document wallet, where Aadhaar-linked users store and share issued licences, vehicle records, certificates and academic transcripts and can e-sign files.
More Identity apps
Topics
- e-Devlet Kapısı API
- Turkey government service catalog
- KPS identity fields
- kimlikNo
- hizmetAdi
- barkodluBelge
- TCKK NFC verification
- municipal service directory
- e-government data integration
Need this app's data API integrated?
We deliver scoped integrations for any named app — from USD 500 with source-code handoff, or hosted access billed per call. Tell us the data you need.
- NDA + SOW on every engagement
- Delivery in 3–7 days
- Payment only after acceptance
- Work scoped to authorized use