htmlkin.io
Accedi
Per sviluppatori

Documentazione REST API

Pubblica e aggiorna pagine HTML direttamente dal codice e dalle pipeline di IA. Pubblica e aggiorna siti statici e pagine HTML dal codice e dalle pipeline di IA. Disponibile su tutti i piani, compreso Free, con una chiave API.

Crea una chiave API →Scarica OpenAPI

Autenticazione

Ogni richiesta richiede una chiave API nell'intestazione Authorization. Crea la chiave nel tuo Pannello, nella pagina “Chiavi API” — viene mostrata una sola volta. Una richiesta senza una chiave valida viene rifiutata con 401 invalid_api_key.

L’indirizzo base di tutti gli endpoint è https://htmlkin.io/api/v1. Aggiungi questa intestazione a ogni richiesta:

"Authorization: Bearer <api_key>"

L’API è disponibile su tutti i piani, compreso Free. Crea una chiave nel tuo Pannello, nella pagina “Chiavi API” — viene mostrata una sola volta.

Limiti di richieste

La frequenza delle richieste è limitata in base al piano, per account: tutte le sue chiavi condividono un contatore. Oltre il limite ricevi 429 rate_limit_exceeded con l’intestazione Retry-After.

PianoLimite
Free10 richieste al minuto, fino a 60 caricamenti di siti all'ora insieme al Pannello, un aggiornamento per sito al minuto
Pro60 richieste al minuto
Business120 richieste al minuto

Endpoint

POST/api/v1/pages

Pubblica una pagina

Carica un file HTML o uno ZIP di un sito statico e lo pubblica sul proprio sottodominio. Invia esattamente uno dei campi html_file e site_archive. Per impostazione predefinita viene assegnato un sottodominio casuale; imposta il tuo nel campo subdomain.

Corpo della richiesta multipart/form-data
CampoTipoObbligatorioDescrizione
html_filefilenoUn singolo file HTML, salvato come index.html. Esattamente una fonte di contenuto.
site_archivefilenoUno ZIP di un sito statico: la pagina di ingresso è l'index.html nella radice o il primo file HTML nella radice dell'archivio. Il sito decompresso deve essere al massimo di 200 MB e rientrare nello spazio di archiviazione libero.
subdomainstringnoSottodominio desiderato ({subdomain}.htmlkin.io), 3–63 caratteri a-z, 0-9, “-” (non alle estremità). 409 se è già occupato.
pinstringnoUn PIN di 4 cifre (0000–9999) per proteggere la visualizzazione. Sui piani a pagamento.
visibilitystringnoChi può aprire il sito: public — chiunque, i motori di ricerca lo indicizzano; link — chiunque abbia il link, senza indicizzazione; team — i membri del team dell'account dopo l'accesso, con il piano Business; private — solo il proprietario dell'account dopo l'accesso. Il valore predefinito è public.
Esempio di richiesta
curl -X POST https://htmlkin.io/api/v1/pages \
  -H "Authorization: Bearer $HTMLKIN_API_KEY" \
  -F "html_file=@index.html" \
  -F "subdomain=mypage"
Risposta 201
{
  "id": "abc123",
  "url": "https://mypage.htmlkin.io",
  "expires_at": null,
  "created_at": "2026-06-14T07:00:00Z",
  "updated_at": "2026-06-14T07:00:00Z",
  "file_count": 1,
  "entry_path": "index.html",
  "visibility": "public"
}
PUT/api/v1/pages/{id}

Aggiorna una pagina

Sostituisce l'intero sito con un nuovo HTML o ZIP allo stesso indirizzo e/o cambia il PIN e la visibilità. L'URL della pagina resta lo stesso. Invia al massimo uno dei campi html_file e site_archive; puoi inviare solo pin e/o visibility per cambiare soltanto la protezione o la visibilità.

Corpo della richiesta multipart/form-data
CampoTipoObbligatorioDescrizione
html_filefilenoUn nuovo file HTML (facoltativo; non insieme a site_archive).
site_archivefilenoUn nuovo ZIP completo del sito; tutti i file precedenti vengono sostituiti.
pinstringno4 cifre impostano o cambiano il PIN; una stringa vuota lo rimuove.
visibilitystringnoChi può aprire il sito: public — chiunque, i motori di ricerca lo indicizzano; link — chiunque abbia il link, senza indicizzazione; team — i membri del team dell'account dopo l'accesso, con il piano Business; private — solo il proprietario dell'account dopo l'accesso.
Esempio di richiesta
curl -X PUT https://htmlkin.io/api/v1/pages/abc123 \
  -H "Authorization: Bearer $HTMLKIN_API_KEY" \
  -F "html_file=@index.html"
