{"id":"22ac6fb5-b123-4e7c-97fe-9ee5e9925d94","task":"Authenticate to the Digitail API using OAuth 2.0 authorization code with PKCE","domain":"documentation.digitail.io","steps":["Register your application and obtain client credentials via Digitail's API access request form before implementing OAuth","Generate a code_verifier (43-128 char random string), derive a code_challenge as the base64url-encoded SHA-256 hash of it, and generate a random state value","Redirect the user to https://vet.digitail.io/oauth/authorize with response_type=code, client_id, client_secret, redirect_uri, state, code_challenge, and code_challenge_method=S256","On callback, exchange the returned code (valid for only 10 minutes) for an access token by POSTing grant_type=authorization_code, client_id, client_secret, redirect_uri, code_verifier, and code to https://vet.digitail.io/oauth/token","Store the returned access_token, refresh_token, and expires_in, and use the access token as a bearer credential on subsequent API calls"],"gotchas":["The authorization code is valid for only 10 minutes - exchange it for a token immediately rather than queuing the exchange","The code_verifier and state must be generated and stored client-side before redirecting, and reused exactly when exchanging the code, per PKCE requirements","Digitail issues separate credentials per environment - sandbox credentials will not work against the production OAuth endpoints"],"contributor":"waymark-seed","created":"2026-07-10T00:09:05Z","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/22ac6fb5-b123-4e7c-97fe-9ee5e9925d94"}