Step 4: Create an organization

You are currently viewing version 1.5 of the Apigee hybrid documentation.This version is end of life. You should upgrade to a newer version. For more information, seeSupported versions.

You've created a Google Cloud account and project and enabled the APIs. Now you can create yourorganization.

Note: The name of your Apigee hybrid organization must match your Google Cloud Project ID you created inStep 2: Create a Google Cloud project.

Prerequisite

To create an organization, you must meet one of the following conditions:

  • Have an evaluation account. Evaluation accounts expire after 60 days. At that time, the organization willbe deleted.
  • Have a paid account

If neither of these is true, then you must contactApigee Sales before you can continue.

About org creation

When you create an organization, you then bind it to your Google Cloud project. The process of binding an organization to a Google Cloud project is known asprovisioning (which is just a fancy word forset up).

When provisioning an organization, keep the following in mind:

  • Brand New: You cannot provision anexisting Apigee organization. You must create a new, hybrid-only organization.
  • Familiar: Ahybrid-enabled organization is similar to a traditional Apigee organization, except that it is bound to a Google Cloud project. (It is not the same as aGoogle Cloud organization or anApigee organization.)
  • Singular: You can bind a single a Google Cloud project to a single Apigee organization only, and vice-versa.

After you successfully bind a new organization, you can manage users and roles with the Google Cloud Console while you develop, deploy, and analyze your API proxies with either the hybrid APIs or the UI. For more information about organizations, seeVersioning and terminology.

To create a new organization and provision it:

Note:If you have an Apigee evaluation account, theorganization you create will expire after 60 days. At that time, the organization willbe deleted.
  1. On the command line, get yourgcloud authentication credentials, as the following example shows:

    TOKEN=$(gcloud auth print-access-token)

    To check that your token was populated, useecho, as the following example shows:

    echo $TOKEN

    This should display your token as an encoded string.

    For more information, seegcloud command-line tool overview.

  2. Create the following environment variables for the elements of the organization. You will use these in the command to create the org.Tip: Use theecho $variable-name command to verify that the environment variables are properly set.
  3. Send an authenticatedPOST request to theCreate organizations API.

    The following example shows the request structure that creates an organization:

    curl -H "Authorization: Bearer$TOKEN" -X POST -H "content-type:application/json" \  -d '{    "name":"'"$ORG_NAME"'",    "displayName":"'"$ORG_DISPLAY_NAME"'",    "description":"'"$ORGANIZATION_DESCRIPTION"'",    "runtimeType":"'"$RUNTIMETYPE"'",    "analyticsRegion":"'"$ANALYTICS_REGION"'"  }' \  "https://apigee.googleapis.com/v1/organizations?parent=projects/$PROJECT_ID"
    Tip:The quotation mark structure ("'") in the previous code sample is needed to pass the values of the environment variables within the JSON body.

    On a successful creation request, the organizations API should respond with a message similar to the following:

    {"name":"organizations/org_name/operations/long_running_operation_ID","metadata":{"@type":"type.googleapis.com/google.cloud.apigee.v1.OperationMetadata","operationType":"INSERT","targetResourceName":"organizations/org_name","state":"IN_PROGRESS"}}

    Where:

    • long_running_operation_ID is the UUID of an asynchronous, long-running operation. You can use this ID to check the status of your organization creation request (described in step 5).
    • org_name is the ID of your new organization that is currently being created.

    As thestate property in the response indicates, Apigee has started to create the new organization, so its state isIN_PROGRESS. This process can take several minutes.

    If you get an error, seeTroubleshooting organization creation.

  4. Save the long-running operation ID to an environment variable. It will be useful for future management tasks.

    Syntax

    export LONG_RUNNING_OPERATION_ID=long_running_operation_ID

    Example

    export LONG_RUNNING_OPERATION_ID=6abc8a72-46de-f9da-bcfe-70d9ab347e4f
  5. You can check the status of the long-running operation whose ID Apigee returned on your initial creation request. To do this, use the operations API. For example:
    curl -H "Authorization: Bearer$TOKEN" \  "https://apigee.googleapis.com/v1/organizations/$ORG_NAME/operations/$LONG_RUNNING_OPERATION_ID"

    The following examples show possible responses to this request:

    IN_PROGRESS

    If Apigee is still creating the organization, Apigee responds with a status ofIN_PROGRESS. For example:

    {"name":"organizations/org_name/operations/long_running_operation_ID","metadata":{"@type":"type.googleapis.com/google.cloud.apigee.v1.OperationMetadata","operationType":"INSERT","targetResourceName":"organizations/org_name","state":"IN_PROGRESS"}}

    You should wait a little longer before attempting to verify that the creation process is complete.

    FINISHED

    When the organization has been provisioned, the state of the long-running operation isFINISHED. For example:

    {"name":"organizations/org_name/operations/long_running_operation_ID","metadata":{"@type":"type.googleapis.com/google.cloud.apigee.v1.OperationMetadata","operationType":"INSERT","targetResourceName":"organizations/org_name","state":"FINISHED"},"done":true,"response":{"@type":"type.googleapis.com/google.cloud.apigee.v1.Organization","name":"org_name","displayName":"display_name","description":"description","createdAt":"1600817805771","lastModifiedAt":"1600817805771","properties":{"property":[{"name":"features.hybrid.enabled","value":"true"},{"name":"features.mart.connect.enabled","value":"true"}]},"analyticsRegion":"us-central1","runtimeType":"HYBRID","subscriptionType":"TRIAL"}}

    If you did not enter a description, then that field does not appear in the response.

