API REST i un servidor MCP per reservar advocats d'immigració verificats a tot Espanya. Els clients sempre confirmen i paguen a leyapp.es — la vostra integració mai no toca diners.
API exposa les mateixes dades d'advocats verificats que leyapp.es: cerca, perfils públics, ressenyes, disponibilitat i intencions de reserva. L'accés anònim funciona amb límits de velocitat baixos; una clau API augmenta els límits i desbloqueja els punts finals protegits per clau i les anàlisis d'ús.
No s'accepten pagaments a través de l'API
Una intenció de reserva és una reserva de 15 minuts. El client confirma i paga a leyapp.es — la teva integració mai no gestiona diners ni dades de la targeta.
Amigable amb l'anonimat
La lectura d'endpoints i la creació d'intencions funcionen sense clau, amb límits conservadors per IP. Les claus són gratuïtes i es creen al teu tauler de control.
Mode de prova integrat
les claus leyk_test_ executen tot el camí de validació però no creen res ni avisen a ningú. Compila contra test, distribueix amb live.
Seguible per disseny
Cada resposta porta un X-Request-Id. Citeu-lo al servei d'assistència i trobarem la vostra sol·licitud exacta.
De zero a una intenció de reserva (de prova) en quatre sol·licituds. Crea primer una clau de prova gratuïta a Dashboard → Developer.
# 1. Get a test key at leyapp.es/dashboard/developer
export LEYAPP_API_KEY="leyk_test_..."
# 2. Find a lawyer
curl "https://leyapp.es/api/v1/lawyers/search?city=Barcelona&practice_area=immigration" \
-H "Authorization: Bearer $LEYAPP_API_KEY"
# 3. Check availability (id from step 2)
curl "https://leyapp.es/api/v1/lawyers/<lawyer_id>/availability" \
-H "Authorization: Bearer $LEYAPP_API_KEY"
# 4. Create a (test) booking intent
curl -X POST "https://leyapp.es/api/v1/bookings/initiate" \
-H "Authorization: Bearer $LEYAPP_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: demo-1" \
-d '{"lawyer_id":"<lawyer_id>","date":"<date>","start_time":"09:00:00","end_time":"10:00:00"}'Envia la teva clau com un token Bearer en cada petició:
Authorization: Bearer leyk_...
Les sol·licituds amb clau tenen límits per nivell (doble finestra: pic per minut + quota diària) amb els encapçalaments X-RateLimit-Limit, X-RateLimit-Remaining i X-RateLimit-Reset. En el codi d'error 429, respecta Retry-After i torna a provar amb un retard exponencial aleatoritzat.
| Nivell | Sol·licituds per minut | Sol·licituds / dia |
|---|---|---|
| free | 60 | 5,000 |
| partner | 300 | 50,000 |
| internal | 1,000 | ∞ |
Les noves claus comencen al nivell gratuït. Els nivells de soci són atorgats per l'equip de LeyApp — contacta'ns a través del formulari de suport si la teva integració necessita més capacitat. Les sol·licituds anònimes utilitzen límits per IP separats i més baixos.
Les claus de prova (leyk_test_) es comporten exactament com les claus en viu — mateixos punts finals, mateixa validació, mateixes formes de resposta — però no passa res de real: no s'emmagatzema cap intenció de reserva, no es notifica cap advocat, no es pot confirmar ni pagar res.
El trànsit de prova apareix al registre de sol·licituds del teu tauler de control (marcat), però s'exclou dels agregats diaris. Substitueix la clau per una de real quan facis el desplegament — no cal cap altre canvi.
/api/v1/lawyers/searchSearch verified lawyers
Same search engine as leyapp.es. Verified, publicly listed lawyers only. Scope: lawyers:read (anonymous allowed).
| Paràmetre | Tipus | Obligatori | Descripció |
|---|---|---|---|
| city | string | No | |
| practice_area | string | No | Slug from GET /practice-areas |
| language | string | No | |
| min_fee_eur | number | No | |
| max_fee_eur | number | No | |
| sort | string (rating | price_asc | price_desc | reviews) | No | |
| page | integer | No | |
| limit | integer | No |
curl "https://leyapp.es/api/v1/lawyers/search?city=Barcelona&practice_area=immigration&language=en" \ -H "Authorization: Bearer $LEYAPP_API_KEY"
/api/v1/lawyers/{lawyerId}Public lawyer profile
Full public profile incl. bio and bar memberships. Bio is user-generated content wrapped in safety fencing for AI consumers. Scope: lawyers:read (anonymous allowed).
| Paràmetre | Tipus | Obligatori | Descripció |
|---|---|---|---|
| lawyerId | string | Sí |
curl "https://leyapp.es/api/v1/lawyers/<lawyerId>" \ -H "Authorization: Bearer $LEYAPP_API_KEY"
/api/v1/lawyers/{lawyerId}/availabilityAvailable consultation slots
Available slots for a date range (max 14 days). Scope: availability:read (anonymous allowed).
| Paràmetre | Tipus | Obligatori | Descripció |
|---|---|---|---|
| lawyerId | string | Sí | |
| start_date | string | No | Default: today |
| end_date | string | No | Default: start_date + 13 days |
curl "https://leyapp.es/api/v1/lawyers/<lawyerId>/availability" \ -H "Authorization: Bearer $LEYAPP_API_KEY"
/api/v1/lawyers/{lawyerId}/reviewsPublic reviews
Recent reviews from verified clients. Comments are UGC with AI-safety fencing. Scope: reviews:read (anonymous allowed).
| Paràmetre | Tipus | Obligatori | Descripció |
|---|---|---|---|
| lawyerId | string | Sí | |
| limit | integer | No |
curl "https://leyapp.es/api/v1/lawyers/<lawyerId>/reviews" \ -H "Authorization: Bearer $LEYAPP_API_KEY"
/api/v1/practice-areasPractice-area hierarchy
Reference data; cache-friendly (24h). Scope: reference:read (anonymous allowed).
curl "https://leyapp.es/api/v1/practice-areas" \ -H "Authorization: Bearer $LEYAPP_API_KEY"
/api/v1/citiesSupported cities and provinces
Reference data; cache-friendly (24h). Scope: reference:read (anonymous allowed).
curl "https://leyapp.es/api/v1/cities" \ -H "Authorization: Bearer $LEYAPP_API_KEY"
/api/v1/bookings/initiateCreate a booking intent
Creates a 15-minute booking intent for a free slot. The USER must open confirmation_url on leyapp.es to confirm and pay — the API never charges anyone. Supports Idempotency-Key (Stripe semantics: 24h replay, 422 on body mismatch). Test keys validate fully but create nothing. Scope: bookings:initiate (anonymous allowed at 5/hour).
{
"lawyer_id": "<lawyer_id from search>",
"date": "2026-09-01",
"start_time": "09:00:00",
"end_time": "10:00:00",
"source": "api",
"agent_name": "MyIntegration"
}curl -X POST "https://leyapp.es/api/v1/bookings/initiate" \
-H "Authorization: Bearer $LEYAPP_API_KEY" \
-H "Content-Type: application/json" \
-d '{"lawyer_id":"<lawyer_id from search>","date":"2026-09-01","start_time":"09:00:00","end_time":"10:00:00","source":"api","agent_name":"MyIntegration"}'Els punts finals POST no es poden executar des de la documentació — copia el fragment i executa'l amb una clau de prova.
/api/v1/booking-intents/{intentId}API Es necessita clauPoll a booking intent
Status of an intent CREATED BY YOUR KEY: pending | confirmed | expired. Requires an API key with bookings:read (not available anonymously).
| Paràmetre | Tipus | Obligatori | Descripció |
|---|---|---|---|
| intentId | string | Sí |
curl "https://leyapp.es/api/v1/booking-intents/<intentId>" \ -H "Authorization: Bearer $LEYAPP_API_KEY"
Subscriu un punt final HTTPS (Tauler de control → Desenvolupador → Webhooks) als esdeveniments de les intencions de reserva creades amb la teva clau. Les entregues segueixen l'especificació de Webhooks estàndard i es tornen a provar automàticament.
# Delivery headers (Standard Webhooks — standardwebhooks.com):
# webhook-id: unique delivery id (dedup key — at-least-once delivery)
# webhook-timestamp: unix seconds (reject if older than ±5 minutes)
# webhook-signature: v1,<base64 HMAC-SHA256 of "{id}.{timestamp}.{body}">
#
# Payload: { "id": "...", "type": "booking_intent.confirmed",
# "created_at": "...", "data": { "booking_intent_id": "...", "status": "..." } }
# Events: booking_intent.confirmed | booking_intent.expired
# Retries: 1m / 5m / 30m / 2h / 12h, then dead. Endpoint auto-disabled
# after 20 consecutive failures.Prefereixes parlar en lloc de programar? LeyApp inclou un servidor MCP amb 15 eines — cerca, disponibilitat, reserves i (amb el teu consentiment) les teves pròpies reserves — per a Claude, ChatGPT, Cursor i qualsevol client compatible amb MCP. OAuth amb consentiment i nivells de permís granulars; revoca-ho en qualsevol moment des del Dashboard → Developer.
Settings → Connectors → Add custom connector Name: LeyApp URL: https://leyapp.es/api/mcp/mcp Claude opens the LeyApp consent screen — sign in, pick a permission level, and you're connected.
API v1 és només d'addició: els camps s'afegeixen, mai no es renominen ni s'eliminen. Els canvis incompatibles es publicarien com una nova versió amb un període de deprecació de 90 dies anunciat aquí i mitjançant els encapçalaments Deprecation/Sunset.
2026-07-22
Reliability, webhook coverage, and key controls
2026-07-22
Search, profiles, reviews, reference data, intent polling, usage analytics
2026-07-16
API keys, tiered rate limits, idempotency, test mode
2026-03-21
Initial public beta
Preguntes, límits més alts o idees de col·laboració? Contacta'ns a través del formulari de suport — o simplement crea una clau i comença a construir.