Invite an external person to one resource
/v1/resource-invitations/resources/{resourceType}/{resourceId}/peopleRequires 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.
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| resourceType | path | skill | 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_endpoint | Yes | — |
| resourceId | path | string | Yes | — |
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| X-Computer-Agents-Organization | header | string | Yes | — |
Body schema
Content type: application/json · Required
| Field | Type | Required | Description |
|---|---|---|---|
| string | Yes | — | |
| role | member | contributor | admin | No | — |
What the API returns
Each response code below includes the documented payload shape for the ACP API.
| Field | Type | Required | Description |
|---|---|---|---|
| person | object | Yes | — |
| person.id | string | Yes | Unique identifier. |
| person.kind | person | Yes | — |
| person.email | string | Yes | — |
| person.name | string | Yes | Human-readable name. |
| person.userId | string | Yes | User ID. |
| person.profileImageUrl | string | Yes | — |
| person.status | pending | accepted | declined | revoked | expired | Yes | Current lifecycle status. |
| person.accessLevel | use | edit | manage | Yes | — |
| person.permissionSet | object | Yes | Resource-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.version | integer | No | — |
| person.permissionSet.defaultAccess | full_access | ask_for_permission | read_only | no_access | No | — |
| person.permissionSet.rings | object | No | — |
| person.permissionSet.actions | object | No | — |
| person.expiresAt | string | Yes | — |
| person.createdAt | string | Yes | ISO 8601 timestamp. |
| person.updatedAt | string | Yes | ISO 8601 timestamp. |