{"templateId":"api_docs","sharedDataIds":{"apiDocsStore":"api-docs-partner-v1.yaml","sidebar":"sidebar-sidebar.yaml__partner-v1"},"props":{"definitionId":"partner-v1.yaml","settings":{"baseUrlPath":"/help/audience/engineering/partner-v1"},"disableAutoScroll":true,"seo":{"title":"Push Security Partner API"},"dynamicMarkdocComponents":[],"metadata":{"type":"openapi","title":"Push Security Partner API","version":"v1","description":"## Overview\n\nThe Push Security Partner API provides programmatic access to the tenants you manage as a Push partner. It lets you drive tenant lifecycle from your own systems rather than through the partner console.\n\nThis API adheres to RESTful principles, featuring resource-oriented URLs that are predictable and easy to navigate. It uses JSON-formatted request bodies and responses along with standard HTTP response codes, authentication methods, and HTTP verbs.\n\nEvery operation is scoped to the partner the API key belongs to. A tenant managed by another partner is indistinguishable from one that does not exist.\n\n[Rate limits](#section/Rate-limits) are in place to ensure consistent performance for all partners.\n\n## Authentication\n\nTo interact with the Push Security Partner API, you'll need a partner API key for authentication. To create or manage your partner API keys, go to the API keys page in the Push partner console.\n\nPartner API keys are prefixed with `pspk_`. They are distinct from the tenant API keys used with the Push Security REST API, which are prefixed with `psak_`, and the two are not interchangeable.\n\nWhen generating a new key, you have two permission levels to choose from: `Read only` and `Full access`. A `Read only` key can make GET requests only — listing tenants, reading a tenant and listing a tenant's API keys. Creating, updating or deleting a tenant, and generating a SAML setup link, all require a `Full access` key.\n\nTo authenticate your API requests, include a header named `x-api-key` and set its value to your partner API key.\n\nAll API calls must be made over HTTPS.\n\n### Regions\n\nEach Push region is independent: a tenant exists in one region, and a partner API key authenticates only against the region it was issued in. Use the server for the region your tenants are in.\n\n### Revoking a key\n\nDeleting or disabling a partner API key, and removing a partner's access to the Partner API, all take effect within **10 minutes** rather than immediately. Authorization decisions are cached for that period. Plan key rotation around that window.\n\n## Rate limits\n\nThe Push Security Partner API enforces rate limiting to ensure equitable access and maintain performance.\n\nLimits apply **per API key**, not per partner, so each key you issue gets its own allowance:\n\n| Limit | Value |\n|-------|-------|\n| Requests per second | 10, with a temporary burst capacity of an additional 10 for brief intervals |\n| Requests per day | 5,000 |\n\nIf you surpass the rate limit, the API returns a 429 status code. If you exhaust the daily quota, further requests are rejected until the quota resets.\n\n## Errors\n\nThe Push Security Partner API uses standard HTTP response codes to signal the outcome of an API call. Here's what you need to know:\n\n2xx codes: These indicate that your request was successful.\n\n4xx codes: A client-side issue, usually because something is missing or incorrect in your request.\n\n5xx codes: These suggest a problem on our end, although these occurrences are infrequent.\n\n### Common Response Codes\n\n| HTTP Code | Description                                             |\n|-----------|---------------------------------------------------------|\n| 200 OK    | Your request was successfully processed.                 |\n| 400 Bad Request | Your request is missing something or is incorrect. Double-check your parameters.  |\n| 403 Forbidden | Your partner account does not have access to the Partner API, the key is unknown or disabled, or you used a `Read only` key on a write operation. |\n| 404 Not Found | The tenant does not exist or is not managed by your partner account, or the tenant's API key does not exist. |\n| 409 Conflict | The tenant is being deleted (`TENANT_DELETE_IN_PROGRESS`), already has 20 API keys (`TOO_MANY_API_KEYS`), or already has a SAML connection (`CONNECTION_ALREADY_EXISTS`). |\n| 429 Too Many Requests | You've exceeded the rate limits or the daily quota. Consider implementing exponential backoffs in your API calls.  |\n| 500 Server Error | Something's not right on our end.                      |\n| 502 Bad Gateway | A tenant's sign-in could not be provisioned or updated, or its SAML setup link could not be created. Nothing was changed, so the request can be retried. |\n| 503 Service Unavailable | The API is temporarily down for maintenance. Retry later. |\n\n## Versioning\n\nYou're currently working with version 1 of the Push Security Partner API. Should there be any breaking changes in the future, we'll bump up the API version number. If you hold an active API key, we'll send you notifications over email about the deprecation date for the older version.\n"},"compilationErrors":[],"markdown":{"partials":{},"variables":{"rbac":{"teams":["anonymous"]},"user":{},"remoteAddr":{"hostname":"push-security-prd-ba8f0f76-a2d2-42f5-aea2-d421.redocly.app","port":4000,"ipAddress":"216.73.216.123"},"lang":"default_locale","env":{"PUBLIC_REDOCLY_BRANCH_NAME":"main"}}},"pagePropGetterError":{"message":"","name":""}},"slug":"/partner-v1","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}