Platform API error
consent_scope
consent_scope is a 403 error returned when a call with subject asks for access the person did not grant. Use the granted scopes or omit subject.
Updated November 6, 2026
- HTTP status
- 403
- Code
consent_scope
Returned when
- A call with subject needs a world or scope the person did not grant; details shows what was needed and what was granted.
What to do
- Ask only for what the person granted, or omit subject.
Example answer
HTTP/1.1 403
content-type: application/json
{
"error": {
"code": "consent_scope",
"message": "That person consented to different access than this call needs."
}
}
Related errors
- consent_required The client has no permission to act as that person.
What it means
The Platform API returns consent_scope with HTTP 403 when a call includes subject and needs a world or scope the person did not grant. The person consented to different access than the call needs, so the request is refused rather than partially served.
Errors use the shape {"error":{"code":"…","message":"…","hint":"…"}}. The message reads "That person consented to different access than this call needs." The details field shows what the call needed and what was granted, so read both lists before you change the request. Codes are stable, so match on code and never on the message.
Why you are seeing it
You sent subject with a request for a world or scope outside the person's grant. The check compares the access the call needs against the access the person gave and returns consent_scope when the two sets do not line up.
This is not a transient failure. Sending the same payload, headers, and subject again produces the same 403. The details field is the useful part of the response because it separates what was needed from what was granted, which shows how far apart the two sets are.
consent_required is listed as a related code. If your integration handles both, branch on the code string rather than on message text or on the HTTP status alone.
How to fix it
Two fixes work. Ask only for what the person granted by changing the world or scope in the request to something that appears in the granted list. Or omit subject and make the call without it.
Start with details. If the needed list contains scopes that the granted list does not, narrow the call until the needed set fits inside the granted set. If the call cannot do its work with the smaller set, that is a consent mismatch for the person to resolve, not something a different header or a retry will clear.
Do not loop on retries. After you change the request, send it once and check the result. A corrected call either succeeds or returns a different code that tells you what else to address.
Handling it in code
Check error.code === "consent_scope" before reading anything else. Log the code, the hint, and the details together, because the hint carries the short explanation and details carries the two lists. Do not parse the message.
Treat this as a caller-side correction. Report the needed and granted lists to whoever owns the request instead of surfacing a generic failure. If your code path can run without subject, fall back to the no-subject call; otherwise fail the operation and name the scope that was missing.
Any retry policy you apply should exclude this code. Retrying identical input is wasted work, and the response will not change until the request or the subject does.
Questions
What does the consent_scope error mean?
The person consented to different access than the call needs. The API returns HTTP 403 with details showing what was needed and what was granted.
How do I fix a consent_scope error?
Ask only for what the person granted, or omit subject. Check details for the needed and granted lists, then adjust the request instead of retrying it unchanged.
Should I match on the error message for consent_scope?
No. Codes are stable and messages are not, so match on error.code equal to consent_scope. Use the hint and details fields for the human-readable context.
Keys, plans and usage live in the console: rotate keys, add webhook endpoints, see the last 30 days.
Written from the OneLifeVibe tool registry and platform configuration, and checked automatically before publishing. Something wrong? Tell us.