Congratulations!

You have created a new organization and it is ready for you to use. Continue toStep 5: Add a domain and reserve a static IP.

View organization details

You can view the metadata details for the organization you created using an Apigee API. You can also use an API to list all of the organizations to which your Google Cloud account has access. To perform these actions, you use theorganizations API.

Before trying the APIs, refresh your authorization token:

TOKEN=$(gcloud auth print-access-token)

Get org details

To get details about a single organization:

Send aGET request (with no body) to the followingGet organizations API endpoint:

https://apigee.googleapis.com/v1/organizations/org_name

The following example gets details about thehybrid-example organization:

curl -H "Authorization: Bearer $TOKEN" \  "https://apigee.googleapis.com/v1/organizations/hybrid-example"

The response to your request contains details about the specified organization in JSON format.

The following example shows a response with details about thehybrid-example organization:

{"name":"organizations/org_name/operations/long_running_operation_ID","metadata":{"@type":"type.googleapis.com/google.cloud.apigee.v1.OperationMetadata","operationType":"INSERT","targetResourceName":"org_name","state":"FINISHED"},"done":true,"response":{"@type":"type.googleapis.com/google.cloud.apigee.v1.Organization","name":"org_name","displayName":"display_name","description":"description","createdAt":"1600817805771","lastModifiedAt":"1600817805771","properties":{"property":[{"name":"features.hybrid.enabled","value":"true"},{"name":"features.mart.connect.enabled","value":"true"}]},"analyticsRegion":"us-central1","runtimeType":"HYBRID","subscriptionType":"TRIAL"}}

List orgs

To get a list of all organizations to which your Google Cloud account has access:

Send aGET request (with no body) to the followingList organizations API endpoint:

https://apigee.googleapis.com/v1/organizations

For example:

curl -H "Authorization: Bearer $TOKEN" "https://apigee.googleapis.com/v1/organizations"

The response to your request contains an array of all hybrid-enabled organizations that you have access to, in JSON format.

The following example shows a response with a single organization,hybrid-example:

{  "organizations": [    {      "organization": "hybrid-example",      "projectIds": [        "hybrid-example"      ]    }  ]}

Troubleshooting organization creation

When you create an organization with theCreate organizations API, you might get an error response. Responses look like the following:

{  "error": {    "code":HTTP_error_code,    "message": "short_error_message",    "status": "high_level_error_type",    "details": [      {        "@type": "specific_error_type",        "detail": "expanded_error_description"      }    ]  }}

The following example shows a response to a common error—the organization ID containsillegal characters (uppercase characters are not allowed in organization IDs):

{"error":{"code":400,"message":"invalid Organization ID\"MY-ORG\":\"MY-ORG\" is an invalid Organization ID","status":"INVALID_ARGUMENT","details":[{"@type":"","detail":"[ORIGINAL ERROR] generic::invalid_argument: invalid Organization ID\"MY-ORG\":\"My-ORG\" is an invalid Organization ID [google.rpc.error_details_ext]{message:\"invalid Organization ID\\\"MY-ORG\\\":\\\"MY-ORG\\\" is an invalidOrganizationID\" }"}]}}

In this case, you could rename the organization with lowercase letters and resend your request.

The following table lists errors you might receive and potential resolutions when you try to create a new organization:

HTTP Error CodeHTTP ErrorDescription
400Invalid JSON payload receivedEither the structure of the data in your request contains a syntax error or the path to the endpoint is incorrect.
400Invalid organization IDThe organization ID that you request cannot contain uppercase letters or any special characters other than hyphens. It must contain only lowercase letters, numbers, and/or hyphens. It can be up to a maximum of 32 characters long.
400Unsupported analytics regionYou either did not specify the value of theanalyticsRegion in your request body, or the value you specified is not one of the valid options.
400Does not have an Apigee entitlementYour Google Cloud project (that you created inStep 2: Create a Google Cloud project) has not yet been hybrid enabled. This could indicate an issue with your billing or some other error related to your Google Cloud account. For more information, contactApigee Sales.
401Request had invalid authentication credentialsYourgcloud authentication token is either bad or outdated, or you did not include one in the request. Generate a new token and resend the address.
403Permission denied on resource projectproject_IDYou might have sent a request that contained an incorrect project ID or path.
403Unable to retrieve project informationThe organization has not yet been created or provisioned. You can issue a request to theOperations API to check the status of the long-running operation, as described in the step 5.
409Organization already existsYou tried to create more than one organization for the Google Cloud project. You can only create one organization per project.
409Orgproposed_org_name already existsYou tried to create an organization that has the same ID as one that already exists. Organization IDs must be unique across all hybrid customers. Resubmit with a new proposed organization ID; for example, append a numeric value to the end of the previous ID that you tried.
1234(NEXT) Step 5: Create an environment group

Except as otherwise noted, the content of this page is licensed under theCreative Commons Attribution 4.0 License, and code samples are licensed under theApache 2.0 License. For details, see theGoogle Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

Last updated 2026-02-18 UTC.