Overview
DataGOL Custom Agents are fully configurable AI assistants that combine your company’s data sources (workspaces, knowledge bases, connectors), external tools (MCP servers), sub-agents, and voice capabilities into a single deployable interface. The lifecycle of a Custom Agent is organized into the following groups:Create Agent
Create a thread
Converse
Sharing and Permissions
Fetch Agent Permissions
GET /noCo/api/v2/elementPermissions/CUSTOM_AGENT/{agentId} — verify who currently has access to the agent.List Team Members
GET /idp/api/v1/team — fetch the full team roster to populate the share dialog with user IDs and display names.Misc
Authentication
Every request to the DataGOL backend requires a signed JWT passed as a Bearer token.Tokens are issued by the DataGOL Identity Provider (
/idp) after login. They embed the user’s companyId, userId, roles, and permissions. Tokens are short-lived — refresh them before they expire.Required headers for every request
| Header | Value | Required |
|---|---|---|
Authorization | Bearer <jwt_token> | Yes |
Content-Type | application/json | Yes |
Accept | */* | Yes |
Optional / contextual headers
| Header | Value | When to send |
|---|---|---|
Referer | https://your-app.datagol.ai/ | Recommended — used for CORS validation |
Origin | https://your-app.datagol.ai | Required for cross-origin browser requests |
credentials | include | Required only for the Streaming API |
Base URLs
| Service | Environment | Base URL | Purpose |
|---|---|---|---|
| Backend API | Production | https://be.datagol.ai | Agent CRUD, conversations, permissions |
| AI Core | Production | https://ai.datagol.ai | Chat completion, streaming |
Reference APIs
Supporting Lookups
Before creating an agent you will typically fetch the IDs you need:GET List All Custom Agents
GET /customAgents/api/v1
Returns all Custom Agents accessible to the authenticated user within their company tenant.
Response — array of agent summaries including id, name, description, isPublished, and configs.
GET Get Custom Agent by ID
GET /customAgents/api/v1/{agentId}
The UUID of the Custom Agent returned from the create or list endpoint.
GET List All Workspaces
GET /noCo/api/v2/workspaces
Returns all workspaces in the company tenant. Use id values as workspaceId in connector objects.
GET Search Workspaces and Workbooks
GET /noCo/api/v2/workspaces/search
Used by the Knowledge Base section in the agent builder UI. Returns a flat list of all workbooks (type TABLE) across every workspace the authenticated user can access. Group the results by workspaceId / workspaceName to render the workspace → workbook tree shown in the UI.
This is the endpoint you should call when populating the workbook picker. Unlike
GET /noCo/api/v2/workspaces (which returns workspace metadata only), this endpoint returns the individual workbooks inside each workspace in a single call.| Parameter | Type | Required | Description |
|---|---|---|---|
query | string | No | Free-text filter on workbook / workspace name. Pass empty string or omit for all. |
type | string | Yes | Must be TABLE to retrieve workbooks. |
workspaceId and workspaceName so you can group them client-side.
Response item fields:
| Field | Type | Description |
|---|---|---|
id | UUID | Workbook UUID — use as id in WORKBOOK_RAG connector objects |
name | string | Workbook display name |
description | string | Optional content description |
workspaceId | UUID | Parent workspace UUID — use to group workbooks by workspace |
workspaceName | string | Parent workspace display name |
workspaceCreatedBy | integer | User ID of the workspace owner |
tableCreatedBy | integer | User ID who created the workbook |
uiMetadata.dataProvider | string | Storage backend: JDBC, SPARK, SNOWFLAKE, BIGQUERY, REDSHIFT, ATHENA, MYSQL |
uiMetadata.title | string | Optional display title override |
uiMetadata.favorite | boolean | Whether the workbook is marked as a favourite |
GET List All Connectors
GET /connector/api/v1/instance
Returns all AI connectors (type CONNECTOR / sourceType: AI) available to the tenant. Use connector id values in the configs.connectors array.
GET List Team Members
GET /idp/api/v1/team
Returns all users in the company. Use userId values when sharing an agent.
GET List All Conversations
GET /ai/api/v2/conversations
Returns the list of all conversations for the authenticated user.
POST Create Custom Agent
POST /customAgents/api/v1
Creates a fully configured Custom AI Agent. This is the most complex endpoint — every field is documented below.
uiMetadata — UI Presentation Layer
Controls how the agent looks and behaves in the DataGOL chat interface.
configs — Agent Runtime Configuration
The configs object is the brain of the agent — it defines every data source, tool, and capability the agent can access at runtime.
Top-Level Fields
Controls whether the agent is visible and usable by team members beyond the creator.
false— Draft mode. Only the creator can access it.true— Published. Users with shared permissions can open and chat with the agent.
The system prompt injected at the start of every conversation with this agent. This is the core instruction set — be specific about role, output format, and behavior.Example:
A short human-readable description of what the agent does. Shown in the agent card in the UI.Example:
"This Agent Details you through the Complete financial related Data"Display name of the agent. Shown in the agent list and chat header.Example:
"Financial Agent"Complete Request Example
Response
POST Share Agent (Bulk Permissions)
POST /noCo/api/v2/elementPermissions/bulk
Grants one or more users access to a Custom Agent.
Array of permission grants to apply in a single atomic operation.
GET Custom Agent Permissions
GET /noCo/api/v2/elementPermissions/CUSTOM_AGENT/{agentId}
Returns all users who have access to the specified agent and their permission levels.
UUID of the Custom Agent.
POST Generate Conversation Name
POST /ai/api/v1/builder/chat/complete (AI Core service)
Generates a concise conversation name based on the user’s first message. Called automatically after the first message is sent.
Query params:
| Param | Value |
|---|---|
resourceType | CUSTOM_AGENT |
resourceId | UUID of the Custom Agent |
Request Body
POST Initiate Conversation
POST /ai/api/v2/conversations
Opens a new conversation session backed by a Custom Agent. Returns a conversationId required for the streaming endpoint.
Display name for this conversation. Auto-generated by the naming API (step 3) or user-supplied.
Always
true when creating a new conversation.Visibility of the conversation.
| Value | Behavior |
|---|---|
PRIVATE | Only the creating user can see this conversation |
SHARED | Visible to all users with access to the agent |
ID of the authenticated user creating the conversation. Must match the token’s
userId claim.Must be
"CustomAgent" for custom agent conversations.UUID of the Custom Agent that backs this conversation. Passed twice (at
parameters and parameters.parameters) for backward compatibility.Active LLM model for this conversation. Must be a value from
uiMetadata.capabilities.models.supportedModels.conversationId (UUID) used in the streaming endpoint.
POST Streaming Message
POST /ai/api/v2/messages/streaming (AI Core service)
Sends a user message to the agent and streams the response as Server-Sent Events (SSE).
Must be
"CustomAgent".Must be
"CustomAgent". (Duplicates agentType for routing purposes.)The conversation ID returned by
POST /ai/api/v2/conversations.The user’s message text to send to the agent.
UUID of the Custom Agent. Must match the agent that backs this conversation.
The model to use for this specific message. Can be changed per message to switch models mid-conversation.
Pass as
{ "parameters": {} } unless overriding model-level parameters.data: prefix.
| Field | Type | Description |
|---|---|---|
content | string | number | The text delta (or message ID on the first event) |
response_type | string | "message_id" for the first event; "text" for content chunks |
metadata | object | null | Reserved for future use; currently null |
GET Workspace by ID
GET /noCo/api/v2/workspaces/{workspaceId}
Fetches workspace details scoped to the current Custom Agent. Called when a user opens the agent from the side panel to load context-specific workspace data.
Query params:
| Param | Type | Description |
|---|---|---|
resourceType | string | Always CUSTOM_AGENT |
resourceId | UUID | The Custom Agent UUID |
Error Handling
All endpoints return standard HTTP status codes.| Code | Meaning | Common Cause |
|---|---|---|
200 | Success | — |
400 | Bad Request | Malformed JSON, missing required fields |
401 | Unauthorized | Missing or expired JWT token |
403 | Forbidden | User lacks required permission (CREATE_COPILOT, EDIT_COPILOT, etc.) |
404 | Not Found | Agent, workspace, or connector ID does not exist in this tenant |
500 | Internal Server Error | Upstream AI service error or unhandled exception |
Connector Type Quick Reference
| Type | sourceType | Use Case |
|---|---|---|
WORKBOOK_RAG | BACKEND | RAG over a single CSV/Excel workbook |
WORKSPACE_DOCUMENTS | BACKEND | RAG over all files in a workspace |
KNOWLEDGE_BASE | BACKEND | Synced Google Drive or web knowledge base |
CONNECTOR | AI | Live data via AI connector instance |
Model ID Reference
| Model ID | Provider | Notes |
|---|---|---|
gpt-5.2 | OpenAI | GPT-5 series, high capability |
gpt-4.1 | OpenAI | GPT-4.1 |
o4-mini | OpenAI | Reasoning model, faster and cheaper |
vertex_ai/claude-opus-4-7 | Anthropic via Vertex | Claude Opus on GCP |
claude-opus-4-6 | Anthropic | Claude Opus direct |
claude-sonnet-4-6 | Anthropic | Claude Sonnet, balanced |
claude-haiku-4-5-20251001 | Anthropic | Claude Haiku, fastest |