---
title: "G2 Developer Portal"
slug: "developer-portal"
updated: 2026-05-05T18:40:47Z
published: 2026-05-05T18:40:47Z
---

> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.g2.com/llms.txt
> Use this file to discover all available pages before exploring further.

# G2 Developer Portal

G2 Developer Portal provides secure, self-serve access to API tokens, test environments, and documentation, enabling you to build and optimize with G2’s API.

![Interface showing the steps to generate an API token in the G2 Developer Portal](https://cdn.document360.io/1759d01c-b118-4f31-81f7-e4011071a6d4/Images/Documentation/developer-portal-new-token-flow.gif)

## Getting started

To begin using the Developer Portal, follow these steps to create an account and set up your organization:

1. Navigate to [G2 Developer Portal](https://my.g2.com/developers), then select **Create an account**.
2. Verify your email.
3. When prompted, enter your *Organization Name* and choose a unique *Organization Slug*.

![Prompt to enter organization details during G2 Developer Portal account setup](https://cdn.document360.io/1759d01c-b118-4f31-81f7-e4011071a6d4/Images/Documentation/developer-portal-create-organization%20%281%29.png)

Your organization slug becomes part of your Developer Portal URL (`https://my.g2.com/developers/your-slug`).

If the slug is already in use, you will be prompted to contact your organization’s G2 admin to be added to the organization. This grants access to the Developer Portal.

Once your organization is set up, use your organization-specific Developer Portal URL to log in at any time.

## OAuth apps

The OAuth Apps tab enables you to register apps that connect to G2 and authenticate on behalf of users or organizations using a secure authorization process.

![The OAuth apps tab in G2's developer portal.](https://cdn.document360.io/1759d01c-b118-4f31-81f7-e4011071a6d4/Images/Documentation/oauth-apps-register-app%281%29.gif)

### When to use an OAuth app

Use an OAuth app when your integration must access G2 data securely with user authorization.

Typical scenarios include third-party integrations, internal tools that need limited access to specific data, and authorization flows that need refresh tokens or long-lived access.

### Registering an OAuth app

![Select New Auth App to access the new oauth app panel](https://cdn.document360.io/1759d01c-b118-4f31-81f7-e4011071a6d4/Images/Documentation/oauth-apps-register-app.gif)

To register an OAuth app:

1. Navigate to the **OAuth Apps** tab, then select **New OAuth App**.
2. In the *New OAuth App* panel, enter a *Name*, *Privacy Policy URL*, *Terms of Service URL*, and *Redirect URL* for your app. Optionally, upload an image.

Your *Redirect URL* must exactly match the one used in your app’s OAuth flow. Minor differences will cause authorization errors.

*Privacy Policy* and *Terms of Service* URLs must be valid public links. Placeholder or broken links may prevent your app from being approved.

1. Select the **Confidential** checkbox if your app can securely store client secrets (such as a server-side application). Leave it unchecked for public clients like mobile or browser-based apps.
2. In the *Permissions* panel, select the **Read** checkbox next to each endpoint your app should have access to. Endpoints without a selection will not be accessible using this app’s credentials.

Each permission controls which data the OAuth app can access through the G2 API. Review the [API reference documentation](https://data.g2.com/api/v2/docs/index.html) for details about each endpoint.

1. Select **Save**.

Registered apps appear in the OAuth Apps panel. Select **Details** to access the *Client ID* and *Secret*.

![dev-portal-oauth-apps-details.png](https://cdn.document360.io/1759d01c-b118-4f31-81f7-e4011071a6d4/Images/Documentation/dev-portal-oauth-apps-details.png)

Once your app is registered, use your *Client ID* and *Secret* in your app to initiate the OAuth flow and request access tokens based on the scopes selected.

For security, keep your client secret private. Never expose it in public repositories or frontend code.

### Retrieving an access token with Postman

To test the OAuth flow, first register a new OAuth app for Postman. After the app is registered, you can use Postman to run the authorization flow and retrieve an access token.

**Steps in the G2 Developer Portal**:

1. Navigate to the **OAuth Apps** tab, then select **New OAuth App**.
2. In the *New OAuth App* panel, enter a *Name*, *Privacy Policy URL*, *Terms of Service URL*, and enter the *Redirect URL* as Postman’s callback URL: `https://oauth.pstmn.io/v1/browser-callback`
3. In the *Permissions* panel, select the **Read** checkbox next to each endpoint your app needs to access.

**Steps in Postman**:

1. Open [Postman](https://www.postman.com/), and create a new request.
2. In the **Authorization** tab, select **OAuth 2.0** from the *Auth Type* dropdown.

![The auth type drop down menu in postman.](https://cdn.document360.io/1759d01c-b118-4f31-81f7-e4011071a6d4/Images/Documentation/developer-portal-postman-auth-type.png)

1. In the *Configure New Token* panel, enter the *Auth URL*, *Access Token URL*, *Client ID*, and *Client Secret* exactly as they appear in the *OpenID Connect Details* panel of your registered OAuth app.

The *OpenID Connect Details* panel is in the OAuth app details screen in the G2 Developer Portal. Copy each value directly to avoid typos.

![The OpenID Connect Details panel in the G2 developer portal.](https://cdn.document360.io/1759d01c-b118-4f31-81f7-e4011071a6d4/Images/Documentation/dev-portal-connect-details.png)

1. In the **Scope** field, enter only the scopes that correspond to the *Permissions* you enabled for this app. Example: `openid profile products.read products.reviews.read`

![The Scope field within Postman](https://cdn.document360.io/1759d01c-b118-4f31-81f7-e4011071a6d4/Images/Documentation/developer-portal-postman-scopes.png)

The scopes you enter in Postman must align with the *Permissions* you selected when registering your OAuth app. For example, if you enabled *Read access to Products and Reviews*, request the scopes `products.read products.reviews.read` in Postman.

If you encounter the error **requested scope is invalid, unknown, or malformed**:

- Verify the exact scope names in the *App Details* panel in your OAuth app.

![Permissions field within the App Details panel.](https://cdn.document360.io/1759d01c-b118-4f31-81f7-e4011071a6d4/Images/Documentation/dev-portal-permissions.png)

- Remove any scope that does not have a matching **Read** Permission enabled in your OAuth app.
- Add scopes back one at a time until the request succeeds.

1. Select **Get New Access Token**.
2. Complete the authorization flow. A new access token appears in Postman.

You can select **Use Token** to attach it to your request, then send the request to a [G2 API](https://data.g2.com/api/v2/docs/index.html) endpoint.

For a quick test, call the `/api/v2/products` endpoint. If your setup is correct, the request returns product data from G2.

## Access Tokens

The Access Tokens tab enables you to generate new tokens and manage the endpoint permissions associated with each token.

![How to generate an API token using G2 Developer Portal](https://cdn.document360.io/1759d01c-b118-4f31-81f7-e4011071a6d4/Images/Documentation/developer-portal-new-token-flow.gif)

For a full list of available endpoints, refer to G2's partner [API reference documentation](https://data.g2.com/api/v2/docs/index.html).

To create a new access token:

1. Navigate to the **Access Tokens** tab, then select **Generate Token**.
2. Enter a *Name* and optionally enter a *Description* for the API token.
3. Select a *Resource Owner* to determine how the token is scoped:
  - **User** to create a personal access token.
  - **Organization** to create an organization token.
4. In the *Permissions* panel, use the **Access** dropdown for each endpoint to select the access level. Endpoints without a selection won’t be accessible with the token.
5. Select **Generate Token**. G2 adds your token to the *API Tokens* panel.
6. Select the **Eye** to reveal the token.

![Eye icon highlighted to reveal API token in G2 Developer Portal](https://cdn.document360.io/1759d01c-b118-4f31-81f7-e4011071a6d4/Images/Documentation/developer-portal-eye-icon.png)

Access tokens expire one year after creation and must be regenerated for continued access.

Select **Details** to view the permissions assigned to the token.

![GIF showing how to select Details to view the permissions assigned to the token](https://cdn.document360.io/1759d01c-b118-4f31-81f7-e4011071a6d4/Images/Documentation/developer-portal-see-details.gif)

To use your token with G2's syndication APIs, refer to the [Get started with G2 review syndication](https://documentation.g2.com/partners/docs/get-started-with-g2-review-syndication) and [Get started with G2 taxonomy syndication](https://documentation.g2.com/partners/docs/get-started-with-g2-taxonomy-syndication) documentation.

### Testing an access token

After generating an access token, you can test it using [G2's API reference documentation](https://data.g2.com/api/v2/docs/index.html). This interactive documentation enables you to authenticate with your token and make API calls directly in the browser.

![GIF showing how to copy an API token and open Swagger from Developer Resources in the G2 Developer Portal](https://cdn.document360.io/1759d01c-b118-4f31-81f7-e4011071a6d4/Images/Documentation/developer-portal-copy-token.gif)

To test your token:

1. In the *Access Tokens* panel, select the **Eye** to reveal the token and then copy it.
2. Navigate to the **Developer Resources** tab, then select **Visit Documentation**.
3. Select **Authorize**, then paste your API token in the *Value* field and select **Authorize**.

![GIF showing how to select Authorize and paste the API token into the Value field in Swagger](https://cdn.document360.io/1759d01c-b118-4f31-81f7-e4011071a6d4/Images/Documentation/developer-portal-authorize-swagger.gif)

1. Select the endpoint, then select **Try it out**.

![Try it out button highlighted in Swagger UI](https://cdn.document360.io/1759d01c-b118-4f31-81f7-e4011071a6d4/Images/Documentation/developer-portal-try-it-out.png)

1. Enter any required or optional parameters, then select **Execute**.

**Moving from testing to production workflows?** G2 Technical Consulting helps teams design and implement scalable integrations and data workflows using G2 APIs. [Contact G2 Technical Consulting](https://sell.g2.com/g2-technical-consulting)

#### Sample response

```json

{
"data": [
{
"id": "aaaaaaaa-bbbb-4ccc-8ddd-000000000028",
"type": "products",
"attributes": {
"detail_description": "Description",
"domain": "example.com",
"g2_url": "http://www.lvh.me:63479/products/product-one/reviews",
"image_url": null,
"name": "Product One",
"public_detail_url": "https://www.example.com",
"review_count": 0,
"slug": "product-one",
"star_rating": 2.5,
"write_review_url": "http://www.lvh.me:63479/products/product-one/take_survey"
},
"relationships": {
"categories": {
"data": [
{
"id": "aaaaaaaa-bbbb-4ccc-8ddd-000000000025",
"type": "product_categories"
}
]
},
"discussions": {
"data": [
{
"id": "aaaaaaaa-bbbb-4ccc-8ddd-000000000011",
"type": "discussions"
}
]
},
"vendor": {
"data": {
"id": "aaaaaaaa-bbbb-4ccc-8ddd-000000000021",
"type": "vendors"
}
}
}
}
],
"included": [
{
"id": "aaaaaaaa-bbbb-4ccc-8ddd-000000000025",
"type": "product_categories",
"attributes": {
"name": "test"
}
},
{
"id": "aaaaaaaa-bbbb-4ccc-8ddd-000000000011",
"type": "discussions",
"attributes": {
"attribution": {
"text": "Verified by G2",
"url": "http://www.lvh.me:63479/products/product-one/reviews",
"logo": "http://www.lvh.me:63479/assets/g2-logo-rorange.svg"
},
"comments_count": 0,
"comments_present": false,
"content": "Some discussion stuff...",
"created_at": "2022-01-01T00:00:00.000-06:00",
"is_public": true,
"official_response_present": false,
"product_id": "aaaaaaaa-bbbb-4ccc-8ddd-000000000028",
"product_name": "Product One",
"report_url": "http://www.lvh.me:63479/discussions/a-discussion/concerns/new",
"seeded": false,
"slug": "a-discussion",
"title": "A Discussion",
"type": "product_question",
"url": "http://www.lvh.me:63479/discussions/a-discussion",
"vendor_question": false,
"verified_current_user": true,
"votes_down": 0,
"votes_up": 1,
"votes_total": 1
},
"relationships": {
"user": {
"data": {
"id": "aaaaaaaa-bbbb-4ccc-8ddd-000000000008",
"type": "users"
}
},
"comments": {
"data": []
}
}
},
{
"id": "aaaaaaaa-bbbb-4ccc-8ddd-000000000021",
"type": "vendors",
```
