Skip to content

Global Overlap List API Guide

This document is a guide for using the PartnerTap Analytics API for retrieving the Ecosystem “Global Overlap List” report.

The “Global Overlap List” report is a vertical view of your accounts that overlap with your entire partner ecosystem. This report is considered “vertical” because your partners will all be listed in one column instead of separate columns. In the event an account overlaps with more than one partner, the account will be repeated in a row for each partner.

All report endpoints follow the pattern /v1/report-analytics/report/{reportType}/... and support the ReportRequest body for filtering, searching, and column selection.


All API requests require an API key passed in the api-key HTTP header.

  1. Log in to PartnerTap.
  2. Navigate to Admin Center > Data > API Keys.
  3. Click “Generate Key”.
  4. Copy the generated key and store it securely — it will not be shown again.

Include the key in every request via the api-key header:

api-key: <YOUR_API_KEY>

If the api-key header is not provided, the service falls back to the standard authorization header (JWT bearer token). The API key approach is recommended for programmatic/external integrations.

Rate Limiting: Each API key is rate-limited to a maximum number of 100 requests per minute. The counter resets on a rolling 1-minute window. If the limit is exceeded, the server responds with HTTP 429 Too Many Requests. The rate limit is tracked per API key — separate keys have independent counters.


Returns paginated report records for a given report type.

POST /v1/report-analytics/report/GLOBAL_VERTICAL_ACCOUNTS/records?page=0&size=20&sort=columnName,asc
Content-Type: application/json
ParameterTypeRequiredDescription
reportTypestringYesThe report type enum value
ParameterTypeRequiredDescription
pageintegerNoZero-based page index (default: 0)
sizeintegerNoNumber of records per page (default: 20, max: 2000)
sortstringNoSorting criteria in the format property,asc|desc. Multiple sort criteria are supported.
{
"filters": {},
"search": ""
}

200 OK - Returns a paginated response containing report records (showing only 1 record for this example).

{
"totalElements": 7792,
"totalPages": 390,
"sort": {
"unsorted": true,
"sorted": false,
"empty": true
},
"first": true,
"last": false,
"number": 0,
"pageable": {
"pageNumber": 0,
"pageSize": 20,
"sort": {
"unsorted": true,
"sorted": false,
"empty": true
},
"offset": 0,
"unpaged": false,
"paged": true
},
"numberOfElements": 20,
"size": 20,
"empty": false,
"content": [
{
"account_acv": 0.00,
"account_name": "Example Logistics",
"account_owner_email": "jane.doe@example.com",
"account_owner_name": "Jane Doe",
"account_owner_title": "Sales Development Rep",
"account_type": "Prospect",
"annual_revenue": "",
"average_referral_deal_size": 10000000,
"city": "Oklahoma City",
"closed_opp_count": 4,
"country": "US",
"crm_account_id": "MANUAL-f91e0f6a-c941-4e2d-a94c-deb49157ba46",
"divisions": "West",
"duns_number": "",
"industry": "Professional, Scientific and Technical Services",
"naics_code": "",
"nces_id": "",
"number_of_employees": 3088,
"open_opp_count": 2,
"open_pipeline_amount": 463190624.03,
"partner_account_acv": 0,
"partner_account_name": "USA Logistics",
"partner_account_owner_email": "sample@example.com",
"partner_account_owner_name": "John Doe",
"partner_account_owner_phone": "N/A",
"partner_account_owner_title": "Senior Sales Rep",
"partner_account_type": "Prospect",
"partner_city": "Buenos Aires",
"partner_closed_opp": 0,
"partner_closed_opp_won_count": 0,
"partner_count": 4,
"partner_country": "",
"partner_crm_account_id": "",
"partner_first_match_date": 1758921277,
"partner_open_opp": 0,
"partner_open_pipeline_amount": 0,
"partner_org_name": "Example Pharma Inc.",
"partner_org_partner_type": "",
"partner_owner": "",
"partner_owner_email": "",
"partner_owner_phone": "",
"partner_postal_code": "",
"partner_state": "",
"partner_street": "",
"partner_website": "example-pharma.example.com",
"partnerOrgPublicId": "c1727859-692f-499e-8c2a-b1fa50aa1a65",
"phone_number": "",
"prm_record_id": "",
"recent_closed_opp_date": 1715707210,
"recent_open_opp_date": 1722705610,
"sic_code": "",
"state": "Oklahoma",
"street": "",
"tax_id": "",
"territory": "",
"website": "example-logistics.example.com",
"zip_code": "73013"
}
],
"noDataFoundMessage": null
}
Terminal window
curl -X POST \
"https://reports-analytics.partnertap.com/v1/report-analytics/report/GLOBAL_VERTICAL_ACCOUNTS/records?page=0&size=20" \
-H "Content-Type: application/json" \
-H "api-key: <YOUR_API_KEY>" \
-d '{
"filters": {},
"search": ""
}'

