Documentation
Iraka API
Accédez aux services Iraka depuis n'importe quelle application. API RESTful simple, sans authentification requise.
Utilisez ce point de terminaison pour récupérer les services. Combinez les paramètres pour affiner vos résultats.
| Paramètre | Type | Description |
|---|---|---|
| karoka | string | Recherche par mots-clés dans le titre et la description. |
| sokajy | string | Filtre par nom de catégorie. |
| user_iraka_id | string | Filtre par identifiant unique du prestataire. |
Recherche par mot-clé
GET https://iraka.mg/apiv1/service?karoka=web
Filtrer par prestataire (ID)
GET https://iraka.mg/apiv1/service?user_iraka_id=AmZ4pUuFjCsqaTTyqdjw
Combinaison filtre + recherche
GET https://iraka.mg/apiv1/service?sokajy=Design Graphique & Création&karoka=logo
1interface IrakaService {2 iraka_id: string;3 iraka_title: string;4 sokajy: string;5 vidiny: number;6 sary: string;7 mpanao_iraka: {8 user_iraka_id: string;9 anarana: string;10 sary_piraofila: string;11 };12}1314async function getServices(search: string = ''): Promise<IrakaService[]> {15 const BASE = 'https://iraka.mg';16 const response = await fetch(BASE + '/apiv1/service?karoka=' + search);17 const json = await response.json();18 return json.data;19}
Copiez ce code dans un fichier .html pour afficher les services sur votre site.
1<!DOCTYPE html>2<html>3<head>4 <style>5 .iraka-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 20px; padding: 20px; }6 .iraka-card { border: 1px solid #eee; border-radius: 12px; padding: 15px; transition: 0.3s; }7 .iraka-card:hover { box-shadow: 0 10px 20px rgba(0,0,0,0.1); }8 .iraka-img { width: 100%; height: 160px; object-fit: cover; border-radius: 8px; }9 .iraka-cat { font-size: 0.75rem; color: #6366f1; font-weight: 700; margin: 10px 0 5px; }10 .iraka-title { font-size: 1.1rem; margin: 5px 0; }11 .iraka-provider { display: flex; align-items: center; gap: 10px; margin-top: 10px; padding-top: 10px; border-top: 1px solid #f5f5f5; }12 .iraka-avatar { width: 30px; height: 30px; border-radius: 50%; object-fit: cover; }13 .iraka-footer { display: flex; justify-content: space-between; align-items: center; margin-top: 10px; }14 .iraka-price { font-weight: 800; }15 .iraka-rating { color: #facc15; font-size: 0.85rem; }16 </style>17</head>18<body>19 <div id="services-container" class="iraka-grid">Chargement...</div>20 <script>21 const BASE_URL = 'https://iraka.mg';22 async function loadIraka() {23 const res = await fetch(BASE_URL + '/apiv1/service');24 const json = await res.json();25 const el = document.getElementById('services-container');26 el.innerHTML = json.data.map(function(svc) {27 return [28 '<div class="iraka-card">',29 '<img src="' + BASE_URL + '/' + svc.sary + '" class="iraka-img">',30 '<div class="iraka-cat">' + svc.sokajy + '</div>',31 '<h3 class="iraka-title">' + svc.iraka_title + '</h3>',32 '<div class="iraka-provider">',33 '<img src="' + BASE_URL + '/' + svc.mpanao_iraka.sary_piraofila + '" class="iraka-avatar">',34 '<span>' + svc.mpanao_iraka.anarana + '</span></div>',35 '<div class="iraka-footer">',36 '<div class="iraka-price">' + svc.vidiny_ar + '</div>',37 '<div class="iraka-rating">★ ' + svc.statistika.naoty + '</div></div></div>',38 ].join('');39 }).join('');40 }41 loadIraka();42 </script>43</body>44</html>
1{2 "success": true,3 "count": 1,4 "data": [5 {6 "iraka_id": "ofeRyCC2BLdSt7WmawrR",7 "iraka_title": "Création d'entreprise",8 "sokajy": "Autre Service (Non listé)",9 "zana_tsokajy": "Création d'entreprise ( NIF & STAT )",10 "vidiny": 200000,11 "vidiny_ar": "200 000 Ar",12 "saokajy_vidiny": "projet",13 "sary": "innova.mg/irakaimage/rmslido/service/ofeRyCC2BLdSt7WmawrR",14 "mpanao_iraka": {15 "user_iraka_id": "AmZ4pUuFjCsqaTTyqdjw",16 "anarana": "Faniry Hrentsoa",17 "anarana_fohy": "Faniry",18 "sary_piraofila": "innova.mg/irakaimage/rmslido/avatar/AmZ4pUuFjCsqaTTyqdjw",19 "voamarina": true,20 "an_tserasera": false21 },22 "statistika": {23 "naoty": 0,24 "isan_ny_hevitra": 025 },26 "toerana": {27 "faritra": "ANALAMANGA",28 "distrika": "ANTANANARIVO"29 }30 }31 ]32}
Terme de recherche trop court ou paramètres invalides.
Erreur interne du serveur lors du traitement de la requête.
Accédez à la base de données des zotras (lignes de Taxi-Be) d'Antananarivo. L'API calcule automatiquement les trajets directs et avec correspondance entre deux stations/quartiers.
| Paramètre | Type | Description |
|---|---|---|
| niaingana | string | Quartier de départ (ex: Ankatso, Analakely). Optionnel. Le paramètre legacy depart est aussi supporté en fallback. |
| toerana_aleha | string | Quartier d'arrivée / destination (ex: 67ha, Anosy). Optionnel. Le paramètre legacy destination est aussi supporté en fallback. |
Voici un exemple complet intégrant des inputs stylisés et l'appel fetch à l'API Taxi-Be avec gestion des trajets directs, indirects, et des erreurs de quartiers introuvables.
<div style="display: flex; gap: 8px; padding: 12px; background: #f3f2ef; border-radius: 8px;">
<input id="dep" placeholder="Niaingana" style="flex: 1; padding: 6px 12px; border: 1px solid #ccc; border-radius: 4px;">
<input id="arr" placeholder="Toerana aleha" style="flex: 1; padding: 6px 12px; border: 1px solid #ccc; border-radius: 4px;">
<button id="searchBtn" style="background: #6b4fa0; color: #fff; border: none; padding: 6px 12px; border-radius: 4px; cursor: pointer;">Rechercher</button>
</div>
<div id="result" style="margin-top: 10px; font-weight: bold;"></div>
<script>
document.getElementById('searchBtn').onclick = function() {
var dep = document.getElementById('dep').value;
var arr = document.getElementById('arr').value;
var resultDiv = document.getElementById('result');
resultDiv.innerText = 'Recherche...';
var url = 'https://iraka.mg/api/v1/taxi-be?niaingana=' + encodeURIComponent(dep) + '&toerana_aleha=' + encodeURIComponent(arr);
fetch(url)
.then(function(res) { return res.json(); })
.then(function(res) {
if (res.laza === 'nahomby') {
if (res.karazana === 'mivantana') {
resultDiv.innerText = 'Lignes directes : ' + res.zotra_azo_raisina.join(', ') + ' (Arrêts: ' + res.fijanonana.join(' ➔ ') + ')';
} else {
resultDiv.innerText = 'Correspondance : Prendre ' + res.zotra[0].zotra_voalohany + ' puis ' + res.zotra[0].zotra_faharoa + ' à ' + res.zotra[0].fijanonana_iraisana;
}
} else {
resultDiv.innerText = res.hafatra || 'Aucun trajet trouvé';
}
})
.catch(function(err) { resultDiv.innerText = 'Erreur : ' + err.message; });
};
</script>