{"id":19,"date":"2026-11-05T21:57:40","date_gmt":"2026-11-05T21:57:40","guid":{"rendered":"https:\/\/charge-it.io\/?page_id=19"},"modified":"2026-11-05T21:57:40","modified_gmt":"2026-11-05T21:57:40","slug":"developers","status":"publish","type":"page","link":"https:\/\/charge-it.io\/?page_id=19","title":{"rendered":"Developers"},"content":{"rendered":"\n<section class=\"phero dark glow\" aria-labelledby=\"t\">\n  <div class=\"wrap\">\n    <ul class=\"crumbs\"><li><a href=\"https:\/\/charge-it.io\/\">Home<\/a><\/li><li>Developers<\/li><\/ul>\n    <div class=\"phero-grid\">\n      <div>\n        <p class=\"eyebrow\"><span class=\"dot pulse\"><\/span>Developers<\/p>\n        <h1 class=\"h1\" id=\"t\">Build on the platform <em>your console runs on.<\/em><\/h1>\n        <p class=\"lead\">One API for your backend and your own driver app, with access set per organisation and nothing granted that you didn&#8217;t enable.<\/p>\n        <div class=\"actions\"><a class=\"btn btn-primary\" href=\"https:\/\/charge-it.io\/?page_id=23\">Request API access <span class=\"arrow\" aria-hidden=\"true\">\u2192<\/span><\/a><\/div>\n      <\/div>\n      <div class=\"term\" aria-label=\"How API access is set up\">\n        <div class=\"term-head\"><span><span class=\"dot pulse\" style=\"margin-inline-end: 8px\"><\/span>Developers panel<\/span><span>per organisation<\/span><\/div>\n        <div style=\"padding: 18px 16px; display: grid; gap: 10px\">\n          <div style=\"display: flex; justify-content: space-between; gap: 12px\"><span class=\"muted\">API access<\/span><span class=\"ok\" style=\"color: var(--d-brand-ink)\">enabled by ChargeIT<\/span><\/div>\n          <div style=\"display: flex; justify-content: space-between; gap: 12px\"><span class=\"muted\">Scopes<\/span><span>locations \u00b7 sessions \u00b7 tariffs \u00b7 invoices<\/span><\/div>\n          <div style=\"display: flex; justify-content: space-between; gap: 12px\"><span class=\"muted\">Write scopes<\/span><span>only if enabled for you<\/span><\/div>\n          <div style=\"display: flex; justify-content: space-between; gap: 12px\"><span class=\"muted\">Rate tier<\/span><span>set per client<\/span><\/div>\n          <div style=\"display: flex; justify-content: space-between; gap: 12px\"><span class=\"muted\">Keys<\/span><span>create \u00b7 revoke<\/span><\/div>\n          <div style=\"display: flex; justify-content: space-between; gap: 12px\"><span class=\"muted\">Mobile apps<\/span><span>bundle IDs \u00b7 redirect URIs \u00b7 client ID<\/span><\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n\n\n<section class=\"sec light\" aria-labelledby=\"cred-t\">\n  <div class=\"wrap\">\n    <div class=\"sec-head\"><div><p class=\"eyebrow\"><span class=\"dot\"><\/span>Two kinds of credentials<\/p><h2 class=\"h2\" id=\"cred-t\">Keys for servers. Tokens for drivers.<\/h2><\/div><p class=\"lead\">An API key never goes inside a mobile app, where anyone could extract it. Your backend uses keys; each driver in your app gets a short-lived token of their own.<\/p><\/div>\n    <div class=\"creds\">\n      <article class=\"card\" style=\"padding: 40px\"><span class=\"k\">API keys \u00b7 server to server<\/span><h3 class=\"h3\" style=\"font-size: 26px\">For your backend and tools<\/h3><p>Locations, charger status, sessions, tariffs and invoices. Each key carries its own scopes and rate tier and can be revoked at any time.<\/p><div class=\"flow\"><b>Your backend<\/b><span class=\"wire\"><\/span><b>ChargeIT API<\/b><\/div><\/article>\n      <article class=\"card\" style=\"padding: 40px\"><span class=\"k\">Driver tokens \u00b7 OAuth 2.0 + PKCE<\/span><h3 class=\"h3\" style=\"font-size: 26px\">For your own driver app<\/h3><p>A ChargeIT-hosted login in your branding. Each token is limited to that one driver: their sessions, their tags, their payments.<\/p><div class=\"flow\"><b>Your app<\/b><span class=\"wire\"><\/span><b>Driver token<\/b><\/div><\/article>\n    <\/div>\n  <\/div>\n<\/section>\n\n\n\n<section class=\"sec band light\" aria-labelledby=\"cap-t\">\n  <div class=\"wrap\">\n    <div class=\"sec-head\"><div><p class=\"eyebrow\"><span class=\"dot\"><\/span>The driver API<\/p><h2 class=\"h2\" id=\"cap-t\">Everything a driver app needs.<\/h2><\/div><p class=\"lead\">Built on the same driver accounts the ChargeIT app uses, so you don&#8217;t build a second user system. Drivers&#8217; personal and payment data stay on ChargeIT&#8217;s side.<\/p><\/div>\n    <div class=\"cap-grid\">\n      <div class=\"cap\"><h3>Find chargers<\/h3><ul><li>Map search<\/li><li>Live availability<\/li><li>Prices<\/li><\/ul><\/div>\n      <div class=\"cap\"><h3>Charge<\/h3><ul><li>Start and stop by QR or connector<\/li><li>Live kWh, power and cost<\/li><\/ul><\/div>\n      <div class=\"cap\"><h3>Account<\/h3><ul><li>Profile<\/li><li>RFID tags<\/li><li>Payment methods<\/li><li>History and receipts<\/li><\/ul><\/div>\n      <div class=\"cap\"><h3>Events<\/h3><ul><li>Session updates by webhook<\/li><li>Or push, sent for you<\/li><\/ul><\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n\n\n<section class=\"sec light\" aria-labelledby=\"pk-t\">\n  <div class=\"wrap\">\n    <div class=\"sec-head\"><div><p class=\"eyebrow\"><span class=\"dot\"><\/span>Driver login<\/p><h2 class=\"h2\" id=\"pk-t\">No backend needed to sign drivers in.<\/h2><\/div><\/div>\n    <figure class=\"pkce dark\" style=\"margin: 0; border-radius: var(--r-frame); padding: 32px; background: var(--ink)\" aria-label=\"Driver login flow\">\n      <div class=\"node\"><b>Your app<\/b><small>Opens the hosted login<\/small><\/div>\n      <span class=\"wire\" aria-hidden=\"true\"><\/span><span class=\"vwire\" aria-hidden=\"true\"><\/span>\n      <div class=\"node core\"><b>Hosted login<\/b><small>In your branding<\/small><\/div>\n      <span class=\"wire\" aria-hidden=\"true\"><\/span><span class=\"vwire\" aria-hidden=\"true\"><\/span>\n      <div class=\"node\"><b>Driver token<\/b><small>Short-lived, one driver<\/small><\/div>\n      <span class=\"wire\" aria-hidden=\"true\"><\/span><span class=\"vwire\" aria-hidden=\"true\"><\/span>\n      <div class=\"node\"><b>ChargeIT API<\/b><small>Called straight from the app<\/small><\/div>\n    <\/figure>\n  <\/div>\n<\/section>\n\n\n\n<section class=\"sec band light\" aria-labelledby=\"who-t\">\n  <div class=\"wrap\">\n    <div class=\"sec-head\"><div><p class=\"eyebrow\"><span class=\"dot\"><\/span>Who gets the panel<\/p><h2 class=\"h2\" id=\"who-t\">Switched on per organisation.<\/h2><\/div><\/div>\n    <div class=\"tbl-box\">\n      <table class=\"tbl panel-tbl\">\n        <thead><tr><th scope=\"col\">Organisation<\/th><th scope=\"col\">Full console<\/th><th scope=\"col\">Developers panel<\/th><th scope=\"col\">Typical use<\/th><\/tr><\/thead>\n        <tbody>\n          <tr><td>Hybrid<\/td><td class=\"yes\">Yes<\/td><td class=\"yes\">Yes<\/td><td>White-label operator with its own driver app<\/td><\/tr>\n          <tr><td>API-only<\/td><td class=\"no\">\u2014<\/td><td class=\"yes\">Yes<\/td><td>A product team building everything itself<\/td><\/tr>\n          <tr><td>Everyone else<\/td><td class=\"yes\">Yes<\/td><td class=\"no\">\u2014<\/td><td>Operators using the console and the ChargeIT app<\/td><\/tr>\n        <\/tbody>\n      <\/table>\n    <\/div>\n  <\/div>\n<\/section>\n\n\n\n<section class=\"cta dark glow\" aria-labelledby=\"cta-t\">\n  <div class=\"wrap\">\n    <h2 class=\"display\" id=\"cta-t\">Tell us what you&#8217;re building.<\/h2>\n    <div class=\"cta-side\"><p>We&#8217;ll enable the scopes you need and set up your organisation.<\/p><a class=\"btn btn-primary\" href=\"https:\/\/charge-it.io\/?page_id=23\">Request API access <span class=\"arrow\" aria-hidden=\"true\">\u2192<\/span><\/a><\/div>\n  <\/div>\n<\/section>\n\n","protected":false},"excerpt":{"rendered":"<p>Home Developers Developers Build on the platform your console runs on. One API for your backend and your own driver app, with access set per organisation and nothing granted that you didn&#8217;t enable. Request API access \u2192 Developers panelper organisation API accessenabled by ChargeIT Scopeslocations \u00b7 sessions \u00b7 tariffs \u00b7 invoices Write scopesonly if enabled [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":8,"comment_status":"closed","ping_status":"closed","template":"","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_chargeit_seo_title":"","_chargeit_seo_desc":"","_chargeit_seo_image":0,"_chargeit_noindex":false,"footnotes":""},"class_list":["post-19","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/charge-it.io\/index.php?rest_route=\/wp\/v2\/pages\/19","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/charge-it.io\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/charge-it.io\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/charge-it.io\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/charge-it.io\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=19"}],"version-history":[{"count":0,"href":"https:\/\/charge-it.io\/index.php?rest_route=\/wp\/v2\/pages\/19\/revisions"}],"wp:attachment":[{"href":"https:\/\/charge-it.io\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=19"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}