Here are all of standard fields for the Global Overlap List report. If you have custom fields they will appear with the prefix “custom_” in the records response.

Note: Columns prefixed with “partner_” populate depending on your partner’s share settings and available data.

API NameDisplay NameTypeDescription
account_nameAccount NamestringName of the account in your crm or upload
account_typeAccount TypestringAccount classification (e.g., Customer, Prospect)
account_owner_nameAccount Owner NamenameFull name of the account owner
account_owner_emailAccount Owner EmailemailEmail of the account owner
account_owner_titleAccount Owner TitletitleJob title of the account owner
crm_account_idAccount IDstringUnique identifier of the account in the source CRM
duns_numberDUNS NumberstringDun & Bradstreet DUNS identifier
streetStreetstringAccount street address
cityCitystringAccount city
stateStatestringAccount state or region
zip_codeZip CodestringAccount postal code
countryCountrystringAccount country
industryIndustrystringIndustry classification of the account
territoryTerritorystringSales territory the account is assigned to
divisionsDivisionsstringInternal divisions associated with the account
websiteWebsitestringAccount’s website URL
naics_codeNAICS#stringNAICS industry classification code
sic_codeSIC#stringSIC industry classification code
annual_revenueAnnual RevenuecurrencyReported annual revenue of the account
number_of_employeesNumber of EmployeesnumberReported employee count
open_opp_countOpen OppsnumberCount of open opportunities on the account
closed_opp_countClosed OppsnumberCount of closed opportunities on the account
phone_numberPhone NumberstringAccount phone number
recent_open_opp_dateRecent Open Opp DatedateDate of the most recent open opportunity
recent_closed_opp_dateRecent Closed Opp DatedateDate of the most recent closed opportunity
tax_idTax IdstringTax identifier for the account
account_acvAccount ACVcurrencyAnnual contract value attributed to the account
open_pipeline_amountOpen Pipeline AmountcurrencyTotal value of open pipeline on the account
nces_idNCES IDstringNCES identifier (education sector)
partner_countPartner CountnumberNumber of partners matched to this account
partner_account_namePartner Account NamestringName of the account in the partner’s CRM
partner_org_namePartner Org NamestringName of the partner organization
partner_account_typePartner Account TypestringAccount type as classified by the partner
partner_account_acvPartner Account ACVcurrencyPartner-reported ACV for the matched account
partner_account_owner_namePartner Account Owner NamenameFull name of the partner’s account owner
partner_account_owner_emailPartner Account Owner EmailemailEmail of the partner’s account owner
partner_account_owner_titlePartner Account Owner TitletitleJob title of the partner’s account owner
partner_account_owner_phonePartner Account Owner PhonephonePhone number of the partner’s account owner
partner_crm_account_idPartner CRM Account IdstringAccount identifier in the partner’s CRM
partner_first_match_dateFirst Match DatedateDate the account was first matched with this partner
partner_open_pipeline_amountPartner Open Pipeline AmountcurrencyPartner’s open pipeline value on the matched account
partner_open_oppPartner Open OppcurrencyPartner’s open opportunity value on the matched account
partner_closed_oppPartner Closed OppcurrencyPartner’s closed opportunity value on the matched account
partner_closed_opp_won_countPartner Closed Opp Won CountcurrencyCount of closed-won opportunities reported by the partner
partner_websitePartner Org WebsitestringWebsite of the partner organization
prm_record_idPartner Org PRM IDstringPartner organization’s identifier in the PRM
partner_ownerPartner Org Manager NamestringName of the internal manager owning the partner relationship
partner_owner_emailPartner Org Manager EmailstringEmail of the internal partner manager
partner_owner_phonePartner Org Manager PhonestringPhone of the internal partner manager
partner_org_partner_typePartner Org TypestringType of partner (e.g., reseller, ISV, SI)
average_referral_deal_sizePartner Org Avg Deal SizecurrencyAverage deal size for referrals from this partner
partner_streetPartner Org StreetstringPartner organization street address
partner_cityPartner Org CitystringPartner organization city
partner_statePartner Org StatestringPartner organization state or region
partner_postal_codePartner Org Postal CodestringPartner organization postal code
partner_countryPartner Org CountrystringPartner organization country
customownertitleCustom Owner TitletitleJob title of a custom-mapped account owner
customowneremailCustom Owner EmailemailEmail of a custom-mapped account owner
customownernameCustom Owner NamenameFull name of a custom-mapped account owner

