Skip to main content
All API requests require authentication via an API key passed in the x-api-key request header.

Getting Your API Key

1

Navigate to settings

Go to Configuration > API 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.pipelinegeneration.ai/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.pipelinegeneration.ai/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