Skip to main content
POST
Create Access Request

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Body

application/json
app_id
string
required

The UUID of the app to request access to.

requester_user_id
string | null

Override the user who made the request. If omitted, use the current user. Only organization admins may send this field; any other caller is refused with a 403.

target_user_id
string | null

User to request access for. If omitted, request for the current user.

note
string | null

[Deprecated - use business_justification] Why the user needs access.

business_justification
string | null

Why the user needs access.

expiration_in_seconds
integer | null

Once granted, how long the access should last, in seconds. The value must equal one of the app's time-based access options (when requesting entitlements, one that all of them offer) and be at least 30 minutes; anything else is rejected with 400. Omit it for permanent access, which works only if the app offers Unlimited. access_length names the same options by label and is the easier field to use; sending both returns 400.

access_length
string | null

Once granted, how long the access should last. Omitting it means permanent access, which works only if the app offers Unlimited. All possible values are '2 hours', '4 hours', '8 hours', '12 hours', '1 day', '2 days', '3 days', '7 days', '14 days', '30 days', '90 days', 'Unlimited', but the exact options depend on the settings of the app and entitlements. expiration_in_seconds names the same options in seconds; sending both returns 400.

entitlement_ids
string[] | null

Entitlement UUIDs to request, as /v1/entitlements returns them. Each must be requestable on app_id. Omit this to just request access to the app.

custom_fields
Custom Fields · object | null

Answers to the app's custom intake fields, keyed by reference_key. GET /v1/apps/{app_id}/appstore-settings lists the fields with their keys, required flags and dropdown options. Every required field needs a non-blank answer, and a dropdown answer must match one of its options exactly. Problems return 400 access_request.custom_fields_invalid with one entry per field in errors.

Response

Successful Response

access_requests
AccessRequest · object[]
required

The access requests created. One submission fans out into one request per app, so this is a list even when a single app was requested.