Filters are passed as key-value pairs in the filters object of the ReportRequest body. The key is the column name (as returned in the response content objects), and the value is a string that encodes the filter operation, using special suffixes and delimiters.

OperationSuffixValue FormatDescription
Exact match(none)value1-,-value2-,-value3Matches rows where the field equals any of the values (OR logic).
Not equal-!-value1-,-value2-!-Excludes rows matching any of the values (AND logic). NULLs are preserved.
Contains-?-search1-,-search2-?-Case-insensitive substring match. Row must contain all terms (AND logic).
Does not contain-^-exclude1-,-exclude2-^-Case-insensitive substring exclusion. Row must not contain any of the terms (AND logic).
Range<->min<->maxMatches rows where the field value falls between min and max (inclusive).

Use -,- to separate multiple values within a single filter:

"partner_org_name": "Example Pharma Inc.-,-Example Networks Inc."

This matches rows where partner_org_name is “Example Pharma Inc.” OR “Example Networks Inc.”.

Column TypeExact MatchNot EqualContainsDoes Not ContainRange
StringYYYY
BooleanY
UUIDYYYY
DateY
Number (int)Y
Currency / DoubleY

String / UUID - pass the display value as a string:

{
"state": "Oklahoma"
}
{
"state": "Oklahoma-,-Texas-,-California"
}
{
"account_name": "Example-?-"
}
{
"account_name": "Test-^-"
}
{
"state": "Oklahoma-,-Texas-!-"
}

Boolean - pass "true" or "false":

{
"custom_ispartnerpaid": "true"
}

Date - pass epoch timestamps (seconds) as a range:

{
"recent_open_opp_date": "1700000000<->1760000000"
}

Number / Currency - pass numeric values as a range:

{
"open_opp_count": "1<->10"
}
{
"open_pipeline_amount": "100000<->500000"
}

Before building a filter, you can use the /filterdata endpoint to retrieve the available values for any column. This is a paginated endpoint — pass the column name as the filterField query parameter.

POST /v1/report-analytics/report/{reportType}/filterdata?filterField={columnName}

For string columns, the response contains the distinct values you can use in an exact-match or contains filter. For numeric/date columns, the response includes filterRangeMin and filterRangeMax to help you build a range filter.

Page size: The default page size is 20. You can request up to 2000 results per page by setting the size query parameter (e.g. size=200).

Example: get available values for partner_org_name:

Terminal window
curl -X POST \
"https://reports-analytics.partnertap.com/v1/report-analytics/report/GLOBAL_VERTICAL_ACCOUNTS/filterdata?filterField=partner_org_name&page=0&size=10" \
-H "Content-Type: application/json" \
-H "api-key: <YOUR_API_KEY>" \
-d '{}'

Response:

