[{"data":1,"prerenderedAt":429},["ShallowReactive",2],{"seite-\u002Fit\u002Fratgeber\u002Fbexio-api-token\u002F":3},{"id":4,"title":5,"body":6,"description":420,"extension":421,"meta":422,"navigation":423,"path":424,"robots":425,"seo":426,"stem":427,"__hash__":428},"seiten_it\u002Fratgeber\u002Fbexio-api-token.md","Token di accesso all’API di bexio: PAT e Developer Portal",{"type":7,"value":8,"toc":411},"minimark",[9,14,18,23,28,31,43,60,71,75,93,96,122,126,129,174,189,192,196,199,223,243,247,325,329,380,384,387,401,407],[10,11,13],"h1",{"id":12},"creare-un-token-di-accesso-allapi-di-bexio","Creare un token di accesso all’API di bexio",[15,16,17],"p",{},"Chi cerca una «chiave API di bexio» non trova nessun pulsante in bexio. Oggi all’API di bexio\nsi accede in due modi: con un token di accesso personale per i tuoi script, oppure con un’app\nnel Developer Portal che si collega tramite OAuth 2. Questa guida mostra entrambi i modi, la\nprima chiamata con il token e gli errori che più spesso bloccano all’inizio.",[19,20],"produkt-ablauf",{":schritte":21,"titel":22},"[{\"ort\":\"developer.bexio.com\",\"text\":\"Creare un token personale o un’app\"},{\"ort\":\"Il tuo script\",\"text\":\"Token nell’intestazione «Authorization: Bearer»\",\"eigen\":true},{\"ort\":\"api.bexio.com\",\"text\":\"Contatti, fatture, articoli in JSON\"}]","Flusso: nel Developer Portal nasce un token, il tuo script lo invia nell’intestazione, api.bexio.com restituisce i dati",[24,25,27],"h2",{"id":26},"esiste-una-chiave-api-di-bexio","Esiste una chiave API di bexio?",[15,29,30],{},"No, non più. In passato la documentazione descriveva degli «API Tokens» fissi per le\nconnessioni da server a server. Nell’ottobre 2024 bexio ha sostituito quella sezione con i\ntoken di accesso personali, in inglese «Personal Access Tokens», in breve PAT. Le vecchie\nguide che promettono una chiave permanente dalle impostazioni sono quindi superate.",[15,32,33,34,38,39,42],{},"Oggi ogni richiesta a ",[35,36,37],"code",{},"https:\u002F\u002Fapi.bexio.com"," ha bisogno di un token di accesso\nnell’intestazione ",[35,40,41],{},"Authorization: Bearer …",". Da dove arriva il token dipende da chi usa la\nconnessione:",[44,45,46,54],"ul",{},[47,48,49,53],"li",{},[50,51,52],"strong",{},"Solo tu",", per esempio per uno script, un’esportazione o un test: token di accesso\npersonale (modo 1).",[47,55,56,59],{},[50,57,58],{},"Un’applicazione per altri",", per esempio un plugin su un sito o un servizio per più\naziende: app nel Developer Portal con OAuth 2 (modo 2).",[15,61,62,63,70],{},"Il riferimento di tutti gli endpoint si trova su ",[64,65,69],"a",{"href":66,"rel":67},"https:\u002F\u002Fdocs.bexio.com\u002F",[68],"nofollow","docs.bexio.com",".\nPer provare senza una contabilità vera, bexio offre un conto di prova da aprire su bexio.com.",[24,72,74],{"id":73},"modo-1-creare-un-personal-access-token","Modo 1: creare un Personal Access Token",[76,77,78,87,90],"ol",{},[47,79,80,81,86],{},"Apri ",[64,82,85],{"href":83,"rel":84},"https:\u002F\u002Fdeveloper.bexio.com\u002Fpat",[68],"developer.bexio.com\u002Fpat"," e accedi con il tuo conto\nbexio.",[47,88,89],{},"Crea un nuovo token e salvalo subito in un posto sicuro, per esempio in un gestore di\npassword o in un file che solo tu puoi leggere.",[47,91,92],{},"Invia il token dallo script come bearer token.",[15,94,95],{},"Secondo la documentazione un PAT funziona così:",[44,97,98,104,110,116],{},[47,99,100,103],{},[50,101,102],{},"Accesso completo:"," un PAT ha tutti i diritti predefiniti e quindi accesso a tutti i dati\ndell’azienda. Chi lo conosce può leggere le fatture e modificare i contatti.",[47,105,106,109],{},[50,107,108],{},"Valido 60 giorni:"," poi scade e lo script ne ha bisogno di uno nuovo.",[47,111,112,115],{},[50,113,114],{},"Revoca tramite eliminazione:"," un token eliminato non si può più usare. Possono passare\nfino a un’ora prima che la revoca valga ovunque.",[47,117,118,121],{},[50,119,120],{},"Solo per uso personale:"," se vuoi limitare i diritti, per esempio alla sola lettura dei\ncontatti, usa un’app.",[24,123,125],{"id":124},"testare-il-token","Testare il token",[15,127,128],{},"Il test più semplice è un elenco dei contatti:",[130,131,136],"pre",{"className":132,"code":133,"language":134,"meta":135,"style":135},"language-bash shiki shiki-themes github-light github-dark","curl https:\u002F\u002Fapi.bexio.com\u002F2.0\u002Fcontact \\\n  -H 'Accept: application\u002Fjson' \\\n  -H 'Authorization: Bearer \u003Ctoken>'\n","bash","",[35,137,138,155,166],{"__ignoreMap":135},[139,140,143,147,151],"span",{"class":141,"line":142},"line",1,[139,144,146],{"class":145},"sScJk","curl",[139,148,150],{"class":149},"sZZnC"," https:\u002F\u002Fapi.bexio.com\u002F2.0\u002Fcontact",[139,152,154],{"class":153},"sj4cs"," \\\n",[139,156,158,161,164],{"class":141,"line":157},2,[139,159,160],{"class":153},"  -H",[139,162,163],{"class":149}," 'Accept: application\u002Fjson'",[139,165,154],{"class":153},[139,167,169,171],{"class":141,"line":168},3,[139,170,160],{"class":153},[139,172,173],{"class":149}," 'Authorization: Bearer \u003Ctoken>'\n",[15,175,176,177,180,181,184,185,188],{},"Se torna un elenco JSON, l’accesso funziona. L’API segnala gli errori con un codice di stato\nHTTP e un breve testo JSON con ",[35,178,179],{},"error_code"," e ",[35,182,183],{},"message",". Una chiamata a ",[35,186,187],{},"\u002F3.0\u002Fusers\u002Fme"," mostra\ninoltre con quale utente lavora il token. È importante, perché l’API non ha mai più diritti di\nquesto utente in bexio.",[15,190,191],{},"Il token non va mai in un repository Git pubblico, in JavaScript nel browser o in un’e-mail.\nSe è stato comunque esposto: eliminalo nel Developer Portal e creane uno nuovo.",[24,193,195],{"id":194},"modo-2-app-nel-developer-portal-con-oauth-2","Modo 2: app nel Developer Portal con OAuth 2",[15,197,198],{},"Per tutto ciò che collegano altre persone o aziende, un PAT è la strada sbagliata. Serve\nallora un’app propria:",[76,200,201,210,213,216],{},[47,202,203,204,209],{},"Accedi al ",[64,205,208],{"href":206,"rel":207},"https:\u002F\u002Fdeveloper.bexio.com\u002F",[68],"Developer Portal"," e accetta le condizioni d’uso.\nbexio rimanda in particolare al punto 4.4 sull’uso commerciale.",[47,211,212],{},"Crea un’app e inserisci gli URL di reindirizzamento consentiti, cioè gli indirizzi a cui\nbexio rimanda dopo l’accesso.",[47,214,215],{},"Leggi client ID e client secret sotto «App Details». Il secret resta sul server.",[47,217,218,219,222],{},"Fai accedere l’utente tramite l’«Authorization Code Flow» su ",[35,220,221],{},"auth.bexio.com",". Lì vede\nquali diritti chiede l’app e li conferma.",[15,224,225,226,229,230,233,234,237,238,242],{},"Questi diritti si chiamano scope, per esempio ",[35,227,228],{},"contact_show"," per leggere i contatti o\n",[35,231,232],{},"kb_invoice_edit"," per modificare le fatture. Un diritto di scrittura include quello di\nlettura. Con lo scope ",[35,235,236],{},"offline_access"," l’app riceve anche un refresh token, con cui ottiene\nnuovi token di accesso senza che l’utente debba accedere di nuovo. La guida\n",[64,239,241],{"href":240},"\u002Fit\u002Fratgeber\u002Fbexio-api-wordpress\u002F","Collegare l’API di bexio a WordPress"," mostra come appare\nin WordPress.",[24,244,246],{"id":245},"quale-modo-scegliere","Quale modo scegliere?",[248,249,250,266],"table",{},[251,252,253],"thead",{},[254,255,256,260,263],"tr",{},[257,258,259],"th",{},"Domanda",[257,261,262],{},"Personal Access Token",[257,264,265],{},"App con OAuth 2",[267,268,269,281,292,303,314],"tbody",{},[254,270,271,275,278],{},[272,273,274],"td",{},"Chi usa la connessione?",[272,276,277],{},"tu stesso",[272,279,280],{},"altri utenti o aziende",[254,282,283,286,289],{},[272,284,285],{},"Diritti",[272,287,288],{},"tutti i dati dell’azienda",[272,290,291],{},"solo gli scope richiesti",[254,293,294,297,300],{},[272,295,296],{},"Validità",[272,298,299],{},"60 giorni",[272,301,302],{},"finché il refresh token viene rinnovato regolarmente",[254,304,305,308,311],{},[272,306,307],{},"Impegno",[272,309,310],{},"pochi minuti",[272,312,313],{},"accesso, memorizzazione del token, rinnovo",[254,315,316,319,322],{},[272,317,318],{},"Uso tipico",[272,320,321],{},"esportazione, test, script proprio",[272,323,324],{},"plugin, integrazione, servizio",[24,326,328],{"id":327},"errori-frequenti","Errori frequenti",[44,330,331,337,343,349,355,368,374],{},[47,332,333,336],{},[50,334,335],{},"Token scaduto:"," uno script che girava da due mesi si ferma all’improvviso. Di solito il\nPAT è scaduto dopo 60 giorni.",[47,338,339,342],{},[50,340,341],{},"Diritti dell’utente mancanti:"," l’API lavora con i diritti dell’utente che ha creato il\ntoken o collegato l’app. Se in bexio non ha accesso ai contatti, nemmeno lo scope giusto\naiuta.",[47,344,345,348],{},[50,346,347],{},"Nuovi scope al rinnovo:"," rinnovando un token i diritti restano gli stessi. Se l’app ha\nbisogno di più, l’utente deve accedere di nuovo.",[47,350,351,354],{},[50,352,353],{},"URL di reindirizzamento diverso:"," se l’indirizzo non è inserito esattamente così\nnell’app, l’accesso si interrompe con un messaggio di errore.",[47,356,357,360,361,180,364,367],{},[50,358,359],{},"Troppe richieste:"," l’API limita le richieste al minuto per azienda. Raggiunto il limite,\nrestituisce lo stato 429; le intestazioni ",[35,362,363],{},"RateLimit-Remaining",[35,365,366],{},"RateLimit-Reset"," dicono\nquanto aspettare.",[47,369,370,373],{},[50,371,372],{},"Nessun file OpenAPI:"," secondo la sua documentazione, bexio non fornisce una descrizione\nOpenAPI. Un client quindi non si genera automaticamente, ma si scrive in base al\nriferimento.",[47,375,376,379],{},[50,377,378],{},"Guasto anziché errore:"," se l’API non risponde affatto, conviene guardare la pagina di\nstato bexio-status.com prima di cercare nel proprio codice.",[24,381,383],{"id":382},"soluzioni-pronte","Soluzioni pronte",[15,385,386],{},"Se non vuoi gestire un token da solo, per i casi più frequenti esiste un collegamento pronto:",[44,388,389,396],{},[47,390,391,395],{},[64,392,394],{"href":393},"\u002Fit\u002Fbexio-formular-connector\u002F","Connettore moduli bexio",": plugin WordPress, le richieste dal\nmodulo del sito diventano contatti con nota in bexio. Il collegamento avviene con un clic su\n«Connetti a bexio», senza un’app propria e senza un token da rinnovare ogni 60 giorni.",[47,397,398,400],{},[64,399,241],{"href":240},": la strada con la\ntua app, passo per passo, se costruisci da solo.",[15,402,403],{},[64,404,406],{"href":405},"\u002Fit\u002Fratgeber\u002F","Tutte le guide",[408,409,410],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":135,"searchDepth":157,"depth":157,"links":412},[413,414,415,416,417,418,419],{"id":26,"depth":157,"text":27},{"id":73,"depth":157,"text":74},{"id":124,"depth":157,"text":125},{"id":194,"depth":157,"text":195},{"id":245,"depth":157,"text":246},{"id":327,"depth":157,"text":328},{"id":382,"depth":157,"text":383},"Token di accesso all’API di bexio: niente più chiave API, Personal Access Token nel Developer Portal, prima chiamata con curl, quando serve OAuth 2.","md",{},true,"\u002Fratgeber\u002Fbexio-api-token",null,{"title":5,"description":420},"ratgeber\u002Fbexio-api-token","EImfqgbr8FQOafKmgCTrvZxuFqNzI4TeizKlgrHR-Zs",1792037000850]