List invites
List pending and expired invites in the caller's organization.
/admin/invitesList invites
3 parameters
- X-Pinecone-Api-Versionstringheaderrequired
Required date-based version header
- limitintegerquery
The number of results to return per page. When omitted, the server defaults to 100. Out-of-range values return `400 OUT_OF_RANGE`.
- paginationTokenstringquery
Cursor from `pagination.next` of a prior response. Must be reused with the same query context (path parameters, filters, and `limit`).
curl --request GET \
--url https://api.pinecone.io/admin/invites \
--header 'Authorization: Bearer <token>' \
--header 'X-Pinecone-Api-Version: <x-pinecone-api-version>'import requests
url = "https://api.pinecone.io/admin/invites"
headers = {
"Authorization": "Bearer <token>",
"X-Pinecone-Api-Version": "<x-pinecone-api-version>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: "GET", headers: {"Authorization": "Bearer <token>", "X-Pinecone-Api-Version": "<x-pinecone-api-version>"}};
fetch("https://api.pinecone.io/admin/invites", 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.pinecone.io/admin/invites",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"X-Pinecone-Api-Version: <x-pinecone-api-version>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.pinecone.io/admin/invites"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("X-Pinecone-Api-Version", "<x-pinecone-api-version>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.pinecone.io/admin/invites")
.header("Authorization", "Bearer <token>")
.header("X-Pinecone-Api-Version", "<x-pinecone-api-version>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.pinecone.io/admin/invites")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
request["X-Pinecone-Api-Version"] = '<x-pinecone-api-version>'
response = http.request(request)
puts response.read_body{
"data": [
{
"created_at": "2026-04-14T20:00:00.000Z",
"email": "newhire@acme.com",
"expires_at": "2026-05-21T03:00:00.000Z",
"id": "9c8e3528-b9c0-4358-84ce-84c28e91b566",
"processed_at": null,
"status": "pending"
}
],
"pagination": {
"next": "eyJsYXN0X2lkIjoiOWM4ZTM1MjgifQ=="
}
}{
"error": {
"code": "INVALID_ARGUMENT",
"message": "Bad request. The request body included invalid request parameters."
},
"status": 400
}{
"error": {
"code": "UNAUTHENTICATED",
"message": "Invalid API key."
},
"status": 401
}{
"error": {
"code": "QUOTA_EXCEEDED",
"message": "The index exceeds the project quota of 5 pods by 2 pods. Upgrade your account or change the project settings to increase the quota."
},
"status": 429
}{
"error": {
"code": "UNKNOWN",
"message": "Internal server error"
},
"status": 500
}{
"error": {
"code": "QUOTA_EXCEEDED",
"message": "The index exceeds the project quota of 5 pods by 2 pods. Upgrade your account or change the project settings to increase the quota."
},
"status": 429
}Authorizations
Section titled “Authorizations”AuthorizationstringrequiredAn access token must be provided in the Authorization header using the Bearer scheme.
Headers
Section titled “Headers”X-Pinecone-Api-VersionstringrequiredRequired date-based version header
Query Parameters
Section titled “Query Parameters”limit?integerThe number of results to return per page. When omitted, the server defaults to 100. Out-of-range values return 400 OUT_OF_RANGE.
Required range: 1 <= x <= 100
paginationToken?stringCursor from pagination.next of a prior response. Must be reused with the same query context (path parameters, filters, and limit).
Response
Section titled “Response”200 — A paginated list of pending and expired invites; processed and deleted invites are excluded. To view an invite's role bindings, call GET /admin/role-bindings with principal_type=invite as a filter.
A paginated list of invites in the organization.
dataobject[]requiredThe page of invites.
Show child attributes
idstringrequiredThe unique ID of the invite.
emailstringrequiredThe email address the invite was sent to.
statusstringrequiredThe lifecycle status of an invite. Possible values: pending, expired, processed. List endpoints return only pending and expired invites; processed is returned only when fetching a single invite by ID.
Example: pending
expires_at?string | nullWhen the invite expires if not accepted. Default TTL is 7 days. Resending the invite extends this to now plus 7 days. null if the invite does not expire.
processed_at?string | nullThe date and time the invite was accepted. null or omitted while the invite is still pending or expired.
created_atstringrequiredThe date and time the invite was created.
pagination?object | nullCursor envelope for the next page. null (or absent) on the final page of results.
Show child attributes
next?stringOpaque cursor for the next page. Do not parse or construct. Invalid or expired tokens return 400.
Example: eyJsYXN0X2lkIjogImluZGV4LTQifQ==