# JENNi Portal API

**Canonical:** https://apis.io/apis/jennipro-com/jennipro-com-portal-api/  
**Provider:** JENNi — https://apis.io/providers/jennipro-com/  
**Base URL:** https://prod.jennipro.net

JENNi Portal API is one of 12 APIs that [JENNi](https://apis.io/providers/jennipro-com/) publishes on the [APIs.io](https://apis.io/) network, described by a machine-readable OpenAPI specification. Tagged areas include Portal. The published artifact set on APIs.io includes an OpenAPI specification.

The partner self-service portal: what a signed-in partner USER does with their account — see who they are and which keys their tenant holds, ask JENNi for a key, more scope, production access or help, follow those requests, and claim an approved key (the one moment its secret is shown). Where the deployment advertises `self_serve.keys` (`GET /provider/v1/portal/me`), a sandbox tenant also mints its own keys (`POST /provider/v1/portal/keys`) and rotates or revokes them (`POST /provider/v1/portal/keys/{id}/transitions`) without an operator; `GET /provider/v1/portal/health` is the integration card — tenant, key summary and recent ingestion in one read that degrades section by section instead of failing. These routes are called with a partner access token (`Authorization: Bearer …`, obtained from identity-service's public `POST /v1/partner/auth/login`), never with an API key: a key on a portal route is a `403`, and a partner token on a key route is a `401`. provider-bff forwards each call to identity-service, which owns partner accounts, requests, grants and keys; identity's own refusal comes back with its status and problem `type`. Ships dark behind `ENABLE_PORTAL_ROUTES`.

## Operations (38)

| Method | Path | Summary |
|---|---|---|
| GET | `/provider/v1/portal/api-requests` | List redacted API request evidence |
| GET | `/provider/v1/portal/api-requests/{id}` | Get redacted API request evidence |
| GET | `/provider/v1/portal/grants` | List your key grants |
| POST | `/provider/v1/portal/grants/{id}/transitions` | Claim a grant (mint the key) |
| GET | `/provider/v1/portal/health` | Integration health card |
| GET | `/provider/v1/portal/integrations` | List connector integrations with health evidence |
| GET | `/provider/v1/portal/integrations/{id}` | Get one connector integration |
| POST | `/provider/v1/portal/keys` | Mint an API key (self-serve) |
| POST | `/provider/v1/portal/keys/{id}/transitions` | Rotate or revoke an API key |
| GET | `/provider/v1/portal/me` | Session: who is signed in |
| GET | `/provider/v1/portal/merchants` | List authorized merchants |
| GET | `/provider/v1/portal/merchants/{id}` | Get an authorized merchant |
| GET | `/provider/v1/portal/notification-preferences` | Get notification preferences |
| PATCH | `/provider/v1/portal/notification-preferences` | Update notification preferences |
| GET | `/provider/v1/portal/products/{id}` | Get one authorized canonical product |
| GET | `/provider/v1/portal/requests` | List your requests |
| POST | `/provider/v1/portal/requests` | Ask JENNi for something |
| GET | `/provider/v1/portal/requests/{id}` | Read one request |
| GET | `/provider/v1/portal/runs` | List provider runs |
| GET | `/provider/v1/portal/runs/{id}` | Get a provider run |
| GET | `/provider/v1/portal/runs/{id}/items` | List provider run item outcomes |
| POST | `/provider/v1/portal/sessions/current/transitions` | Sign out |
| GET | `/provider/v1/portal/stores` | List authorized stores |
| GET | `/provider/v1/portal/stores/{store_id}` | Get an authorized store |
| GET | `/provider/v1/portal/stores/{store_id}/channel-grants` | List channel grants |
| POST | `/provider/v1/portal/stores/{store_id}/channel-grants` | Create a channel grant |
| POST | `/provider/v1/portal/stores/{store_id}/channel-grants/{grant_id}/transitions` | Revoke a channel grant |
| GET | `/provider/v1/portal/stores/{store_id}/health` | Get bounded store health |
| GET | `/provider/v1/portal/stores/{store_id}/listings` | List eligibility and publication evidence separately |
| GET | `/provider/v1/portal/stores/{store_id}/products` | List canonical products and levels for a store |
| GET | `/provider/v1/portal/support/cases` | List support cases |
| POST | `/provider/v1/portal/support/cases` | Create a support case |
| GET | `/provider/v1/portal/support/cases/{id}` | Get a support case |
| POST | `/provider/v1/portal/support/cases/{id}/transitions` | Reply, resolve, or reopen a support case |
| POST | `/provider/v1/portal/team/invites` | Invite a developer |
| POST | `/provider/v1/portal/team/invites/accept` | Accept an invite |
| GET | `/provider/v1/portal/team/members` | List the team |
| POST | `/provider/v1/portal/team/members/{id}/transitions` | Remove a member or change a role |

## Machine-readable artifacts (1)

- **OpenAPI** — https://artifacts.apis.io/jennipro-com/openapi/jennipro-com-portal-api-openapi.yml

## Other JENNi APIs (11)

- [JENNi Account API](https://apis.io/apis/jennipro-com/jennipro-com-account-api/)
- [JENNi Brand portal API](https://apis.io/apis/jennipro-com/jennipro-com-brand-portal-api/)
- [JENNi Catalog API](https://apis.io/apis/jennipro-com/jennipro-com-catalog-api/)
- [JENNi Channel API](https://apis.io/apis/jennipro-com/jennipro-com-channel-api/)
- [JENNi Events API](https://apis.io/apis/jennipro-com/jennipro-com-events-api/)
- [JENNi Inventory API](https://apis.io/apis/jennipro-com/jennipro-com-inventory-api/)
- [JENNi Retailers API](https://apis.io/apis/jennipro-com/jennipro-com-retailers-api/)
- [JENNi Runs API](https://apis.io/apis/jennipro-com/jennipro-com-runs-api/)
- [JENNi Service API](https://apis.io/apis/jennipro-com/jennipro-com-service-api/)
- [JENNi Stores API](https://apis.io/apis/jennipro-com/jennipro-com-stores-api/)
- [JENNi Webhooks API](https://apis.io/apis/jennipro-com/jennipro-com-webhooks-api/)

## Tags

Portal

---

Profiled by [API Evangelist](https://apievangelist.com) and published on [APIs.io](https://apis.io/apis/jennipro-com/jennipro-com-portal-api/). The API's provider profile, Kin Score and agent-readiness rating are at https://apis.io/providers/jennipro-com/.
