{"componentChunkName":"component---src-templates-developers-js","path":"/en/developers/api-registration/","result":{"data":{"childPages":{"edges":[{"node":{"fields":{"slug":"/en/developers/"},"frontmatter":{"title":"For developers","order":null,"redirect":null}}},{"node":{"fields":{"slug":"/en/developers/architecture/"},"frontmatter":{"title":"System architecture","order":null,"redirect":null}}},{"node":{"fields":{"slug":"/en/developers/api-registration/"},"frontmatter":{"title":"API portal and registration","order":-12,"redirect":null}}},{"node":{"fields":{"slug":"/en/developers/changes/"},"frontmatter":{"title":"Changes","order":-10,"redirect":null}}},{"node":{"fields":{"slug":"/en/developers/user-interfaces/"},"frontmatter":{"title":"User interfaces","order":null,"redirect":null}}},{"node":{"fields":{"slug":"/en/developers/deprecations/"},"frontmatter":{"title":"Deprecations","order":-11,"redirect":null}}},{"node":{"fields":{"slug":"/en/developers/docker-guide/"},"frontmatter":{"title":"Docker guide","order":null,"redirect":null}}},{"node":{"fields":{"slug":"/en/developers/apis/"},"frontmatter":{"title":"APIs","order":null,"redirect":null}}},{"node":{"fields":{"slug":"/en/developers/apis/1-routing-api/"},"frontmatter":{"title":"Routing API","order":null,"redirect":null}}},{"node":{"fields":{"slug":"/en/developers/apis/2-routing-data-api/"},"frontmatter":{"title":"Routing data API","order":null,"redirect":null}}},{"node":{"fields":{"slug":"/en/developers/apis/4-map-api/"},"frontmatter":{"title":"Map API","order":null,"redirect":null}}},{"node":{"fields":{"slug":"/en/developers/architecture/x-apis/"},"frontmatter":{"title":"API architecture","order":null,"redirect":null}}},{"node":{"fields":{"slug":"/en/developers/apis/6-api-faq/"},"frontmatter":{"title":"FAQ","order":null,"redirect":null}}},{"node":{"fields":{"slug":"/en/developers/apis/5-realtime-api/"},"frontmatter":{"title":"Realtime APIs","order":null,"redirect":null}}},{"node":{"fields":{"slug":"/en/developers/apis/3-geocoding-api/"},"frontmatter":{"title":"Geocoding API","order":null,"redirect":null}}},{"node":{"fields":{"slug":"/en/developers/apis/7-terms-of-use/"},"frontmatter":{"title":"Terms of use","order":null,"redirect":null}}},{"node":{"fields":{"slug":"/en/developers/user-interfaces/1-digitransit-ui/"},"frontmatter":{"title":"Digitransit-ui","order":null,"redirect":null}}},{"node":{"fields":{"slug":"/en/developers/apis/1-routing-api/0-graphql/"},"frontmatter":{"title":"GraphQL","order":10,"redirect":null}}},{"node":{"fields":{"slug":"/en/developers/apis/1-routing-api/3-realtime-information/"},"frontmatter":{"title":"Real-time information","order":40,"redirect":null}}},{"node":{"fields":{"slug":"/en/developers/apis/1-routing-api/2-glossary/"},"frontmatter":{"title":"Glossary","order":30,"redirect":null}}},{"node":{"fields":{"slug":"/en/developers/apis/1-routing-api/canceled-trips/"},"frontmatter":{"title":"Canceled trips","order":80,"redirect":null}}},{"node":{"fields":{"slug":"/en/developers/apis/1-routing-api/disruption-info/"},"frontmatter":{"title":"Disruption info","order":70,"redirect":null}}},{"node":{"fields":{"slug":"/en/developers/apis/1-routing-api/4-translations/"},"frontmatter":{"title":"Translation","order":50,"redirect":null}}},{"node":{"fields":{"slug":"/en/developers/apis/1-routing-api/routes/"},"frontmatter":{"title":"Routes","order":100,"redirect":null}}},{"node":{"fields":{"slug":"/en/developers/apis/1-routing-api/stops/"},"frontmatter":{"title":"Stops","order":110,"redirect":null}}},{"node":{"fields":{"slug":"/en/developers/apis/1-routing-api/bicycles-scooters-cars/"},"frontmatter":{"title":"Bicycles, cars and e-scooters","order":60,"redirect":null}}},{"node":{"fields":{"slug":"/en/developers/apis/1-routing-api/itinerary-planning/"},"frontmatter":{"title":"Itinerary planning","order":90,"redirect":null}}},{"node":{"fields":{"slug":"/en/developers/architecture/x-apis/1-routing-api/"},"frontmatter":{"title":"Routing API","order":null,"redirect":null}}},{"node":{"fields":{"slug":"/en/developers/architecture/x-apis/2-routing-data-api/"},"frontmatter":{"title":"Routing Data","order":null,"redirect":null}}},{"node":{"fields":{"slug":"/en/developers/architecture/x-apis/4-map-api/"},"frontmatter":{"title":"Map API","order":null,"redirect":null}}},{"node":{"fields":{"slug":"/en/developers/architecture/x-apis/5-realtime-api/"},"frontmatter":{"title":"Real-time APIs","order":null,"redirect":null}}},{"node":{"fields":{"slug":"/en/developers/architecture/x-apis/3-geocoding-api/"},"frontmatter":{"title":"Geocoding API","order":null,"redirect":null}}},{"node":{"fields":{"slug":"/en/developers/apis/1-routing-api/1-graphiql/"},"frontmatter":{"title":"GraphiQL","order":20,"redirect":null}}},{"node":{"fields":{"slug":"/en/developers/apis/4-map-api/background-map/"},"frontmatter":{"title":"Background map","order":null,"redirect":null}}},{"node":{"fields":{"slug":"/en/developers/apis/5-realtime-api/1-getting-started/"},"frontmatter":{"title":"Getting started","order":10,"redirect":null}}},{"node":{"fields":{"slug":"/en/developers/apis/3-geocoding-api/address-search/"},"frontmatter":{"title":"Address search","order":null,"redirect":null}}},{"node":{"fields":{"slug":"/en/developers/apis/3-geocoding-api/autocomplete/"},"frontmatter":{"title":"Autocomplete","order":null,"redirect":null}}},{"node":{"fields":{"slug":"/en/developers/apis/5-realtime-api/trip-updates/"},"frontmatter":{"title":"Trip updates","order":30,"redirect":null}}},{"node":{"fields":{"slug":"/en/developers/apis/5-realtime-api/service-alerts/"},"frontmatter":{"title":"Service alerts","order":20,"redirect":null}}},{"node":{"fields":{"slug":"/en/developers/apis/3-geocoding-api/address-lookup/"},"frontmatter":{"title":"Address lookup","order":null,"redirect":null}}},{"node":{"fields":{"slug":"/en/developers/apis/4-map-api/pois/"},"frontmatter":{"title":"Points of interest","order":null,"redirect":null}}},{"node":{"fields":{"slug":"/en/developers/apis/5-realtime-api/vehicle-positions/"},"frontmatter":{"title":"Vehicle positions","order":40,"redirect":null}}},{"node":{"fields":{"slug":"/en/developers/architecture/x-apis/3-geocoding-api/data-container/"},"frontmatter":{"title":"Data builder and container","order":null,"redirect":null}}},{"node":{"fields":{"slug":"/en/developers/architecture/x-apis/3-geocoding-api/api/"},"frontmatter":{"title":"API","order":null,"redirect":null}}},{"node":{"fields":{"slug":"/en/developers/apis/5-realtime-api/vehicle-positions/high-frequency-positioning/"},"frontmatter":{"title":"High-frequency positioning","order":20,"redirect":null}}},{"node":{"fields":{"slug":"/en/developers/apis/5-realtime-api/vehicle-positions/digitransit-mqtt/"},"frontmatter":{"title":"Digitransit MQTT broker","order":10,"redirect":null}}}]},"markdownRemark":{"fields":{"slug":"/en/developers/api-registration/"},"frontmatter":{"title":"API portal and registration","redirect":null,"toc":null,"description":null,"assets":null,"technologies":null,"docker":null},"html":"<h2 id=\"digitransit-api-portal\" style=\"position:relative;\"><a href=\"#digitransit-api-portal\" aria-label=\"digitransit api portal permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Digitransit API portal</h2>\n<p>The use of the Digitransit production APIs (<a href=\"https://api.digitransit.fi\">api.digitransit.fi</a>, <a href=\"https://cdn.digitransit.fi\">cdn.digitransit.fi</a> and <a href=\"https://digitransit-prod-cdn-origin.azureedge.net\">digitransit-prod-cdn-origin.azureedge.net</a>) requires registration and use of API keys. Registration can be done at the <a href=\"https://portal-api.digitransit.fi/\">Digitransit API portal</a>. After the registration, it is possible to create subscriptions to a product. API keys related to the subscriptions will be available at the API portal.</p>\n<h2 id=\"acquiring-api-keys\" style=\"position:relative;\"><a href=\"#acquiring-api-keys\" aria-label=\"acquiring api keys permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Acquiring API keys</h2>\n<p>API keys are acquired from <a href=\"https://portal-api.digitransit.fi\">the API portal</a>. You need to be logged in to manage your API keys, so either sign in or sign up from the top right corner. <strong>NOTE</strong>: If you're signing up, the email that you enter will be used in initial authentication, so make sure to select an email that you have access to. After this you will be prompted to select a two-factor authentication method, which will either be a code sent to your email or using a verification app. Two-factor authentication will be used on future logins, so make sure you follow the instructions given when selecting your preferred authentication method.</p>\n<p>After logging in, APIs that are available for you to subscribe to are visible under the \"Products\" tab.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 1250px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/ee2f81b1cee521624e6b185961188971/8963a/instructions-products.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 25.23961661341853%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAFCAIAAADKYVtkAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAy0lEQVQY042NPw/BQBxAuyiJwUBTEhuTzQc1ao0Sn0SEue3VWuLPoHd1etdrz5+7n9BEDAYvb315Rncw7Q9nZsupNJ2qNTEtt9J0fmpabt12ep1Roz2u2pOa7RrBmqA18QLsBXi+jBarrR8mHiI/DIkfEoSwj7CHiI+wAd88ClASQMN/GLoEQIlcEFqkmRK5EvkjE2mMxZkWl1Sm7CXjV5woKTVAGb3P75MW4pbQK2WKcc25Yvy825+iKN5s6P5wOR6zGN9PsS7k5/wEAF7wEHVhqJAAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"An image displaying the navigation to the products tab from the top right of the screen and the page contents\"\n        title=\"Products page contents\"\n        src=\"/static/ee2f81b1cee521624e6b185961188971/f09ab/instructions-products.png\"\n        srcset=\"/static/ee2f81b1cee521624e6b185961188971/80977/instructions-products.png 313w,\n/static/ee2f81b1cee521624e6b185961188971/80d71/instructions-products.png 625w,\n/static/ee2f81b1cee521624e6b185961188971/f09ab/instructions-products.png 1250w,\n/static/ee2f81b1cee521624e6b185961188971/85bc8/instructions-products.png 1875w,\n/static/ee2f81b1cee521624e6b185961188971/8963a/instructions-products.png 1918w\"\n        sizes=\"(max-width: 1250px) 100vw, 1250px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n  </a>\n    </span></p>\n<p>After clicking an API product, you will be able to subscribe to it. When clicking the subscribe button, you will be prompted to answer a brief questionnaire.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 1153px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/5aff68c1edc446d3e4635b1c4496e1a9/afd0b/instructions-subscribe.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 42.811501597444085%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAIAAAC9o5sfAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAA7ElEQVQoz42Ru07EMBRE83cUfB+fQImEBL9ARRWKkIcWtCKbKMquvY7t+HEfoDgNEizkaIpbzEijuZlzLsTovXfe+xCY+XMbzJzl+UtZlkVR1E2z271JKa21xhit9ZRQSrnEWalp0tZaZgaAeZ6zYRj6vhdCOOestVprlTDGICIAxBiJCJHiAiAiMxMRAGSIuF4+kRwxhAAA/zbPQoh+m/WXcNd1bduO47hM9VN/h9eRnffbd/5WezzG8RgWnegkSGo65K56CPUjfryuT7kYPleNruqpqk3zjvs9HgQ838i7q+n+Oj7dJg9dCn8BkYIKAyNnScwAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"An image displaying the page where you can click the subscription button\"\n        title=\"Subscribing to an API product\"\n        src=\"/static/5aff68c1edc446d3e4635b1c4496e1a9/afd0b/instructions-subscribe.png\"\n        srcset=\"/static/5aff68c1edc446d3e4635b1c4496e1a9/80977/instructions-subscribe.png 313w,\n/static/5aff68c1edc446d3e4635b1c4496e1a9/80d71/instructions-subscribe.png 625w,\n/static/5aff68c1edc446d3e4635b1c4496e1a9/afd0b/instructions-subscribe.png 1153w\"\n        sizes=\"(max-width: 1153px) 100vw, 1153px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n  </a>\n    </span></p>\n<p>After subscription, you can find the key under the \"Profile\" tab. Click \"Show\" to reveal the key. A subscription also contains a secondary key so that it's possible to regenerate a key while the primary key is in use or vice versa. There is an option to regenerate a key next to the \"Show\" button.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 1250px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/7a152b6c8acad964e80d2db004e354bd/3a188/instructions-profile.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 49.84025559105431%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAIAAAA7N+mxAAAACXBIWXMAAA7DAAAOwwHHb6hkAAABM0lEQVQoz42RwU7CQBCG1ysaiEdfUD2RPgF3b0bwFQwJVAXexZBINQELLW3ZLtDu7nR3xqxowgGVyZfM7CT/zD9Zxmp3jtO2Y1cf5KzN6p2TRpvV72uN24vzG1bvsP5g0vXHD72Xrj/e1V1/3Ht+7Q8m+/iDiT8MHkeBPwyeRsFg5J6MiAAKkcdSbsgF0tHBEIlzsVympZSLRXR5dd1sekmSEpEx1lr8A7d5WxSccyIKw9DzvFarlSSJ84D/uHBiDZBxrkDrqtp1jbXHuHfiPMumQVCKNSFapaxSBIAVUAUAYIyxaAGg+hm9J0YU01m54joXi7d3EcVyxe16vYl5EWWa820plVJagwZzYHMRxWWaVUKsPkIezkUU2TzfzlM+S0lK/P149p0RyewNtvbrz/45/BMTFgfvohqGYAAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"An image displaying the page contents of the Profile page, and the area where you can find the API key\"\n        title=\"Profile page contents and API key location\"\n        src=\"/static/7a152b6c8acad964e80d2db004e354bd/f09ab/instructions-profile.png\"\n        srcset=\"/static/7a152b6c8acad964e80d2db004e354bd/80977/instructions-profile.png 313w,\n/static/7a152b6c8acad964e80d2db004e354bd/80d71/instructions-profile.png 625w,\n/static/7a152b6c8acad964e80d2db004e354bd/f09ab/instructions-profile.png 1250w,\n/static/7a152b6c8acad964e80d2db004e354bd/3a188/instructions-profile.png 1623w\"\n        sizes=\"(max-width: 1250px) 100vw, 1250px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n  </a>\n    </span></p>\n<h2 id=\"use-of-api-keys\" style=\"position:relative;\"><a href=\"#use-of-api-keys\" aria-label=\"use of api keys permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Use of API keys</h2>\n<p>An API key can be included either as a URL parameter or as a header. The parameter and the header name are both <code class=\"language-text\">digitransit-subscription-key</code> and the value should be the key. The API keys should not be attached to requests going to <a href=\"../deprecations\">the deprecated APIs</a>.</p>\n<h2 id=\"deprecations\" style=\"position:relative;\"><a href=\"#deprecations\" aria-label=\"deprecations permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Deprecations</h2>\n<p>We have deprecated and removed some old API endpoints that are no longer needed. The list of these deprecations can be found <a href=\"../deprecations\">here</a>. We will update that page and inform users via email in the future when there are any new deprecations or removals.</p>\n<h2 id=\"quota-and-rate-limiting\" style=\"position:relative;\"><a href=\"#quota-and-rate-limiting\" aria-label=\"quota and rate limiting permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Quota and rate limiting</h2>\n<p>Starting 31.1.2024, we have enforced rate and quota limiting. The limits should only restrict misuse of the APIs, not normal use. If you encounter any issues (for example, if you receive responses with code 403), please contact us at digitransit-api@hsl.fi</p>\n<p>Please note that when running large computation tasks containing thousands of consecutive requests, we recommend applying a small delay (0.5 - 1 s) between the requests. This helps to avoid sudden traffic peaks in Digitransit services and hitting the rate limits.</p>","tableOfContents":"<ul>\n<li><a href=\"/en/developers/api-registration/#digitransit-api-portal\">Digitransit API portal</a></li>\n<li><a href=\"/en/developers/api-registration/#acquiring-api-keys\">Acquiring API keys</a></li>\n<li><a href=\"/en/developers/api-registration/#use-of-api-keys\">Use of API keys</a></li>\n<li><a href=\"/en/developers/api-registration/#deprecations\">Deprecations</a></li>\n<li><a href=\"/en/developers/api-registration/#quota-and-rate-limiting\">Quota and rate limiting</a></li>\n</ul>","excerpt":"Digitransit API portal The use of the Digitransit production APIs (api.digitransit.fi, cdn.digitransit.fi and digitransit-prod-cdn-origin.azureedge.net) requires registration and use of API keys…"}},"pageContext":{"slug":"/en/developers/api-registration/"}},"staticQueryHashes":["3675773199","4050193485"]}