curl --request GET \
--url https://api.1password.eu/v1/distributor-customers/{distributor-customer}/entitlements \
--header 'Authorization: Bearer <token>'const url = 'https://api.1password.eu/v1/distributor-customers/{distributor-customer}/entitlements';
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));import requests
url = "https://api.1password.eu/v1/distributor-customers/{distributor-customer}/entitlements"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.1password.eu/v1/distributor-customers/{distributor-customer}/entitlements"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}using RestSharp;
var options = new RestClientOptions("https://api.1password.eu/v1/distributor-customers/{distributor-customer}/entitlements");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "Bearer <token>");
var response = await client.GetAsync(request);
Console.WriteLine("{0}", response.Content);
HttpResponse<String> response = Unirest.get("https://api.1password.eu/v1/distributor-customers/{distributor-customer}/entitlements")
.header("Authorization", "Bearer <token>")
.asString();<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.1password.eu/v1/distributor-customers/{distributor-customer}/entitlements",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}$headers=@{}
$headers.Add("Authorization", "Bearer <token>")
$response = Invoke-WebRequest -Uri 'https://api.1password.eu/v1/distributor-customers/{distributor-customer}/entitlements' -Method GET -Headers $headersrequire 'uri'
require 'net/http'
url = URI("https://api.1password.eu/v1/distributor-customers/{distributor-customer}/entitlements")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"results": [
{
"path": "distributor-customers/cust_789xyz/entitlements/ent_abc123def456",
"id": "ent_abc123def456",
"customer_id": "cust_789xyz",
"product_id": "1p-msp-us",
"status": "active",
"contact_info": {
"email": "admin@acme-corp.com",
"company_name": "Acme Corporation"
},
"create_time": "2026-09-15T10:30:00Z",
"expire_time": "2026-09-20T10:30:00Z"
}
],
"next_page_token": ""
}{
"code": "invalid_argument",
"message": "The 'email' field must be a valid email address."
}{
"code": "unauthenticated",
"message": "Authentication required. Please provide a valid bearer token."
}{
"code": "not_found",
"message": "The requested resource was not found."
}"Too Many Requests"{
"code": "internal",
"message": "An internal error occurred. Please try again later."
}List entitlements
Retrieve a paginated list of 1Password product entitlements for a distributor customer.
curl --request GET \
--url https://api.1password.eu/v1/distributor-customers/{distributor-customer}/entitlements \
--header 'Authorization: Bearer <token>'const url = 'https://api.1password.eu/v1/distributor-customers/{distributor-customer}/entitlements';
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));import requests
url = "https://api.1password.eu/v1/distributor-customers/{distributor-customer}/entitlements"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.1password.eu/v1/distributor-customers/{distributor-customer}/entitlements"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}using RestSharp;
var options = new RestClientOptions("https://api.1password.eu/v1/distributor-customers/{distributor-customer}/entitlements");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "Bearer <token>");
var response = await client.GetAsync(request);
Console.WriteLine("{0}", response.Content);
HttpResponse<String> response = Unirest.get("https://api.1password.eu/v1/distributor-customers/{distributor-customer}/entitlements")
.header("Authorization", "Bearer <token>")
.asString();<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.1password.eu/v1/distributor-customers/{distributor-customer}/entitlements",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}$headers=@{}
$headers.Add("Authorization", "Bearer <token>")
$response = Invoke-WebRequest -Uri 'https://api.1password.eu/v1/distributor-customers/{distributor-customer}/entitlements' -Method GET -Headers $headersrequire 'uri'
require 'net/http'
url = URI("https://api.1password.eu/v1/distributor-customers/{distributor-customer}/entitlements")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"results": [
{
"path": "distributor-customers/cust_789xyz/entitlements/ent_abc123def456",
"id": "ent_abc123def456",
"customer_id": "cust_789xyz",
"product_id": "1p-msp-us",
"status": "active",
"contact_info": {
"email": "admin@acme-corp.com",
"company_name": "Acme Corporation"
},
"create_time": "2026-09-15T10:30:00Z",
"expire_time": "2026-09-20T10:30:00Z"
}
],
"next_page_token": ""
}{
"code": "invalid_argument",
"message": "The 'email' field must be a valid email address."
}{
"code": "unauthenticated",
"message": "Authentication required. Please provide a valid bearer token."
}{
"code": "not_found",
"message": "The requested resource was not found."
}"Too Many Requests"{
"code": "internal",
"message": "An internal error occurred. Please try again later."
}distributor-customers/- to list across all of your customers.
This endpoint supports pagination and filtering. For example, filter on status with status == 'active'. Learn more about entitlement statuses and the possible values.Authorizations
Bearer token authentication. When a distributor is registered, they receive an opaque bearer token (prefixed op_b_). Include it in the Authorization header of every request as Bearer <token>.
Path Parameters
The customer ID to list entitlements for. Use the - wildcard to list across all of the distributor's customers. Each returned entitlement includes its own customer ID.
Query Parameters
The maximum number of entitlements to return per page. Defaults to 100 when omitted or set to 0. Values greater than 100 are clamped to 100. Negative values return an invalid_argument error.
x >= 0The pagination token that identifies the page of results to return. Tokens don't expire and must be treated as opaque.
An optional filter in CEL syntax (for example, status == 'active'). When omitted, entitlements of all statuses are returned.
Response
A paginated list of the customer's entitlements.
Was this page helpful?