G2 Developer Portal

Prev Next
This content is currently unavailable in Portuguese. You are viewing the default (English) version.

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

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, 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

Your organization slug becomes part of your Developer Portal URL (https://my.g2.com/developers/your-slug). If your desired slug is already taken, you will receive an error.

G2 recommends choosing a slug that closely matches your organization name or domain.

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.

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

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 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

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, 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.

  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.

  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

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.

  • 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 endpoint.

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

Personal Access Tokens

The Personal Access Tokens tab enables you to generate new tokens and manage the endpoint permissions associated with each token. Personal access tokens are used to authenticate requests for G2 content.

How to generate an API token using G2 Developer Portal

For a full list of available endpoints, refer to G2's partner API reference documentation.

To create a new personal access token:

  1. Navigate to the Personal Access Tokens tab, then select Generate Token.
  2. Enter a Name and optionally enter a Description for the API token.
  3. 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.
  4. Select Generate Token. G2 adds your token to the API Tokens panel.
  5. Select the Eye to reveal the token.

Eye icon highlighted to reveal API token in G2 Developer Portal

Personal 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

To use your token with G2's syndication APIs, refer to the Get started with G2 review syndication and Get started with G2 taxonomy syndication documentation.

Testing your personal access token

After generating a personal access token, you can test it using G2's API reference documentation. 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

To test your token:

  1. In the Personal 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

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

Try it out button highlighted in Swagger UI

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

Sample response


{
  "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",