Summary
We’re launching new API endpoints for Asana’s request access framework, allowing developers to programmatically manage access requests for private projects and portfolios. These endpoints enable users to request access to private work and allow admins to approve or reject those requests directly through the API.
Who benefits
This is a new feature that affects developers building integrations that:
- Need to handle access to private projects or portfolios
- Want to automate access request workflows
- Require programmatic admin capabilities for managing team permissions
Existing API functionality remains unchanged - this is purely additive.
Timeline
Now available: The request access endpoints are live and ready for use.
Request Access API Reference
Usage
The request access framework introduces four new endpoints for managing access requests:
- POST /access_requests - Create an access request for a private project or portfolio
- GET /access_requests - Retrieve access requests with optional filtering by target and user
- POST /access_requests/{access_request_gid}/approve - Approve a specific access request
- POST /access_requests/{access_request_gid}/reject - Reject a specific access request
Key fields
| Field Name | Description |
|---|---|
target |
The GID of the project or portfolio for which access is requested |
message |
Optional message from the requester explaining why they need access |
approval_status |
Current status of the request: pending, approved, or rejected |
requester |
User object containing details about who made the request |
Creating access requests
Request access to a private project or portfolio:
// POST /access_requests
{
"data": {
"target": "12345",
"message": "I'm looking to request access to this project."
}
}
Response (201):
{
"data": {
"gid": "12345",
"resource_type": "access_request",
"message": "I'm looking to request access to this project.",
"approval_status": "pending",
"requester": {
"gid": "12345",
"resource_type": "user",
"name": "Greg Sanchez"
},
"target": {
"gid": "12345",
"resource_type": "project"
}
}
}
Retrieving access requests
Fetch pending access requests for a specific project or portfolio:
// GET /access_requests?target=123&user=456
Managing access requests
Approve or reject access requests using the request GID:
// POST /access_requests/{access_request_gid}/approve
// POST /access_requests/{access_request_gid}/reject
Both endpoints return an empty success response (201).