Create multiple access requests
Request access to multiple application resources. When authenticating with an API token, user_id is required to specify the grantee.
curl --request POST \
--url https://api.accessowl.com/api/v1/access_requests/bulk \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"request_reason": "Need access to complete Q4 reporting",
"requests": [
{
"permission_ids": [
"7488a646-e31f-11e4-aace-600308960664"
],
"resource_id": "7488a646-e31f-11e4-aace-600308960663"
},
{
"permission_ids": [
"7488a646-e31f-11e4-aace-600308960666"
],
"resource_id": "7488a646-e31f-11e4-aace-600308960665"
}
]
}
'import requests
url = "https://api.accessowl.com/api/v1/access_requests/bulk"
payload = {
"request_reason": "Need access to complete Q4 reporting",
"requests": [
{
"permission_ids": ["7488a646-e31f-11e4-aace-600308960664"],
"resource_id": "7488a646-e31f-11e4-aace-600308960663"
},
{
"permission_ids": ["7488a646-e31f-11e4-aace-600308960666"],
"resource_id": "7488a646-e31f-11e4-aace-600308960665"
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
request_reason: 'Need access to complete Q4 reporting',
requests: [
{
permission_ids: ['7488a646-e31f-11e4-aace-600308960664'],
resource_id: '7488a646-e31f-11e4-aace-600308960663'
},
{
permission_ids: ['7488a646-e31f-11e4-aace-600308960666'],
resource_id: '7488a646-e31f-11e4-aace-600308960665'
}
]
})
};
fetch('https://api.accessowl.com/api/v1/access_requests/bulk', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.accessowl.com/api/v1/access_requests/bulk",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'request_reason' => 'Need access to complete Q4 reporting',
'requests' => [
[
'permission_ids' => [
'7488a646-e31f-11e4-aace-600308960664'
],
'resource_id' => '7488a646-e31f-11e4-aace-600308960663'
],
[
'permission_ids' => [
'7488a646-e31f-11e4-aace-600308960666'
],
'resource_id' => '7488a646-e31f-11e4-aace-600308960665'
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.accessowl.com/api/v1/access_requests/bulk"
payload := strings.NewReader("{\n \"request_reason\": \"Need access to complete Q4 reporting\",\n \"requests\": [\n {\n \"permission_ids\": [\n \"7488a646-e31f-11e4-aace-600308960664\"\n ],\n \"resource_id\": \"7488a646-e31f-11e4-aace-600308960663\"\n },\n {\n \"permission_ids\": [\n \"7488a646-e31f-11e4-aace-600308960666\"\n ],\n \"resource_id\": \"7488a646-e31f-11e4-aace-600308960665\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.accessowl.com/api/v1/access_requests/bulk")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"request_reason\": \"Need access to complete Q4 reporting\",\n \"requests\": [\n {\n \"permission_ids\": [\n \"7488a646-e31f-11e4-aace-600308960664\"\n ],\n \"resource_id\": \"7488a646-e31f-11e4-aace-600308960663\"\n },\n {\n \"permission_ids\": [\n \"7488a646-e31f-11e4-aace-600308960666\"\n ],\n \"resource_id\": \"7488a646-e31f-11e4-aace-600308960665\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.accessowl.com/api/v1/access_requests/bulk")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"request_reason\": \"Need access to complete Q4 reporting\",\n \"requests\": [\n {\n \"permission_ids\": [\n \"7488a646-e31f-11e4-aace-600308960664\"\n ],\n \"resource_id\": \"7488a646-e31f-11e4-aace-600308960663\"\n },\n {\n \"permission_ids\": [\n \"7488a646-e31f-11e4-aace-600308960666\"\n ],\n \"resource_id\": \"7488a646-e31f-11e4-aace-600308960665\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"data": [
{
"application_id": "7488a646-e31f-11e4-aace-600308960662",
"grantee_user_id": "9488a646-e31f-11e4-aace-600308960666",
"id": "8488a646-e31f-11e4-aace-600308960665",
"inserted_at": "2023-01-15T10:30:00Z",
"permission_ids": [
"7488a646-e31f-11e4-aace-600308960664"
],
"provisioning_type": "automatic",
"request_reason": "Need access to complete Q4 reporting",
"requestor_user_id": "9488a646-e31f-11e4-aace-600308960666",
"resource_id": "7488a646-e31f-11e4-aace-600308960663",
"status": "pending_approval"
}
]
}{
"error": "not_found",
"message": "Resource not found"
}{
"error": "not_found",
"message": "Resource not found"
}{
"error": "not_found",
"message": "Resource not found"
}{
"error": "not_found",
"message": "Resource not found"
}{
"error": "not_found",
"message": "Resource not found"
}Authorizations
Bearer token authentication. Pass your AccessOwl API token in the Authorization header as Bearer <token>.
Headers
Optional key (1–255 chars) for safely retrying a request. Reusing the same key for the same request returns 409 Conflict and is not processed again — this confirms the request was already received. Keys are retained for 14 days.
1 - 255Body
Bulk access request parameters
Request body for creating multiple access requests
Shared reason for all access requests
255List of access requests to create (max 10)
1 - 10 elementsShow child attributes
Show child attributes
User to request access for. Required when authenticating with an API token. With a user login, defaults to the authenticated user if omitted.
Response
Access requests created
Response containing created access requests
List of created access requests
Show child attributes
Show child attributes
Was this page helpful?
curl --request POST \
--url https://api.accessowl.com/api/v1/access_requests/bulk \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"request_reason": "Need access to complete Q4 reporting",
"requests": [
{
"permission_ids": [
"7488a646-e31f-11e4-aace-600308960664"
],
"resource_id": "7488a646-e31f-11e4-aace-600308960663"
},
{
"permission_ids": [
"7488a646-e31f-11e4-aace-600308960666"
],
"resource_id": "7488a646-e31f-11e4-aace-600308960665"
}
]
}
'import requests
url = "https://api.accessowl.com/api/v1/access_requests/bulk"
payload = {
"request_reason": "Need access to complete Q4 reporting",
"requests": [
{
"permission_ids": ["7488a646-e31f-11e4-aace-600308960664"],
"resource_id": "7488a646-e31f-11e4-aace-600308960663"
},
{
"permission_ids": ["7488a646-e31f-11e4-aace-600308960666"],
"resource_id": "7488a646-e31f-11e4-aace-600308960665"
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
request_reason: 'Need access to complete Q4 reporting',
requests: [
{
permission_ids: ['7488a646-e31f-11e4-aace-600308960664'],
resource_id: '7488a646-e31f-11e4-aace-600308960663'
},
{
permission_ids: ['7488a646-e31f-11e4-aace-600308960666'],
resource_id: '7488a646-e31f-11e4-aace-600308960665'
}
]
})
};
fetch('https://api.accessowl.com/api/v1/access_requests/bulk', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.accessowl.com/api/v1/access_requests/bulk",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'request_reason' => 'Need access to complete Q4 reporting',
'requests' => [
[
'permission_ids' => [
'7488a646-e31f-11e4-aace-600308960664'
],
'resource_id' => '7488a646-e31f-11e4-aace-600308960663'
],
[
'permission_ids' => [
'7488a646-e31f-11e4-aace-600308960666'
],
'resource_id' => '7488a646-e31f-11e4-aace-600308960665'
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.accessowl.com/api/v1/access_requests/bulk"
payload := strings.NewReader("{\n \"request_reason\": \"Need access to complete Q4 reporting\",\n \"requests\": [\n {\n \"permission_ids\": [\n \"7488a646-e31f-11e4-aace-600308960664\"\n ],\n \"resource_id\": \"7488a646-e31f-11e4-aace-600308960663\"\n },\n {\n \"permission_ids\": [\n \"7488a646-e31f-11e4-aace-600308960666\"\n ],\n \"resource_id\": \"7488a646-e31f-11e4-aace-600308960665\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.accessowl.com/api/v1/access_requests/bulk")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"request_reason\": \"Need access to complete Q4 reporting\",\n \"requests\": [\n {\n \"permission_ids\": [\n \"7488a646-e31f-11e4-aace-600308960664\"\n ],\n \"resource_id\": \"7488a646-e31f-11e4-aace-600308960663\"\n },\n {\n \"permission_ids\": [\n \"7488a646-e31f-11e4-aace-600308960666\"\n ],\n \"resource_id\": \"7488a646-e31f-11e4-aace-600308960665\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.accessowl.com/api/v1/access_requests/bulk")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"request_reason\": \"Need access to complete Q4 reporting\",\n \"requests\": [\n {\n \"permission_ids\": [\n \"7488a646-e31f-11e4-aace-600308960664\"\n ],\n \"resource_id\": \"7488a646-e31f-11e4-aace-600308960663\"\n },\n {\n \"permission_ids\": [\n \"7488a646-e31f-11e4-aace-600308960666\"\n ],\n \"resource_id\": \"7488a646-e31f-11e4-aace-600308960665\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"data": [
{
"application_id": "7488a646-e31f-11e4-aace-600308960662",
"grantee_user_id": "9488a646-e31f-11e4-aace-600308960666",
"id": "8488a646-e31f-11e4-aace-600308960665",
"inserted_at": "2023-01-15T10:30:00Z",
"permission_ids": [
"7488a646-e31f-11e4-aace-600308960664"
],
"provisioning_type": "automatic",
"request_reason": "Need access to complete Q4 reporting",
"requestor_user_id": "9488a646-e31f-11e4-aace-600308960666",
"resource_id": "7488a646-e31f-11e4-aace-600308960663",
"status": "pending_approval"
}
]
}{
"error": "not_found",
"message": "Resource not found"
}{
"error": "not_found",
"message": "Resource not found"
}{
"error": "not_found",
"message": "Resource not found"
}{
"error": "not_found",
"message": "Resource not found"
}{
"error": "not_found",
"message": "Resource not found"
}
