<h1>API — Guía de consumo</h1> <p>Base: <code>https://dni-drey.pe2.lol</code></p> <h2>Autenticación</h2> <p>Todo request lleva tu token en el header <code>X-API-Key</code>. Sin header → <code>401</code>. Sin token válido no hay acceso: los tokens solo los emite el administrador.</p> <pre><code class="language-bash">curl -H &quot;X-API-Key: TU_TOKEN&quot; https://dni-drey.pe2.lol/dni/6282044 </code></pre> <h2>Rate limit</h2> <p>1 request cada 5 segundos por token. Si lo excedes → <code>429</code>.</p> <h2>Buscar por DNI</h2> <pre><code class="language-bash">curl -H &quot;X-API-Key: TU_TOKEN&quot; https://dni-drey.pe2.lol/dni/6282044 </code></pre> <p>Respuesta real:</p> <pre><code class="language-json">{&quot;dni&quot;: &quot;06282044&quot;, &quot;nombre&quot;: &quot;EJEMPLO APELLIDO NOMBRE&quot;, &quot;anio&quot;: &quot;1960&quot;} </code></pre> <p>Busca sin el <code>0</code> inicial (<code>06282044</code> → <code>6282044</code>); la respuesta viene con <code>0</code> pad a 8. Si el DNI ya está en caché responde directo; si no, hace consulta viva y la guarda. Cada request válido descuenta 1 consulta de tu membresía.</p> <h2>Verificar un DNI</h2> <pre><code class="language-bash">curl -H &quot;X-API-Key: TU_TOKEN&quot; https://dni-drey.pe2.lol/dni/6282044/verificar </code></pre> <p>Respuesta real:</p> <pre><code class="language-json">{&quot;dni&quot;: &quot;06282044&quot;, &quot;nombre&quot;: &quot;EJEMPLO APELLIDO NOMBRE&quot;, &quot;anio&quot;: &quot;1960&quot;, &quot;verificacion&quot;: {&quot;coincide&quot;: true, &quot;nota&quot;: &quot;re-comparado contra fuentes&quot;}} </code></pre> <p>Descuenta 1 consulta. Rate propio: 1 request cada 30 segundos.</p> <h2>Buscar por nombre</h2> <pre><code class="language-bash">curl -H &quot;X-API-Key: TU_TOKEN&quot; &quot;https://dni-drey.pe2.lol/nombre/JUAN%20PEREZ&quot; </code></pre> <p>Respuesta real:</p> <pre><code class="language-json">{&quot;resultados&quot;: [{&quot;dni&quot;: &quot;06282044&quot;, &quot;nombre&quot;: &quot;JUAN PEREZ EJEMPLO&quot;, &quot;anio&quot;: &quot;1960&quot;}]} </code></pre> <p>Máximo 20 resultados por búsqueda. Descuenta 1 consulta.</p> <h2>Lotes (batch)</h2> <pre><code class="language-bash">curl -X POST -H &quot;X-API-Key: TU_TOKEN&quot; -H &quot;Content-Type: application/json&quot; \ -d '{&quot;dnis&quot;:[&quot;6282044&quot;,&quot;12345678&quot;]}' https://dni-drey.pe2.lol/jobs </code></pre> <p>Respuesta real:</p> <pre><code class="language-json">{&quot;job_id&quot;: &quot;abc123&quot;} </code></pre> <p>Consultar el lote:</p> <pre><code class="language-bash">curl -H &quot;X-API-Key: TU_TOKEN&quot; https://dni-drey.pe2.lol/jobs/abc123 </code></pre> <p>Respuesta real:</p> <pre><code class="language-json">{&quot;estado&quot;: &quot;listo&quot;, &quot;resultados&quot;: [{&quot;dni&quot;: &quot;06282044&quot;, &quot;nombre&quot;: &quot;EJEMPLO APELLIDO NOMBRE&quot;, &quot;anio&quot;: &quot;1960&quot;}]} </code></pre> <p>Límite default: 20 DNIs por lote (ampliable por el administrador según tu plan).</p> <h2>Vincular cuenta (trial)</h2> <pre><code class="language-bash">curl -X POST -H &quot;Content-Type: application/json&quot; \ -d '{&quot;token_supabase&quot;:&quot;TU_JWT&quot;}' https://dni-drey.pe2.lol/vincular </code></pre> <p>Respuesta real:</p> <pre><code class="language-json">{&quot;api_key&quot;: &quot;TU_TOKEN_NUEVO&quot;} </code></pre> <p>Crea tu cuenta trial automáticamente: 3 días + 50 consultas.</p> <h2>Ver tu saldo</h2> <pre><code class="language-bash">curl -H &quot;X-API-Key: TU_TOKEN&quot; https://dni-drey.pe2.lol/perfil </code></pre> <p>Respuesta real:</p> <pre><code class="language-json">{&quot;expires_at&quot;: &quot;2026-10-03&quot;, &quot;consultas_restantes&quot;: 49} </code></pre> <h2>Errores</h2> <table> <thead> <tr> <th>Código</th> <th>Significado</th> </tr> </thead> <tbody> <tr> <td>401</td> <td>Sin token o token inválido (<code>X-API-Key</code> faltante o incorrecto)</td> </tr> <tr> <td>403</td> <td>Membresía vencida o consultas agotadas</td> </tr> <tr> <td>404</td> <td>DNI no existe (o tabla vacía)</td> </tr> <tr> <td>429</td> <td>Rate limit: espera 5 s (30 s en <code>/verificar</code>)</td> </tr> <tr> <td>503</td> <td>Servicio de verificación no disponible, reintenta luego</td> </tr> </tbody> </table>