Creer une nouvelle cle API
Attribuez un nom pour differencier vos environnements (production, staging, etc.).
Utilisation rapide
Incluez la cle dans l'en-tete X-API-Key pour authentifier vos requetes :
curl -X POST https://app.mailin-hack.fr/api/v1/solve \
-H "X-API-Key: sk_live_xxxxx" \
-H "Content-Type: application/json" \
-d '{"url": "https://mib.tims.fr/invitation/?lang=fr&id=XXX"}'
Comment extraire le lien CAPTCHA ?
Pour automatiser l'integration, vous devez recuperer le lien du bouton "Delivrer" dans l'email Mailinblack.
Ătape 1 : Identifier l'email
Verifiez si l'email contient le mot "mailinblack" :
// JavaScript
if (email.body.toLowerCase().includes("mailinblack")) { ... }
# Python
if "mailinblack" in email_content.lower(): ...
Ătape 2 : Extraire le lien
Le bouton peut avoir differents textes selon la langue :
- "Delivrer" / "Delivrer mon message" / "Delivrer le message"
- "Deliver" / "Deliver my message" / "Deliver the message"
// JavaScript (avec Cheerio)
const links = $('a[href]');
const keywords = ['delivrer', 'deliver'];
links.each((i, link) => {
const text = $(link).text().toLowerCase();
if (keywords.some(k => text.includes(k))) {
const url = $(link).attr('href');
// url = "https://mib.tims.fr/invitation/?id=XXX"
}
});
# Python (avec BeautifulSoup)
from bs4 import BeautifulSoup
soup = BeautifulSoup(html, 'html.parser')
keywords = ['delivrer', 'deliver']
for link in soup.find_all('a', href=True):
text = link.text.lower()
if any(k in text for k in keywords):
url = link['href']
# url = "https://mib.tims.fr/invitation/?id=XXX"
đŠ Limites de Rate Limiting
Notre API applique des limites pour garantir une performance optimale et éviter les abus.
Limite principale : 60 requĂȘtes par minute
Chaque clĂ© API est limitĂ©e Ă 60 requĂȘtes par minute (1 requĂȘte/seconde en moyenne).
- FenĂȘtre glissante de 60 secondes
- Limite appliquée par clé API (pas par IP)
- Maximum : 3 600 requĂȘtes/heure
- Maximum : 86 400 requĂȘtes/jour (si utilisation constante)
Que se passe-t-il en cas de dépassement ?
Si vous dépassez la limite, l'API retournera une erreur HTTP 429 (Too Many Requests) avec :
{
"error": "Rate limit exceeded",
"message": "Vous avez dĂ©passĂ© la limite de 60 requĂȘtes par minute",
"retry_after": 42, // Secondes avant de pouvoir réessayer
"limit": 60,
"remaining": 0
}
Headers de réponse inclus :
X-RateLimit-Limit: 60- Limite maximaleX-RateLimit-Remaining: 15- RequĂȘtes restantesX-RateLimit-Reset: 1736935200- Timestamp de resetRetry-After: 42- Secondes Ă attendre
Bonnes pratiques pour éviter les limites
- Respectez 1 requĂȘte/seconde en moyenne
- Implémentez un retry avec exponential backoff
- Surveillez le header
X-RateLimit-Remaining - Utilisez plusieurs clés API si nécessaire pour plus de volume
- Mettez en cache les résultats cÎté client quand possible
Exemple Python avec gestion du rate limit :
import time
import requests
def call_api_with_retry(url, headers, json_data, max_retries=3):
for attempt in range(max_retries):
response = requests.post(url, headers=headers, json=json_data)
if response.status_code == 429: # Rate limit atteint
retry_after = int(response.headers.get('Retry-After', 60))
print(f"Rate limit atteint. Attente de {retry_after}s...")
time.sleep(retry_after)
continue
return response
raise Exception("Max retries atteint")
Vos cles API
Gardez uniquement les cles actives necessaires et revoquez celles qui ne servent plus.
Chargement des cles...