API per sviluppatori
Porta gare aperte, aggiudicazioni di contratti e altri dati sugli appalti nei tuoi sistemi. Una chiave, risposte JSON, paginazione a cursore e feed giornalieri delle modifiche.
Guida rapida
L'accesso API viene fornito con il tuo piano. Usa la chiave che ti forniamo per chiamare qualsiasi endpoint come token Bearer.
https://app.tenderhive.com/api/public/v1curl "https://app.tenderhive.com/api/public/v1/tenders?country=KE" \ -H "Authorization: Bearer YOUR_API_KEY"
Le risposte sono in JSON. Pagina con next_cursor. Ogni chiave consente 60 richieste al minuto entro il limite mensile; superato uno dei due limiti riceverai 429.
Aggiungi questo indirizzo in Claude, ChatGPT o qualsiasi assistente che supporti MCP, quindi accedi con il tuo account TenderHive Intelligence.
https://app.tenderhive.com/api/public/mcpProvalo
Usa la tua chiave sull'API live e ispeziona la risposta, gli header e il comando curl corrispondente.
La tua chiave rimane in questa scheda del browser e viene inviata solo all'API.
Curl equivalente
curl "https://app.tenderhive.com/api/public/v1/tenders?limit=5" \ -H "Authorization: Bearer YOUR_API_KEY"
Incolla una chiave e invia una richiesta per vedere la risposta in tempo reale.
Sincronizzazione giornaliera
Carica i tuoi dati concessi in licenza una volta, poi recupera solo i record nuovi e modificati ogni giorno. Ogni modifica porta un hash del contenuto, così i record invariati possono essere saltati.
# 1. First run: page through everything in your licence curl "https://app.tenderhive.com/api/public/v1/tenders?limit=200" \ -H "Authorization: Bearer $TENDERHIVE_KEY" # repeat with &cursor=<next_cursor> until next_cursor is null # 2. Every day after: fetch only what changed since your last run curl "https://app.tenderhive.com/api/public/v1/tenders/changes?since=2026-10-07T00:00:00Z&limit=200" \ -H "Authorization: Bearer $TENDERHIVE_KEY"
Riferimento
| Limite | Valore | Intestazione |
|---|---|---|
| Limite al minuto | 60 richieste al minuto per chiave per impostazione predefinita; aumentabile previo accordo | X-RateLimit-Limit / -Remaining / -Reset |
| Limite al secondo | Accordi Enterprise: fino a 20 richieste al secondo per chiave, con un burst di 2 secondi | X-RateLimit-Limit-Second / -Remaining-Second, RateLimit, RateLimit-Policy |
| Richieste condizionali | Ogni risposta contiene un ETag; invia If-None-Match per ottenere 304 quando nulla è cambiato | ETag / If-None-Match |
| Disponibilità mensile | Impostato dal tuo piano o accordo, conteggiato per organizzazione, si azzera il 1° del mese (UTC) | x-quota-limit / -remaining / -reset |
| Dimensione pagina | Fino a 200 record per richiesta; paginazione a cursore | next_cursor |
| Restrizioni chiave | Le chiavi possono essere limitate a paesi e settori concessi in licenza e possono avere una data di scadenza | — |
| Stato | Codice | Significato |
|---|---|---|
| 400 | bad_request | Un filtro o cursore non è valido. |
| 401 | unauthenticated | Chiave mancante, sconosciuta, revocata o scaduta. |
| 402 | plan_required | Il tuo piano non include l'accesso API. |
| 403 | scope_denied | La chiave non è concessa in licenza per questi dati o paese. |
| 429 | rate_limited | Limite di burst o disponibilità mensile raggiunto. Attendi i secondi indicati in retry-after. |
| 503 | service_unavailable | Problema temporaneo. Riprova con backoff. |
Riferimento
Ogni risposta contiene x-ratelimit-limit, x-ratelimit-remaining e x-ratelimit-reset, più x-quota-* quando si applica un limite mensile.
Domande? Contattaci