Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.getpg.ai/llms.txt

Use this file to discover all available pages before exploring further.

All API requests (except /health) require authentication via an API key passed in the x-api-key request header.

Getting Your API Key

1

Navigate to settings

Go to Settings > API Keys in your PG:AI workspace.
2

Generate a key

Click Generate API Key, give it a descriptive name, and select the permission scopes it should have.
3

Copy and store securely

Copy the key immediately — it won’t be shown again. Store it in environment variables or a secrets manager.

Using Your API Key

Include the API key in the x-api-key header on every request:
curl -X GET "https://api.getpg.ai/public-api/v1/territories" \
  -H "x-api-key: your_api_key" \
  -H "Content-Type: application/json"
Never expose your API key in client-side code, public repositories, or browser requests. Always keep it server-side.

Base URL

All API endpoints use the following base URL:
https://api.getpg.ai/public-api/v1

Permissions & Scopes

API keys are scoped with granular permissions. Each endpoint requires a specific permission — requests made with a key that lacks the required scope will receive a 403 Forbidden response.
ScopeDescription
insights:readRead company intelligence, profiles, content, and technologies
insights:writeCreate or modify company data
accounts:readSearch and list accounts
contacts:readRead contact data
contacts:writeCreate or modify contacts
org_settings:readRead organization settings and credits
*Full access (all permissions)
Wildcard scopes are also supported. For example, insights:* grants both insights:read and insights:write.

Rate Limits

API requests are rate-limited based on your plan. If you exceed the limit, the API returns a 429 Too Many Requests response.
HeaderDescription
X-RateLimit-LimitMaximum requests allowed per window
X-RateLimit-RemainingRequests remaining in current window
X-RateLimit-ResetUnix timestamp when the rate limit resets
If you’re hitting rate limits, consider batching requests or adding short delays between calls.

Error Responses

All error responses follow a consistent format:
{
  "error": "Human-readable error message"
}
Status CodeDescription
400Bad Request — invalid parameters or missing required fields
401Unauthorized — missing or invalid API key
403Forbidden — API key lacks the required permission scope
404Not Found — the requested resource does not exist
429Rate Limited — too many requests
500Internal Server Error — something went wrong on our end