Invite an external person to one resource

POST/v1/resource-invitations/resources/{resourceType}/{resourceId}/people

Requires resource access-management authority and the resource service write scope. Creates a 30-day recipient-bound offer, not organization membership. Existing active invitations are idempotent and keep their policy. The recipient must explicitly accept through the resource-invitations API. Unknown emails are matched only to an unambiguous active account's authoritative email when it reads its Inbox. Organization members already have baseline read access and cannot be invited as external people.

How to call this endpoint

Every ACP API request uses bearer authentication. The examples here show the actual request path, auth header, and body shape that the platform expects.

Path, query, and header parameters

These parameters control which ACP object the endpoint acts on and how the request is processed.

Path parameters
NameLocationTypeRequiredDescription
resourceTypepathskill | channel | resource_package | project | environment | agent | prompt | knowledge_library | database | server | security_repository | guardrail | evaluation | fine_tuning | test_plan | assurance_policy | metronome_workflow | batch_job | inference_endpointYes
resourceIdpathstringYes
Query parameters
None.
Header parameters
NameLocationTypeRequiredDescription
X-Computer-Agents-OrganizationheaderstringYes

Body schema

Content type: application/json · Required

FieldTypeRequiredDescription
emailstringYes
rolemember | contributor | adminNo

What the API returns

Each response code below includes the documented payload shape for the ACP API.

201New or existing invitation and independent personal policyapplication/json
FieldTypeRequiredDescription
personobjectYes
person.idstringYesUnique identifier.
person.kindpersonYes
person.emailstringYes
person.namestringYesHuman-readable name.
person.userIdstringYesUser ID.
person.profileImageUrlstringYes
person.statuspending | accepted | declined | revoked | expiredYesCurrent lifecycle status.
person.accessLeveluse | edit | manageYes
person.permissionSetobjectYesResource-specific policy, not agent runtime permissions. Action identifiers must belong to the named resource type. Missing default access is normalized to no_access.
person.permissionSet.versionintegerNo
person.permissionSet.defaultAccessfull_access | ask_for_permission | read_only | no_accessNo
person.permissionSet.ringsobjectNo
person.permissionSet.actionsobjectNo
person.expiresAtstringYes
person.createdAtstringYesISO 8601 timestamp.
person.updatedAtstringYesISO 8601 timestamp.
400Invalid email
None.
401Authentication required
None.
403Resource access-management permission required
None.
404Resource unavailable in the selected organization
None.
409Recipient is an organization member
None.
503PostgreSQL required
None.
Invite an external person to one resource
Loading...
Response 201
Loading...
See the ACP quickstart and SDK flow