{
"totalElements": 42,
"totalPages": 5,
"number": 0,
"size": 10,
"content": [
{
"filterData": "Example Pharma Inc.",
"filterRangeMin": null,
"filterRangeMax": null,
"filterType": "STRING"
},
{
"filterData": "Example Networks Inc.",
"filterRangeMin": null,
"filterRangeMax": null,
"filterType": "STRING"
}
]
}

You can then take a filterData value from the response and use it directly in a /records filter:

{
"filters": {
"partner_org_name": "Example Pharma Inc."
}
}

Example: get range bounds for open_pipeline_amount:

Terminal window
curl -X POST \
"https://reports-analytics.partnertap.com/v1/report-analytics/report/GLOBAL_VERTICAL_ACCOUNTS/filterdata?filterField=open_pipeline_amount&page=0&size=1" \
-H "Content-Type: application/json" \
-H "api-key: <YOUR_API_KEY>" \
-d '{}'

Response:

{
"totalElements": 1,
"content": [
{
"filterData": null,
"filterRangeMin": 0.0,
"filterRangeMax": 500000000.0,
"filterType": "CURRENCY"
}
]
}

Use the min/max to build a range filter:

{
"filters": {
"open_pipeline_amount": "100000<->500000"
}
}

All filters in the filters object are combined with AND logic:

{
"filters": {
"state": "Oklahoma",
"open_opp_count": "1<->10",
"account_name": "Example-?-"
}
}

This returns rows where state is “Oklahoma” AND open opp count is between 1-10 AND account name contains “Example”.

To filter records to a specific partner, use the partner_org_name field.

Single partner (exact match):

Terminal window
curl -X POST \
"https://reports-analytics.partnertap.com/v1/report-analytics/report/GLOBAL_VERTICAL_ACCOUNTS/records?page=0&size=20" \
-H "Content-Type: application/json" \
-H "api-key: <YOUR_API_KEY>" \
-d '{
"filters": {
"partner_org_name": "Example Pharma Inc."
}
}'

Multiple partners (exact match, OR logic):

Terminal window
curl -X POST \
"https://reports-analytics.partnertap.com/v1/report-analytics/report/GLOBAL_VERTICAL_ACCOUNTS/records?page=0&size=20" \
-H "Content-Type: application/json" \
-H "api-key: <YOUR_API_KEY>" \
-d '{
"filters": {
"partner_org_name": "Example Pharma Inc.-,-Example Networks Inc."
}
}'

Partner name contains (case-insensitive):

Terminal window
curl -X POST \
"https://reports-analytics.partnertap.com/v1/report-analytics/report/GLOBAL_VERTICAL_ACCOUNTS/records?page=0&size=20" \
-H "Content-Type: application/json" \
-H "api-key: <YOUR_API_KEY>" \
-d '{
"filters": {
"partner_org_name": "exa-?-"
}
}'

Exclude a partner:

Terminal window
curl -X POST \
"https://reports-analytics.partnertap.com/v1/report-analytics/report/GLOBAL_VERTICAL_ACCOUNTS/records?page=0&size=20" \
-H "Content-Type: application/json" \
-H "api-key: <YOUR_API_KEY>" \
-d '{
"filters": {
"partner_org_name": "Example Pharma Inc.-!-"
}
}'

Combined: filter by partner + state + open pipeline range:

Terminal window
curl -X POST \
"https://reports-analytics.partnertap.com/v1/report-analytics/report/GLOBAL_VERTICAL_ACCOUNTS/records?page=0&size=20" \
-H "Content-Type: application/json" \
-H "api-key: <YOUR_API_KEY>" \
-d '{
"filters": {
"partner_org_name": "Example Pharma Inc.",
"state": "Oklahoma",
"open_pipeline_amount": "100000<->500000"
}
}'

EndpointMethodDescription
/v1/report-analytics/report/{reportType}/columnsPOSTGet available columns for a report
/v1/report-analytics/report/{reportType}/filterdataPOSTGet filter values for a column
/v1/report-analytics/report/{reportType}/downloadPOSTDownload report as CSV
/v1/report-analytics/report/{reportType}/dashboardPOSTGet dashboard metrics for a report