Risposta 200
{
  "id": "abc123",
  "url": "https://mypage.htmlkin.io",
  "expires_at": null,
  "created_at": "2026-06-14T07:00:00Z",
  "updated_at": "2026-06-14T07:10:00Z",
  "size_bytes": 12345,
  "file_count": 8,
  "entry_path": "index.html",
  "pin_protected": false,
  "visibility": "public"
}
GET/api/v1/pages/{id}

Ottieni i dettagli della pagina

Restituisce i metadati della pagina: indirizzo, dimensione del sito, numero di file, punto di ingresso, durata, protezione con PIN e visibilità.

Parametri di percorso
ParametroDescrizione
idID della pagina.
Esempio di richiesta
curl -X GET https://htmlkin.io/api/v1/pages/abc123 \
  -H "Authorization: Bearer $HTMLKIN_API_KEY"
Risposta 200
{
  "id": "abc123",
  "url": "https://mypage.htmlkin.io",
  "expires_at": null,
  "created_at": "2026-06-14T07:00:00Z",
  "updated_at": "2026-06-14T07:10:00Z",
  "size_bytes": 12345,
  "file_count": 8,
  "entry_path": "index.html",
  "pin_protected": false,
  "visibility": "public"
}
DELETE/api/v1/pages/{id}

Elimina una pagina

Elimina la pagina definitivamente. Se alla pagina era collegato un dominio personalizzato, il dominio resta nell'account — viene rimosso solo il suo collegamento a questa pagina.

Parametri di percorso
ParametroDescrizione
idID della pagina.
Esempio di richiesta
curl -X DELETE https://htmlkin.io/api/v1/pages/abc123 \
  -H "Authorization: Bearer $HTMLKIN_API_KEY"
Risposta 200
{
  "id": "abc123",
  "deleted": true
}

Codici di errore

Il corpo dell’errore è sempre lo stesso: { "error": "<code>", "message": "<description>" }.

HTTPerrorDescrizione
400invalid_fileIl file singolo non sembra HTML.
400invalid_siteCombinazione di fonti non valida o insieme di file del sito non valido.
400invalid_archiveLo ZIP è danneggiato, cifrato o usa un formato non supportato.
400invalid_pathPercorso del file non valido, non sicuro o duplicato.
400missing_entry_fileNella radice del sito non c'è alcun file HTML.
400too_many_filesIl sito contiene più di 500 file utili.
400banner_removalUn file del sito contiene codice che rimuove la barra promozionale di htmlkin; la barra scompare con un piano a pagamento.
400invalid_pinIl PIN non è di 4 cifre.
400invalid_visibilityvisibility non è uno tra public, link, team, private.
400invalid_subdomainIl sottodominio contiene caratteri non validi (ammessi: a-z, 0-9, “-”).
401invalid_api_keyChiave API non valida o mancante.
403account_bannedL'account è stato bloccato per violazione dei Termini di servizio.
403team_visibility_requires_planLa modalità team è disponibile con il piano Business.
403content_blockedLa pagina di ingresso (index.html) è identica, byte per byte, a una pagina di un sito bloccato per violazione dei Termini di servizio.
403dangerous_linkLa pagina contiene un link che Google Web Risk classifica come phishing o malware.
403page_limit_exceededÈ stato raggiunto il limite di siti attivi del piano.
404not_foundLa pagina non è stata trovata o appartiene a un altro proprietario.
409subdomain_takenIl sottodominio richiesto è già occupato.
413file_too_largeIl sito decompresso supera 200 MB, il limite di un singolo caricamento.
413storage_limit_exceededIl sito non entra nello spazio di archiviazione: insieme agli altri siti attivi dell'account supererebbe lo spazio del piano. In caso di aggiornamento, lo spazio della versione attuale del sito conta come libero.
429rate_limit_exceededTroppe richieste; la risposta contiene l'intestazione Retry-After.

Test e generazione dei client

L’API è descritta da una specifica OpenAPI 3.1 leggibile dalle macchine. Importala per inviare richieste in modo interattivo e generare un client pronto per il tuo linguaggio:

  • Swagger UI / Postman — incolla https://htmlkin.io/api/v1/openapi.json, imposta la chiave Bearer e chiama gli endpoint direttamente dal browser.
  • openapi-generator — genera un SDK per Python, TypeScript, Go e altri linguaggi con un solo comando a partire dalla stessa specifica.

Pubblicazione dagli assistenti IA (MCP)

La stessa API è disponibile tramite il server MCP https://htmlkin.io/mcp — Claude e altri assistenti pubblicano e aggiornano siti direttamente dalla chat, con la tua chiave API. Niente da installare o avviare.

Configura il server MCP →