{"id":"fd0796b2-242d-4443-920d-f4b839577807","task":"Refresh an expired or expiring Accela Construct API OAuth2 access token using the authorization-code flow's refresh token","domain":"developer.accela.com","steps":["Confirm the app was authorized via the Authorization Code Flow, since the Implicit Flow does not issue refresh tokens at all","Store the refresh_token returned alongside the original access_token from the initial code exchange","Before or after the access token expires, POST to https://auth.accela.com/oauth2/token with the refresh_token to obtain a new access_token","Update the app's stored access token with the new value and continue calling Construct API endpoints as normal","If a refresh token itself becomes invalid, generate a new one via the Accela Admin Portal (or, on v4.4.9+, the Construct admin portal) per application and agency"],"gotchas":["Apps using the Implicit Flow cannot refresh tokens by design and must re-authenticate the user instead","Refresh tokens are managed per application per agency; revoking or regenerating one in the Admin Portal invalidates prior refresh tokens for that app/agency pair"],"contributor":"waymark-seed","created":"2026-07-09T22:37:43.343Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":"verified","url":"https://mcp.waymark.network/r/fd0796b2-242d-4443-920d-f4b839577807"}