This API provides endpoints to create and delete Organizations, and to retrieve Organization-related data such as Projects and Requests. It allows you to fetch Project details and export request data.
Check the generic variables needed to use the API.
| Method |
Path |
Description |
| POST |
/admin/organizations |
Creates a new Organization. |
| GET |
/admin/organizations |
Retrieves all the organizations available based on a given search criteria. |
| DELETE |
/admin/organizations/{organizationId} |
Deletes the created Organization. |
| GET |
/assistants |
Returns the list of Assistants. |
| GET |
/projects |
Returns the list of Projects. |
| GET |
/project/{id} |
Returns Project details. |
| POST |
/project |
Creates a Project. |
| PUT |
/project/{id} |
Updates a Project. |
| DELETE |
/project/{id} |
Deletes a Project. |
| GET |
/project/{id}/tokens |
Returns the list of Tokens for the Project. |
| GET |
/accessControl/apitoken/validate |
Returns Organization and Project information. |
| GET |
/request/export |
Exports request data. |
| POST |
/projects/tokens |
Creates a new API Token for a specific Project. |
| PUT |
/projects/tokens/{ApiTokenId} |
Updates an API Token definition. |
| GET |
/projects/tokens/{ApiTokenId} |
Returns details of a specific API Token. |
| DELETE |
/projects/tokens/{ApiTokenId} |
Deletes a specific API Token. |
Note: Keep in mind that the searchProfiles parameter refers to RAG Assistants.
All endpoints require authentication using one of the following:
- Authorization: Bearer $GEAI_APITOKEN
- Authorization: Bearer $OAuth_accesstoken
Some endpoints may require additional headers such as:
- Content-Type: application/json
- Accept: application/json
Creates a new Organization.
This endpoint requires a $OAuth_accesstoken from the System Administrator role.
- Method: POST
- Path: $BASE_URL/v2/admin/organizations
{
"name": "string", // Organization Name
"administratorUserEmail": "string" // Must be a valid email with user assigned as the Organization member role
}
{
"administratorUserEmail": "string", // Valid email with user assigned as the Organization member role
"id": "string", // Unique identifier for the organization (UUID)
"name": "string", // Name of the Organization
"projects": [ // List of Projects associated with the Organization
{
"projectDescription": "string", // Description of the Project
"projectId": "string", // Unique identifier for the Project (UUID)
"projectName": "string", // Name of the Project
"tokens": [ // List of tokens associated with the pPoject
{
"description": "string", // Description of the token
"id": "string", // Unique identifier for the token
"name": "string", // Name of the token
"status": "string", // Status of the token (e.g., "Active")
"timestamp": "string" // Timestamp when the token was created or updated (ISO 8601 format)
}
// ... additional token
]
}
// ... additional Project
],
"tokens": [ // List of tokens associated with the Organization
{
"description": "string", // Description of the token
"id": "string", // Unique identifier for the token
"name": "string", // Name of the token
"status": "string", // Status of the token (e.g., "Active")
"timestamp": "string" // Timestamp when the token was created or updated (ISO 8601 format)
}
// ... additional token
]
}
curl -X POST "$BASE_URL/v2/admin/organizations" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OAuth_accesstoken" \
-d '{
"name": "Organization Name",
"administratorUserEmail": "user@domain.com"
}'
Retrieves all the organizations available based on a given search criteria.
| Name |
Type |
Description |
| startPage |
number |
Starting point for paging. |
| pageSize |
number |
Maximum amount of items that will be returned. |
| orderKey |
string |
Attribute in which will be based the order (only name will be considered for now). |
| orderDirection |
string |
Order direction can be asc or desc (desc is the default value). |
| filterKey |
string |
Attribute in which will be based the filter (only name will be considered for now). |
| filterValue |
string |
String value to be used as a filter. |
- Method: GET
- Path: $BASE_URL/v2/admin/organizations
- Request Body: Empty
A successful request returns a 200 status code and the details of the retrieved API Token.
{
"count": integer, // Total number of organizations matching the search criteria.
"pages": integer, // Total number of pages available.
"organizations":
{
"id": "string", // Unique identifier for the organization.
"isStationAvailable": boolean, // Indicates if the station is available for the organization.
"name": "string" // Name of the organization.
},
{
"id": "string", // Unique identifier for the organization.
"isStationAvailable": boolean, // Indicates if the station is available for the organization.
"name": "string" // Name of the organization.
},
{
"id": "string", // Unique identifier for the organization.
"isStationAvailable": boolean, // Indicates if the station is available for the organization.
"name": "string" // Name of the organization.
}
}
curl -X GET
'$BASE_URL/v2/admin/organizations?startPage=1&pageSize=20&orderKey=name&orderDirection=asc&filterKey=name&filterValue=MyOrganizationsName'
-H "Authorization: Bearer $OAuth_accesstoken" \
Deletes an Organization. This operation performs a hard delete, permanently removing the Organization and all related data. Use it with caution, since the following information will be irreversibly deleted: requests, quota limit definitions, statistics, and any other associated records.
This endpoint requires a $OAuth_accesstoken from the System Administrator role.
| Name |
Type |
Description |
| organizationId |
string |
Organization id that will be deleted. |
- Method: DELETE
- Path: $BASE_URL/v2/admin/organizations/{OrganizationId}
- Request Body: Empty
StatusCode 200 is shown when successfully deleted; otherwise, 400* is displayed with a collection of errors.
curl -X DELETE "$BASE_URL/v2/admin/organizations/{organizationId}" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OAuth_accesstoken" \
Returns a list of Assistants.
| Name |
Type |
Description |
| detail |
string |
Defines the level of detail required. The available options are summary (default) or full (optional). |
- Method: GET
- Path: $BASE_URL/v1/assistants
- Request Body: Empty
Using the default summary option will only show the first level. The full option will display revision details and Assistant composition:
{
"assistants": [
{
"assistantId": "string",
"assistantName": "string",
"intents": [ /* full option */
{
"assistantIntentDefaultRevision": "number",
"assistantIntentDescription": "string",
"assistantIntentId": "string",
"assistantIntentName": "string",
"revisions": [
{
"metadata": [
{
"key": "string",
"type": "string",
"value": "string"
},
...
],
"modelId": "string",
"modelName": "string",
"prompt": "string",
"providerName": "string",
"revisionDescription": "string",
"revisionId": "string",
"revisionName": "string",
"timestamp": "timestamp"
},
...
]
}
]
},
...
],
"projectId": "string",
"projectName": "string"
}
curl -X GET "$BASE_URL/v1/organization/assistants" \
-H "Authorization: Bearer $GEAI_APITOKEN" \
-H "Accept: application/json" \
-H "include-all: true" # Allows you to get the complete Assistants list
# using the full detail option change the URL to
$BASE_URL/v1/organization/assistants?detail=full
Keep an eye on the returned assistantId element that is needed for other related APIs.
Gets a list of Projects.
This endpoint requires a Globant Enterprise AI API token with Organization scope.
| Name |
Type |
Description |
| detail |
string |
Defines the level of detail required. The available options are summary (default) or full (optional). |
| name |
string |
Searches by Project name (equals) (optional). |
Active Projects will be listed by default. To list all Projects, use the full detail option.
- Method: GET
- Path: $BASE_URL/v1/projects
- Request Body: Empty
{
"projects": [
{
"projectActive": "boolean",
"projectDescription": "string",
"projectId": "string",
"projectName": "string",
"projectStatus": "integer" /* 0:Active, 2:Hidden */
},
...
]
}
curl -X GET "$BASE_URL/v1/organization/projects" \
-H "Authorization: Bearer $GEAI_APITOKEN" \
-H "Accept: application/json"
# using the full detail option change the URL to
$BASE_URL/v1/organization/projects?detail=full
# using the name option filter change the URL to
$BASE_URL/v1/organization/projects?name=projectName
Keep an eye on the returned projectId item value that is needed for other related APIs.
Returns Project details.
This endpoint supports Globant Enterprise AI API tokens with either Organization scope or Project scope.
| Name |
Type |
Description |
| id |
string |
GUID Project id (required) |
- Method: GET
- Path: $BASE_URL/v1/project/{id}
- Request Body: Empty
{
"organizationId": "string",
"organizationName": "string",
"projectActive": "boolean",
"projectDescription": "string",
"projectId": "string",
"projectName": "string",
"projectStatus": "integer" /* 0:Active, 2:Hidden */,
"searchProfiles": [
{
"name": "string",
"description": "string"
},
...
]
}
If the Project has a usage limit applied, the response will include information regarding the usage limit. Otherwise, the Project details are returned as follows:
{
"organizationId": "string",
"organizationName": "string",
"projectActive": "boolean",
"projectDescription": "string",
"projectId": "string",
"projectName": "string",
"projectStatus": "integer" /* 0:Active, 2:Hidden */,
"searchProfiles": [
{
"name": "string",
"description": "string"
}
],
"tokens": [
{
"description": "string",
"id": "string",
"name": "string",
"status": "string" /* Active, Blocked */,
"timestamp": "timestamp"
}
],
"usageLimit": {
"hardLimit": "number", // Upper usage limit
"id": "string", // Usage limit ID
"relatedEntityName": "string", // Name of the related entity
"remainingUsage": "number", // Remaining usage
"renewalStatus": "string", // Renewal status (Renewable, NonRenewable)
"softLimit": "number", // Lower usage limit
"status": "integer", // Status (1: Active, 2: Expired, 3: Empty, 4: Cancelled)
"subscriptionType": "string", // Subscription type (Freemium, Daily, Weekly, Monthly)
"usageUnit": "string", // Usage unit (Requests, Cost)
"usedAmount": "number", // Amount used (decimal or scientific notation)
"validFrom": "timestamp", // Start date of the usage limit
"validUntil": "timestamp" // Expiration or renewal date
}
}
curl -X GET "$BASE_URL/v1/organization/project/{id}" \
-H "Authorization: Bearer $GEAI_APITOKEN" \
-H "accept: application/json"
Creates a new Project.
This endpoint requires a Globant Enterprise AI API token with Organization scope.
- Method: POST
- Path: $BASE_URL/v1/project
{
"name": "string",
"description": "string",
"administratorUserEmail": "mail@domain.com"
}
Note that the administratorUserEmail parameter can only be used if Migration to the new Roles and Permissions Management System has been completed.
You can provide only the Project details, or optionally include the usageLimit parameter to define usage restrictions on the Project.
{
"name": "string",
"description": "string",
"administratorUserEmail": "mail@domain.com",
"usageLimit": {
"subscriptionType": "string", // Options: Freemium, Daily, Weekly, Monthly
"usageUnit": "string", // Options: Requests, Cost
"softLimit": "number", // Soft limit for usage (lower threshold)
"hardLimit": "number", // Hard limit for usage (upper threshold)
"renewalStatus": "string" // Options: Renewable, NonRenewable
}
}
The value of hardLimit must always be greater than or equal to softLimit, since both define the Project usage thresholds.
As for renewalStatus, if the subscription type is Freemium, this option will always be NonRenewable, since Freemium limits are not renewed over time.
{
"projectActive": "boolean",
"projectDescription": "string",
"projectId": "string",
"projectName": "string",
"projectStatus": "integer" /* 0:Active, 2:Hidden */,
"searchProfiles": [
{
"name": "string",
"description": "string"
},
...
],
"tokens": [
{
"description": "string",
"id": "string",
"name": "string",
"status": "string" /* Active, Blocked */,
"timestamp": "timestamp"
},
...
]
}
Note that token elements (default API Tokens) are only returned at Project creation time. You can retrieve them using the GET Tokens endpoint.
If the optional usageLimit parameter is included when creating a Project, the response will include additional information about the applied usage limits:
{
"projectActive": "boolean",
"projectDescription": "string",
"projectId": "string",
"projectName": "string",
"projectStatus": "integer" /* 0:Active, 2:Hidden */,
"searchProfiles": [
{
"name": "string",
"description": "string"
}
],
"tokens": [
{
"description": "string",
"id": "string",
"name": "string",
"status": "string" /* Active, Blocked */,
"timestamp": "timestamp"
}
],
"usageLimit": {
"hardLimit": "number", // Upper usage limit
"id": "string", // Usage limit ID
"relatedEntityName": "string", // Name of the related entity
"remainingUsage": "number", // Remaining usage
"renewalStatus": "string", // Renewal status (Renewable, NonRenewable)
"softLimit": "number", // Lower usage limit
"status": "integer", // Status (1: Active, 2: Expired, 3: Empty, 4: Cancelled)
"subscriptionType": "string", // Subscription type (Freemium, Daily, Weekly, Monthly)
"usageUnit": "string", // Usage unit (Requests, Cost)
"usedAmount": "number", // Amount used (decimal or scientific notation)
"validFrom": "timestamp", // Start date of the usage limit
"validUntil": "timestamp" // Expiration or renewal date
}
}
When the creation is not successful, StatusCode 400* will be shown with a collection of errors:
{
"errors": [
{
"id": "integer",
"description": "string"
},
...
]
}
curl -X POST "$BASE_URL/v1/organization/project" \
-H "Authorization: Bearer $GEAI_APITOKEN" \
-H "accept: application/json" \
-d '{
"name": "my Project",
"description": "My awesome Project",
"administratorUserEmail": "myemail@globant.com"
}'
curl -X POST "$BASE_URL/v1/organization/project" \
-H "Authorization: Bearer $GEAI_APITOKEN" \
-H "accept: application/json" \
-d '{
"name": "my Project",
"description": "My awesome Project",
"administratorUserEmail": "myemail@globant.com",
"usageLimit": {
"subscriptionType": "Monthly",
"usageUnit": "Requests",
"softLimit": 1,
"hardLimit": 2,
"renewalStatus": "Renewable"
}
}'
Updates a Project.
This endpoint requires a Globant Enterprise AI API token with Organization scope.
| Name |
Type |
Description |
| id |
string |
GUID Project id (required) |
- Method: PUT
- Path: $BASE_URL/v1/project/{id}
{
"name": "string", /* Required */
"description": "string"
}
{
"projectActive": "boolean",
"projectDescription": "string",
"projectId": "string",
"projectName": "string",
"projectStatus": "integer" /* 0:Active, 2:Hidden */,
"searchProfiles": [
{
"name": "string",
"description": "string"
},
...
]
}
When the creation is not successful, StatusCode 400* will be shown with a collection of errors.
curl -X PUT "$BASE_URL/v1/organization/project/{id}" \
-H "Authorization: Bearer $GEAI_APITOKEN" \
-H "accept: application/json" \
-d '{
"name":"Sample Project",
"description":"sample Project description updated"
}'
Deletes a Project.
This endpoint requires a Globant Enterprise AI API token with Organization scope.
| Name |
Type |
Description |
| id |
string |
GUID Project id (required) |
- Method: DELETE
- Path: $BASE_URL/v1/project/{id}
- Request Body: Empty
StatusCode 200 is shown when successfully deleted; otherwise, 400* is displayed with a collection of errors.
curl -X DELETE "$BASE_URL/v1/organization/project/{id}" \
-H "Authorization: Bearer $GEAI_APITOKEN" \
-H "accept: application/json"
Gets the list of API tokens for the Project.
This endpoint requires a Globant Enterprise AI API token with Organization scope.
| Name |
Type |
Description |
| id |
string |
GUID Project id (required) |
- Method: GET
- Path: $BASE_URL/v1/project/{id}/tokens
- Request Body: Empty
{
"tokens": [
{
"description": "string",
"id": "string",
"name": "string",
"status": "string" /* Active, Blocked */,
"timestamp": "timestamp"
},
...
]
}
curl -X GET "$BASE_URL/v1/organization/project/{id}/tokens" \
-H "Authorization: Bearer $GEAI_APITOKEN" \
-H "accept: application/json"
Returns information about the Organization and Project related to the provided API token.
This endpoint supports Globant Enterprise AI API tokens with either Organization scope or Project scope.
- Method: GET
- Path: $BASE_URL/v1/accessControl/apitoken/validate
- Request Body: Empty
If the endpoint execution is successful, it will return a Status 200 OK with the Organization data. In the case of a Project API token, the Project data will be included.
If the API token does not exist or is inactive, the status will be 401.
{
"organizationId": "String (GUID)",
"organizationName": "String",
"projectId": "String (GUID)",
"projectName": "String",
"scope": "String" /* Options: Pia.Data.Organization, Pia.Data.Project */
}
curl -X GET "$BASE_URL/v1/accessControl/apitoken/validate" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $GEAI_APITOKEN"
Exports request data.
This endpoint requires a Globant Enterprise AI API token with Project scope.
| Name |
Type |
Description |
| assistantName |
string |
Assistant name (optional) |
| status |
string |
Status (optional) |
| skip |
integer |
Number of entries to skip (optional) |
| count |
integer |
Number of entries to retrieve (optional) |
- Method: GET
- Path: $BASE_URL/v1/request/export
- Request Body: Empty
{
"items": [
{
"assistant": "string",
"intent": "string",
"timestamp": "string",
"prompt": "string",
"output": "string",
"inputText": "string",
"status": "string"
},
...
]
}
curl -X GET "$BASE_URL/v1/organization/request/export?assistantName=example&status=succeeded&count={count}&skip={skip}" \
-H "Authorization: Bearer $GEAI_APITOKEN" \
-H "Accept: application/json"
Creates a new API Token for a specific Project.
This endpoint requires a Globant Enterprise AI API token with Organization scope.
- Method: POST
- Path: $BASE_URL/v2/projects/tokens
{
"Name": "string", // Name of the API Token that will be created.
"Description": "string" // Brief description of the API Token that will be created.
}
A successful request returns a 201 status code and the details of the created API Token.
{
"description": "string", // Should match with the requested description.
"id": "string", //{ApiTokenId} to be used in other endpoints.
"name": "string", // Should match with the requested name.
"scope": "string", // The scope of permissions granted by this API Token (e.g., access to specific resources or APIs).
"status": "string", // The current status of the API Token (e.g., Active, Inactive, Revoked).
"timestamp": "string" // The timestamp indicating when the API Token was created.
}
curl -X POST "$BASE_URL/v2/projects/tokens" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $GEAI_APITOKEN" \
-H "ProjectId: $GEAI_PROJECT_ID" \
-d '{
"Name": "My API Token",
"Description": "Used for testing"
}'
Updates an API Token definition.
This endpoint supports Globant Enterprise AI API tokens with either Organization scope or Project scope.
| Name |
Type |
Description |
| ApiTokenId |
string |
API Token id (required) |
- Method: PUT
- Path: $BASE_URL/v2/projects/tokens/{ApiTokenId}
{
"description": "string" // Updated text to be published.
}
A successful request returns a 200 status code and the details of the updated API Token.
{
"description": "string", // Should match with the updated requested description.
"id": "string", //{ApiTokenId}.
"name": "string", // Should match with the update requested.
"scope": "string", // The scope of permissions granted by this API Token (e.g., access to specific resources or APIs).
"status": "string", // The current status of the API Token (e.g., Active, Inactive, Revoked). Might be updated upon request.
"timestamp": "string", // The timestamp indicating when the API Token was last updated.
}
curl -X PUT "$BASE_URL/v2/projects/tokens/{ApiTokenId}" \
-H "Content-Type: application/json" \
-H "Authorization:Bearer $GEAI_APITOKEN" \
-d '{
"description": "Updated description"
}'
Returns details of a specific API Token.
This endpoint requires a Globant Enterprise AI API token with Organization scope.
| Name |
Type |
Description |
| ApiTokenId |
string |
API Token id (required) |
- Method: GET
- Path: $BASE_URL/v2/projects/tokens/{ApiTokenId}
- Request Body: Empty
A successful request returns a 200 status code and the details of the retrieved API Token.
{
"description": "string", // Should match with the API Token description.
"id": "string", //{ApiTokenId}.
"name": "string", // Should match with the API Token requested.
"scope": "string", // The scope of permissions granted by this token (e.g., access to specific resources or APIs).
"status": "string", // The current status of the API Token (e.g., Active, Inactive, Revoked). Might be updated upon request.
"timestamp": "string", // The timestamp indicating when the API Token was last updated.
}
curl -X GET "$BASE_URL/v2/projects/tokens/{ApiTokenId}" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $GEAI_APITOKEN"
Deletes a specific API Token.
This endpoint requires a Globant Enterprise AI API token with Organization scope.
| Name |
Type |
Description |
| ApiTokenId |
string |
API Token id (required) |
- Method: DELETE
- Path: $BASE_URL/v2/projects/tokens/{ApiTokenId}
- Request Body: Empty
StatusCode 200 is shown when successfully deleted; otherwise, 400* is displayed with a collection of errors.
curl -X DELETE "$BASE_URL/v2/projects/tokens/{ApiTokenId}" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $GEAI_APITOKEN"