Download OpenAPI specification:
Welcome to the GoSearch API! You can use this API to access our endpoints, such as the Data Source API, to add a data connector we do not have support for! To access our API, you need to be on the GoSearch Enterprise plan. You can upgrade to the Enterprise plan by reaching out to the sales team.
The GoSearch API uses access tokens to authenticate requests. The access token must be included in the Authorization header of your request. To generate an access token, use the "Developer Tools" tab on GoSearch. Please note that only companies on the Enterprise plan are eligible for API tokens.
Once you have an access token, you can use it to make requests to the API. Requests are authenticated using HTTP Bearer Authentication. You must provide the access token in the Authorization header:
Authorization: Bearer {ACCESS_TOKEN}
If you do not provide an access token or your access token is no longer active, you will receive an error message with a 401 status code.
{
"error": {
"message": "The API token is not valid or is deactivated.",
"code": 401,
"type": "not_authorized"
}
}
The GoSearch API is REST-based and uses standard HTTP verbs and status codes. The API accepts JSON-encoded request bodies and returns JSON-encoded responses. All requests should be made over SSL.
API requests don't have access to private data, such as documents from personal connectors.
The base URL to access the GoSearch API is https://api.gosearch.ai. For example, to access the Documents endpoint, just add the endpoint to the base URL: https://api.gosearch.ai/documents.
All responses from the API will include a standard HTTP successful or error status code. The successful status codes are as follows:
| HTTP Status Code | Description |
|---|---|
| 200 OK | The request was successful.. |
| 201 Created | The resource has been successfully created. |
For errors, we include extra information as to why the request was not successful. The error response body will have the following format:
{
"error": {
"message": "Descriptive information about the error",
"code": "HTTP error code",
"type": "Type of error returned"
}
}
For example, if you try to create a data source that already exists, you will get the following error response:
{
"error": {
"message": "The data source name Slack already exists. Please use another name for the data source.",
"code": 409,
"type": "conflict"
}
}
The error status codes, along with their error types, are as follows:
| HTTP Status Code | Error Type | Description |
|---|---|---|
| 400 Bad Request | bad_request | The request cannot be accepted. Might be because the request body is empty when it shouldn’t be. |
| 401 Unauthorized | not_authorized | The access token provided is invalid or deactivated. |
| 404 Not Found | not_found | The resource was not found. |
| 405 Method Not Allowed | method_not_allowed | The request method is not allowed for the endpoint. |
| 409 Conflict | conflict | The request conflicts with an existing resource. For example, if creating a data source with an existing name, this error will be returned. |
| 415 Unsupported Media Type | invalid_content_type | The request content type is not supported. |
| 422 Unprocessable Entity | invalid_request | The contents of the request contains errors, such as required fields that are missing or validation errors. |
| 429 Too Many Requests | rate_limit_exceeded | The rate limit has been exceeded. You have to wait a short time before trying again. |
| 500 Internal Server Error | internal_server_error | Something went wrong with the GoSearch API. |
A rate limit is enforced for every endpoint and is based on the company. It's important to note that creating multiple API tokens will not increase the overall rate limit. Different types of APIs are subject to different rate limits. If you exceed the rate limit, you will receive a 429 status code with the following error body:
{
"error": {
"message": "API rate limit exceeded. Please try again in 60 seconds.",
"code": 429,
"type": "rate_limit_exceeded"
}
}
Every request contains information about the rate limit in the HTTP response headers.
| HTTP Header | Description |
|---|---|
| RateLimit-Limit | The maximum number of requests allowed per minute for the endpoint. |
| RateLimit-Remaining | The number of requests remaining for the current rate limit window. |
| RateLimit-Reset | The number of seconds to wait until the rate limit window resets. This header will only be sent if the rate limit has been exceeded. |
All the endpoints that return a list come with a metadata object that contains pagination information. We return a default of 10 results per page and use the limit and offset parameters to determine the number of results to return and the number of results to skip. You can fetch the next set of results through the URL that is provided in metadata.links.next. If there are no more results, then the value will be null. The metadata object will include the following parameters. The dot notation denotes a child attribute.
| Pagination Parameters | Description |
|---|---|
| limit | The limit on the number of results to return, between 1 and 100. Defaults to 10 results. |
| offset | The number of results to skip. Defaults to 0. |
| count | The number of results returned in the current page. |
| total_results | The total number of results found. |
| links.next | The URL link to the next set of results. If there are no more results, this will be null. |
| links.prev | The URL link to the previous set of results. If there are no more results, this will be null. |
If you have any questions about the API or are running into errors, please reach out to support@gosearch.ai.
https://api.gosearch.ai/search?limit=10&q=How do I reset my password?
This endpoint performs different actions depending on the query parameters provided:
q parameter to perform a comprehensive search across all resources.auto parameter to get autocomplete suggestions as the user types.popular-searches parameter to retrieve popular searches from history.searchTerm parameter (or no parameters) to retrieve the user's search history.| ai_search | boolean Whether this is an AI search. |
| auto | string Search term for autocomplete search. When provided, returns autocomplete suggestions. |
| category | string Enum: "files" "tasks" "people" "golinks" "answers" "chats" "customgpts" "images" "events" "all" Filter results by category. |
| days | integer Number of days to look back for analytics. |
| is_custom_gpt | boolean Whether the search is for a custom GPT. |
| limit | integer Default: 10 Number of results to return. |
| offset | integer Default: 0 Number of results to skip. |
| order | string Enum: "asc" "desc" Sort order. |
| owner | string <email> Filter by resource owner email. |
| popular-searches | string Returns popular searches from search history. |
| q | string Search term for full search. When provided, performs a comprehensive search across all resources. |
| searchTerm | string Optional search term for history lookup. If provided, returns autocomplete suggestions for recent searches matching this term. If not provided, returns the user's recent search history. |
string or Array of strings Filter by service name(s). | |
| sort | string Enum: "relevance" "date_created" "date_edited" "weekly_hits" Field to sort by. |
| title_only_search | boolean Whether to search only in titles. |
| use_federated | boolean Whether to use federated search. |
{- "metadata": {
- "limit": 1,
- "offset": 0,
- "count": 1,
- "total_results": 400,
- "links": {
- "prev": null,
}
}, - "user_query": "How do I reset my password?",
- "stemmed_query": "reset password",
- "exact_matches": [ ],
- "results": [
- {
- "idid": 291591900,
- "title": "Macbook Password Reset - go/reset",
- "body": "Macbook Password Reset \r\nIf you are unable to log into your Macbook, or if you forget your password, please follow the below steps: \r\n1. Please contact the Technical Support Specialist team (TSS) for assistance. \r\n2. TSS will provide you with a Personal Recovery Key to help you access your Macbook.\r\n3. Please reset your password using your Personal Recovery Key.\r\n 1. If the Personal Recovery Key doesn't work, please move to the next steps:\r\n 1. Notify TSS that the Key is not working, and they will provide you with the password for the GoLinks Maintenance account.\r\n 2. Once you have this password, log in with the name and the password of the other admin account.\r\n 3. Choose System Preferences from the Apple menu, then click Users & Groups.\r\n 4. Click the lock , then enter the admin name and password again.\r\n 5. Select your user name from the list of users.\r\n 6. Click the Reset Password button, then follow the onscreen instructions to create a new password.\r\n Change Password window \r\n 7. Choose Log Out from the Apple menu.\r\n 8. Log in to your account using your new password.\r\n 9. Determine whether to create a new login keychain (if necessary). \r\n 10. Let the TSS team know if you have successfully updated your password, and logged into your Macbook.",
- "owner_email": "example.user@golinks.io",
- "metadata": {
- "filetype": "google-docs",
- "mimetype": "application/vnd.google-apps.document",
- "lastModifyingUser": "example.user@golinks.io",
- "lastModifyingUserName": "example.user",
- "owner": "example.user@golinks.io",
- "path": [
- [
- "Macbook Password Reset - go/reset",
- null
]
], - "numberOfSlides": null,
- "thumbnails": [
], - "isPublic": null
}, - "first_name": null,
- "last_name": null,
- "document_type": "files",
- "status": "verified",
- "link_count": 0,
- "unique_id": "googleDrive-16-abcde",
- "sid": 3,
- "service": "google-drive",
- "domain": "drive.google.com",
- "personal": 0,
- "in_review": 0,
- "review_type": "verification",
- "drid": 165,
- "reviewer_uid": 9,
- "verifying_users": [
- {
- "reviewer_id": 9,
- "review_created_at": 1729741060,
- "reviewer_last_name": "Example",
- "reviewer_first_name": "Example"
}
], - "view_count": 22,
- "indexed_at": 1731014831,
- "initial_indexed_at": 1729718824,
- "data_created_at": 1646756809,
- "data_updated_at": 1656508907,
- "exact_match": 0,
- "related_golinks": [
- {
- "idid": 289016976,
- "gid": 260579,
- "title": "go/reset",
- "weekly_hits": 1
}
], - "ranking": {
- "verified_document_score": 1.2,
- "owner_match_score": 1,
- "decay_score": 0.7,
- "proximity_decay_score": 0.9333333333333333,
- "exact_term_score": 1.1,
- "negative_term_decay_score": 1,
- "term_frequency_decay": 0.115926120602167,
- "service_in_query_score": 1,
- "backlink_boost_score": 1,
- "role_match_boost_score": 1,
- "role_match_deboost_score": 1,
- "semantic_rerank_boost_score": 2.3817968,
- "double_quotes_match_multiplier": 1,
- "title_rank": 29.066741943359375,
- "body_rank": 3.627428507699445,
- "final_score": 21.627825479458327,
- "semantic_rerank_raw_score": 0.9408984
}, - "owner_details": {
- "email": "example.user@golinks.io",
- "name": "Example User",
- "type": "Owner",
- "username": "",
- "first_name": "",
- "last_name": ""
}, - "related_users": [ ],
- "body_char_count": 1324
}
], - "people": [ ],
- "chats": [ ],
- "golinks": [ ],
- "tasks": [ ],
- "answers": [ ],
- "images": [ ]
}https://api.gosearch.ai/data-source?name=LinkedIn
Retrieve a data source configuration using the data source name.
| name required | string Example: LinkedIn Data source name that will be fetched. |
{- "sid": 45,
- "name": "LinkedIn",
- "domain": "linkedin.com",
- "display_name": "LinkedIn",
- "dark_icon_url": null,
- "created_at": "2024-01-15T10:30:00Z",
- "updated_at": "2024-01-20T14:45:00Z",
- "category_identifier": "COMMUNICATIONS"
}https://api.gosearch.ai/data-source?limit=10&offset=0
Retrieve a list of data source configurations.
| limit | integer <= 150 Default: 10 The number of results to return per page, between 1-100. Defaults to 10. |
| offset | integer Default: 0 The number of results to skip. Defaults to 0. |
{- "metadata": {
- "limit": 0,
- "offset": 0,
- "count": 0,
- "total_results": 0,
}, - "results": [
- {
- "sid": 45,
- "name": "LinkedIn",
- "domain": "linkedin.com",
- "display_name": "LinkedIn",
- "dark_icon_url": null,
- "created_at": "2024-01-15T10:30:00Z",
- "updated_at": "2024-01-20T14:45:00Z",
- "category_identifier": "COMMUNICATIONS"
}
]
}https://api.gosearch.ai/data-source
Create a new data source. You can view data sources in the data connectors page.
| domain required | string Verified domain for the data source. |
| icon_url required | string <uri> URL pointing to an image representing the data source. This icon will be shown in the Search UI's light mode for search results. |
| name required | string The unique name of the data source. This name must be unique and will serve as an identifier for the documents indexed under it. |
| dark_icon_url | string <uri> URL to an image for the data source's icon in dark mode. If not provided, it defaults to the icon_url. |
| display_name | string The name to be displayed in the Search UI. If not provided, it defaults to the name value. |
{- "status": "ok"
}https://api.gosearch.ai/web-source
Returns a paginated list of connected web sources for your workspace. Set the count query parameter to receive only the total count instead of the full list.
| count | boolean Default: false If provided, returns only the total count of connected web sources. |
| hide_group_connectors | boolean Default: false Hide web sources the token owner does not have group access to. |
| include_group_membership_info | boolean Default: false Include group membership summary ( |
| limit | integer [ 1 .. 100 ] Default: 10 The maximum number of results to return. Defaults to 10. Maximum is 100. |
| offset | integer >= 0 Default: 0 The number of results to skip. Defaults to 0. |
| order | string Default: "desc" Enum: "asc" "desc" Sort order. Defaults to |
| search | string Filter results by matching the title or description. |
| sort | string Default: "connected_at" Enum: "display_name" "connected_at" "updated_at" Field to sort by. Defaults to |
{- "metadata": {
- "limit": 0,
- "offset": 0,
- "count": 0,
- "total_results": 0,
}, - "results": [
- {
- "sid": 0,
- "name": "string",
- "display_name": "string",
- "service_type": "string",
- "domain": "string",
- "personal": 1,
- "blid": 0,
- "ciid": 0,
- "web_source_domain": "string",
- "type": "string",
- "description": "string",
- "first_name": "string",
- "last_name": "string",
- "username": "string",
- "user_image": "string",
- "email": "user@example.com",
- "created_at": 0,
- "updated_at": 0,
- "connected_date": "2019-08-24T14:15:22Z",
- "num_groups": 0,
- "has_everyone_group": true
}
]
}https://api.gosearch.ai/users
Returns a paginated list of users in your workspace. You can filter the list by status, access level, role IDs, whether they have the browser extension installed, and more.
If you provide one of username, uid, or email, the endpoint will return a single user.
| access-level | string Enum: "admin" "moderator" "member" Filter by access level. Available only on plans with Custom Admins enabled. |
| active | boolean Filter by whether the user is currently active or deactivated. |
string <email> If provided, returns a single user by their email address. | |
| install_extension | boolean Filter by whether the user has installed the browser extension. |
| limit | integer [ 1 .. 100 ] Default: 10 The maximum number of results to return. Defaults to 10. Maximum is 100. |
| metadata_only | boolean Default: false When true, returns only the |
| offset | integer >= 0 Default: 0 The number of results to skip. Defaults to 0. |
| rids | Array of integers One or more role IDs to filter by. This parameter accepts multiple values. |
| search | string Filter results by matching name or email. Partial matches are supported. Examples: |
| status | string Filter by user status (e.g., |
| uid | integer If provided, returns a single user by their user ID ( |
| username | string If provided, returns a single user by their username. |
| with_agents | boolean Default: false Return only users who have created custom GPTs (agents). |
{- "metadata": {
- "limit": 0,
- "offset": 0,
- "count": 0,
- "total_results": 0,
}, - "results": [
- {
- "uid": 0,
- "cid": 0,
- "first_name": "string",
- "last_name": "string",
- "username": "string",
- "email": "string",
- "alid": 0,
- "rid": 0,
- "role": "string",
- "active": 0,
- "user_image": "string",
- "timezone": "string",
- "first_login": 0,
- "last_visited": 0,
- "workspace_access": 0,
- "uiid": "string",
- "created_at": 0,
- "updated_at": 0,
- "dark_mode": 0,
- "tts_voice": "string",
- "goai_memory": 0,
- "admin": true
}
]
}https://api.gosearch.ai/answers
Returns a paginated list of answers in your workspace. You can filter the list by verification status, exclude deprecated answers, and sort by views or creation date.
If you provide aid, the endpoint will return a single answer inside a result wrapper.
| aid | integer If provided, returns a single answer by its ID, within a |
| excludeDeprecated | boolean Default: false When true, excludes deprecated answers. |
| limit | integer [ 1 .. 100 ] Default: 20 The maximum number of results to return. Defaults to 20. Maximum is 100. |
| offset | integer >= 0 Default: 0 The number of results to skip. Defaults to 0. |
| order | string Default: "desc" Enum: "desc" "asc" Sort order. Defaults to |
| search | string Filter results by matching the question/title or body. Partial matches are supported. |
| sort | string Default: "created_at" Enum: "views" "created_at" Sort results by the specified field. Defaults to |
| verified | string Default: "all" Enum: "all" true false Filter by verification status. Use |
{- "metadata": {
- "limit": 0,
- "offset": 0,
- "count": 0,
- "total_results": 0,
}, - "results": [
- {
- "aid": 0,
- "title": "string",
- "body": "string",
- "owner_uid": 0,
- "owner_first_name": "string",
- "owner_last_name": "string",
- "owner_username": "string",
- "owner_email": "user@example.com",
- "answered_by_uid": 0,
- "answered_by_first_name": "string",
- "answered_by_last_name": "string",
- "answered_by_username": "string",
- "answered_by_email": "user@example.com",
- "status": "string",
- "in_review": 0,
- "approved": true,
- "review_type": "string",
- "drid": 0,
- "reviewer_uid": 0,
- "views": 0,
- "created_at": 0,
- "updated_at": 0,
- "answered_at": 0,
- "time_elapsed_since_answered_in_seconds": 0
}
]
}https://api.gosearch.ai/glossary?limit=1000&offset=0
Returns a paginated list of glossary terms ordered alphabetically. You can filter by a search term and/or the first character via startsWith.
If you provide glossaryId or term, the endpoint will return a single glossary entry inside a result wrapper.
| glossaryId | integer If provided, returns a single glossary term by its ID, within a |
| limit | integer [ 1 .. 1000 ] Default: 1000 The maximum number of results to return. Defaults to 1000. Maximum is 1000. |
| offset | integer >= 0 Default: 0 The number of results to skip. Defaults to 0. |
| q | string Search term to filter glossary terms by term or definition. |
string or string Filter results to terms that start with a specific character or numbers. Provide a single letter (A–Z, case-insensitive) or | |
| term | string If provided, returns a single glossary entry by its exact term, within a |
{- "metadata": {
- "limit": 1000,
- "offset": 0,
- "count": 115,
- "total_results": 115,
- "links": {
- "prev": null,
- "next": null
}
}, - "results": [
- {
- "glossary_id": 415,
- "uid": 22,
- "term": "AI",
- "alternate_name": null,
- "definition": "Artificial Intelligence",
- "created_at": 1707768695,
- "updated_at": 1707768695
}
]
}https://api.gosearch.ai/groups
Returns workspace groups. Without gid, the endpoint returns a list of groups in results (no top-level metadata).
If you provide gid, the endpoint returns a single group object. You can use context to paginate a specific nested collection within the group (users or one of the connector types). When a context is provided, the response will include user_metadata (for user) or connector_metadata for connector contexts, describing pagination for that nested collection only.
| context | string Enum: "user" "workspace_connector" "web_source" "personal_connector" When fetching a single group, restrict results to a specific nested collection and include pagination metadata for it. |
| gid | integer If provided, returns a single group by its ID. |
| limit | integer >= 1 Default: 30 Maximum number of items to return. When |
| offset | integer >= 0 Default: 0 Number of items to skip (for nested context pagination or listing). |
| q | string Search term to filter groups by name or description. |
| rid | integer Optional role ID filter (applies when |
| sort_by | string Enum: "name" "member_count" "connector_count" "updated_at" "created_at" "user_name" "workspace_connector_name" "web_source_name" "personal_connector_name" "rid" Sort field. For listing groups: |
| sort_order | string Enum: "asc" "desc" Sort order. |
| status | string Optional user status filter (applies when |
{- "results": [
- {
- "gid": 19,
- "name": "Everyone",
- "description": "All users in your organization",
- "default": 1,
- "edited": 1,
- "okta_synced": 0,
- "updated_at": 1730404075,
- "created_at": 1729105102,
- "member_count": 69,
- "connector_count": 60,
- "users": [
- {
- "uid": 1,
- "cid": 16,
- "first_name": "",
- "last_name": "",
- "username": "sukrit",
- "email": "sukrit@golinks.io",
- "alid": 1,
- "access_level": "member",
- "active": 1,
- "role": "",
- "rid": null,
- "okta_synced": 0,
- "gid": 19,
- "gids": [
- 19,
- 889
], - "status": "active"
}
], - "workspace_connectors": [
- {
- "ciid": 9048,
- "name": "github",
- "display_name": "GitHub",
- "sid": 14,
- "connection_name": "",
- "blid": null,
- "created_at": 1771892808,
- "updated_at": 1771892808
}
], - "web_sources": [
- {
- "blid": 101,
- "display_name": "Font Awesome",
- "web_source_domain": "gosearch.ai",
- "description": "",
- "name": "web-source",
- "display_name_type": "Web Source",
- "sid": 107,
- "connection_name": "",
- "ciid": null,
- "created_at": 1758654653,
- "updated_at": 1758654653
}
], - "personal_connectors": [
- {
- "cid": null,
- "sid": 117,
- "gid": 19,
- "created_at": "2024-10-03 16:06:01",
- "updated_at": "2025-08-05 19:43:57",
- "name": "asana-personal",
- "display_name": "Asana",
- "personal": 1,
- "is_mcp": 0,
- "mcp_url": null,
- "mcp_endpoint": null,
- "domain": "asana.com",
- "service_type": "oauth",
- "alert_duration_minutes": 30
}
]
}
]
}https://api.gosearch.ai/uploaded-files
Returns a paginated list of uploaded files in the workspace.
Note: Personal uploaded files are not available via API tokens. API requests will only return workspace files.
| limit | integer [ 1 .. 100 ] Default: 5 Maximum number of items to return. Defaults to 5. Min 1, max 100. |
| offset | integer >= 0 Default: 0 Number of items to skip. |
| owner | string <email> Filter by owner email address. |
| search | string Filter by file name (case-insensitive substring match). |
| sort | string Default: "newest" Enum: "newest" "oldest" "name_asc" "name_desc" "size_asc" "size_desc" "owner_asc" "owner_desc" Sort order for results. Defaults to |
{- "metadata": {
- "limit": 5,
- "offset": 0,
- "count": 5,
- "total_results": 15,
}, - "uploadedFiles": [
- {
- "idid": 10001,
- "ciid": 550,
- "piid": null,
- "unique_id": "uploaded-files-0000-abc123-chunk-0",
- "title": "example.xlsx",
- "body": "Optional excerpt of file content",
- "metadata": {
- "type": "uploaded_file",
- "category": "Documents",
- "filetype": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
- "mimetype": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
- "file_name": "example.xlsx",
- "file_size": 123456,
- "chunk_index": 0,
- "total_chunks": 1,
- "base_unique_id": "uploaded-files-0000-abc123"
}, - "document_type": "files",
- "cid": 16,
- "uid": null,
- "personal": 0,
- "status": "unverified",
- "indexed_at": "2025-12-31T20:05:16Z",
- "data_created_at": "2025-12-31T20:05:16Z",
- "display_name": "Uploaded Files",
- "sid": 108,
- "service": "uploaded-files",
- "first_name": "Jane",
- "last_name": "Doe",
- "email": "jane.doe@example.com",
- "username": "jane.doe",
- "grouping_id": "uploaded-files-0000-abc123"
}
]
}https://api.gosearch.ai/admin/audit_log?limit=20&offset=0
Retrieve audit logs for the company. Only an API token owned by an admin will be able to use this endpoint.
| alid | integer If provided, returns a single audit log by ID. |
| event_type | string Enum: "Updated Data Connector" "Sent Form Email" "Deactivated User" "Activated User" "Updated User Access Level" "Resolved AI Feedback" "Unresolved AI Feedback" "Resolved Search Feedback" "Unresolved Search Feedback" "Updated Smart Search" "Updated Popular Searches" "Updated AI Standard Model" "Updated AI Fast Model" "Updated Bedrock Model" "Updated Invite Settings" "Updated OpenAI Key" "Verified Document" "Deprecated Document" "Updated SSO Metadata" "Updated SSO-only Setting" "Updated SSO Enabled Setting" "Updated SSO Login URL" "Updated AI Restricted Mode" "Updated AI Code Generation Settings" "Updated Web Search Settings" "GoAI Query" "Reverted Deprecation" "Reverted Verification" "User added to company" "Company and User initialized" "Updated Enable Request Only" "Updated Workspace Name" "Updated Extension Settings" "Search Query" Filter logs by event type. Must be one of the enum values. |
| format | string Default: "json" Enum: "json" "ocsf" The format of the returned data. |
| limit | integer <= 150 Default: 20 The number of logs to retrieve at a given time. Max 150. |
| offset | integer Default: 0 The offset to start retrieving logs from. |
| search | string Search term to filter logs by (filters on message, api, or method). |
| user | string User email to filter logs by, or 'anyone' for all users. |
{- "metadata": {
- "limit": 0,
- "offset": 0,
- "count": 0,
- "total_results": 0,
}, - "results": [
- {
- "alid": 12345,
- "event_type": "GoAI Query",
- "created_at": 1609459200,
- "user": {
- "uid": 123,
- "first_name": "John",
- "last_name": "Doe",
- "username": "john.doe",
- "email": "john.doe@example.com",
}
}
]
}https://api.gosearch.ai/documents
Adds or updates a document in the index. Indexed documents will show up in search results.
| data_source required | string Name of the data source that the document will be indexed under. |
required | object (Document) The document to be indexed. |
{- "data_source": "string",
- "document": {
- "id": "3acf5",
- "title": "LinkedIn Post",
- "body": "Happy Monday!",
- "metadata": {
- "likes": 50
}, - "owner_email": "test.user@golinks.io",
- "created_at": 1694070979,
- "updated_at": 1694070979
}
}{- "status": "ok"
}https://api.gosearch.ai/documents?data_source=LinkedIn&id=3acf5
Remove a document from the index based on the document id.
| data_source required | string The name of the data source under which the document is indexed. |
| id required | string The unique identifier of the document that you want to delete. This identifier corresponds to the document you previously indexed. |
{- "status": "ok"
}https://api.gosearch.ai/documents/bulk
Bulk adds or updates documents in the index.
To efficiently manage the addition or updating of documents in bulk through our API, we've implemented certain guidelines to ensure a smooth experience for all users. We've set a limit of 100 documents per request to maintain system performance and to promote responsible API usage. If you have a larger number of documents to process, we kindly request that you split them into multiple requests, each containing up to 100 documents. Please note that bulk indexing of documents is subject to a different rate limit, allowing for a maximum of 5 API calls per minute.
| data_source required | string Name of the data source that the document will be indexed under. |
required | Array of objects (Document) List of documents to be indexed. Limited to 100 documents. Excess documents beyond this limit will be truncated without generating errors. |
{- "data_source": "string",
- "documents": [
- {
- "id": "3acf5",
- "title": "LinkedIn Post",
- "body": "Happy Monday!",
- "metadata": {
- "likes": 50
}, - "owner_email": "test.user@golinks.io",
- "created_at": 1694070979,
- "updated_at": 1694070979
}
]
}{- "status": "ok"
}https://api.gosearch.ai/goai/conversations
Retrieve a paginated list of conversations with optional filtering and search.
| cgid | integer >= 0 The cgid of the agent the conversation is associated with. Leaving empty will return all conversations, setting to 0 will return all conversations without an agent. |
| limit | integer Default: 10 Number of conversations to return. |
| offset | integer Default: 0 Number of conversations to skip. |
| q | string <= 255 characters Search term to filter conversations by name and message. |
{- "metadata": {
- "limit": 30,
- "offset": 0,
- "count": 3,
- "total_results": 0,
- "links": {
- "prev": null,
- "next": null
}
}, - "results": [
- {
- "conversation_id": 54691,
- "uid": null,
- "cid": 16,
- "name": "🔍 Okta SCIM Talk",
- "hidden": 0,
- "cgid": 5,
- "taskid": null,
- "slack_thread_id": null,
- "pinned_at": null,
- "created_at": 1732311585,
- "updated_at": 1732311585,
- "last_activity": 1732311595
}, - {
- "conversation_id": 53989,
- "uid": null,
- "cid": 16,
- "name": "📁 Channel Archived",
- "hidden": 0,
- "cgid": null,
- "taskid": null,
- "slack_thread_id": null,
- "pinned_at": null,
- "created_at": 1732037206,
- "updated_at": 1732037206,
- "last_activity": 1732037211
}, - {
- "conversation_id": 53988,
- "uid": null,
- "cid": 16,
- "name": "📦 Reset password",
- "hidden": 0,
- "cgid": null,
- "taskid": null,
- "slack_thread_id": null,
- "pinned_at": null,
- "created_at": 1732037188,
- "updated_at": 1732037188,
- "last_activity": 1732037193
}
]
}https://api.gosearch.ai/goai/conversations?conversationId=5
Retrieve a specific conversation by ID, including all associated chat messages and owner information.
| conversationId required | integer ID of the conversation to retrieve. |
{- "conversation": {
- "conversation_id": 138952,
- "uid": 6,
- "cid": 16,
- "name": "✈️ airline pricess",
- "cgid": 11705,
- "created_at": 1769203203,
- "hidden": 0,
- "pinned_at": 1769203400,
- "slack_thread_id": null,
- "taskid": null,
- "updated_at": 1769203400,
- "last_activity": 1769203211
}, - "chats": [
- {
- "chat_id": 255863,
- "conversation_id": 138952,
- "speaker": "user",
- "message": "airline prices",
- "cfids": [ ],
- "chart_data": [ ],
- "connected_data_sources": {
- "uploadedFiles": [ ],
- "serviceFilters": [ ]
}, - "created_at": 1769203204,
- "images": [ ],
- "links": [ ],
- "promises_failed": null,
- "promises_succeeded": null,
- "responded": 1,
- "response_time_ms": null,
- "search_term": "[{\"name\":\"searchWeb\",\"arguments\":{\"searchTerm\":",
- "thumbsup": 0,
- "timeout_occurrences": 0,
- "updated_at": 1769203211
}
], - "owner": {
- "uid": 6,
- "cid": 16,
- "uiid": 6,
- "username": "sophie.main",
- "email": "sophie.main@golinks.io",
- "active": 1,
- "alid": 3,
- "created_at": 1687369348,
- "dark_mode": 0,
- "first_login": 1732323015,
- "first_name": "Sophie",
- "goai_memory": 1,
- "insights_mail": 1,
- "last_memory_scanned_at": 1726421680,
- "last_name": "Main",
- "last_visited": 1738004248,
- "product_updates_mail": 1,
- "rid": 2,
- "role": "Engineering",
- "slack_id": null,
- "timezone": "America/Chicago",
- "tts_voice": "nova",
- "workspace_access": 1
}
}https://api.gosearch.ai/goai/response?stream=false&prompt=What%20kind%20of%20things%20can%20I%20ask%20you%3F
Process a user prompt and retrieve an AI-generated response. The response can be streamed in real-time or returned as a complete response after processing.
Note: The size of a GET request is limited by the technical size limits for a GET, based on many factors. For larger prompts, use a POST request.
| aiOnly | boolean Default: false When set to true, enables AI-only mode which limits the response to AI-generated content only, excluding search results and other external data sources. This provides a more focused AI response without additional context from workspace resources or web search. |
| cgid | integer The ID of an Agent to use for this conversation. When specified, the conversation will be initialized with the Agent's configuration, instructions, and model settings. The conversationId must not be specified for this to apply - it only works when creating a new conversation. |
| conversationId | integer The ID of an existing conversation to continue. If provided, the AI response will be added to this conversation's chat history, maintaining context from previous messages. If not provided, a new conversation will be initialized automatically. |
| ephemeral | boolean Default: false Whether to start a conversation or have this be a single GoAI response. |
| model | string The ID of the model to use for the response. If not provided, the default model for the workspace or Agent will be used.
Supported models follow the format: |
| prompt required | string The user's prompt to which the AI should respond. Maximum length of about 2,000 characters. For higher limits, use a POST request. |
| stream | boolean Default: false Whether the response should be streamed back to the client in real-time. When set to true, the response will be sent as a text/event-stream with incremental updates. When false, the complete response is returned after processing is finished. |
| useWeb | boolean Default: false When set to true, enables web search functionality, allowing the AI to search the web for additional information to include in its response. This expands the AI's knowledge beyond the workspace's indexed content and can provide more current or comprehensive information. |
{- "completion": {
- "promptTokens": 793,
- "completionTokens": 172,
- "totalTokens": 965,
- "message": "You can ask me a variety of questions and request assistance on topics such as:\n\n1. **GoLinks and GoSearch**: How to use golinks, create them, and search for information using GoSearch.\n2. **Productivity Tools**: Assistance with integrations like Confluence, Notion, Google Drive, Jira, and more.\n3. **Employee Directory**: Information about GoProfiles and how to use it.\n4. **General Information**: Help with finding information, organizing tasks, and managing projects using tools like Asana, ClickUp, and others.\n5. **Technical Support**: Basic troubleshooting and guidance on using various software tools.\n6. **Image Generation**: Creating AI-generated images based on your descriptions.\n\nFeel free to ask about any of these topics or anything else you think I might be able to help with!",
- "chat": {
- "type": "assistant",
- "message": "You can ask me a variety of questions and request assistance on topics such as:\n\n1. **GoLinks and GoSearch**: How to use golinks, create them, and search for information using GoSearch.\n2. **Productivity Tools**: Assistance with integrations like Confluence, Notion, Google Drive, Jira, and more.\n3. **Employee Directory**: Information about GoProfiles and how to use it.\n4. **General Information**: Help with finding information, organizing tasks, and managing projects using tools like Asana, ClickUp, and others.\n5. **Technical Support**: Basic troubleshooting and guidance on using various software tools.\n6. **Image Generation**: Creating AI-generated images based on your descriptions.\n\nFeel free to ask about any of these topics or anything else you think I might be able to help with!",
- "chatId": 81023,
- "responseTimeMs": 11630,
- "links": [ ],
- "fileContent": [ ],
- "imageUrl": null,
- "imagePrompt": "auto",
- "imageDetail": "high",
- "useImage": false
}
}, - "conversation_id": "54706",
- "links": "{\"resources\":[]}"
}https://api.gosearch.ai/goai/response
Process a user prompt and retrieve an AI-generated response using a POST request. The response can be streamed in real-time or returned as a complete response after processing.
| prompt required | string The user's prompt to which the AI should respond. Maximum length of 30,000 characters. |
| aiOnly | boolean Default: false When set to true, enables AI-only mode which limits the response to AI-generated content only, excluding search results and other external data sources. This provides a more focused AI response without additional context from workspace resources or web search. |
| cgid | integer The ID of an Agent to use for this conversation. When specified, the conversation will be initialized with the Agent's configuration, instructions, and model settings. The conversationId must not be specified for this to apply - it only works when creating a new conversation. |
| conversationId | integer The ID of an existing conversation to continue. If provided, the AI response will be added to this conversation's chat history, maintaining context from previous messages. If not provided, a new conversation will be initialized automatically. |
| ephemeral | boolean Default: false Whether to start a conversation or have this be a single GoAI response. |
| model | string The ID of the model to use for the response. If not provided, the default model for the workspace or Agent will be used.
Supported models follow the format: |
| stream | boolean Default: false Whether the response should be streamed back to the client in real-time. When set to true, the response will be sent as a text/event-stream with incremental updates. When false, the complete response is returned after processing is finished. |
| useWeb | boolean Default: false When set to true, enables web search functionality, allowing the AI to search the web for additional information to include in its response. This expands the AI's knowledge beyond the workspace's indexed content and can provide more current or comprehensive information. |
{- "completion": {
- "promptTokens": 793,
- "completionTokens": 172,
- "totalTokens": 965,
- "message": "You can ask me a variety of questions and request assistance on topics such as:\n\n1. **GoLinks and GoSearch**: How to use golinks, create them, and search for information using GoSearch.\n2. **Productivity Tools**: Assistance with integrations like Confluence, Notion, Google Drive, Jira, and more.\n3. **Employee Directory**: Information about GoProfiles and how to use it.\n4. **General Information**: Help with finding information, organizing tasks, and managing projects using tools like Asana, ClickUp, and others.\n5. **Technical Support**: Basic troubleshooting and guidance on using various software tools.\n6. **Image Generation**: Creating AI-generated images based on your descriptions.\n\nFeel free to ask about any of these topics or anything else you think I might be able to help with!",
- "chat": {
- "type": "assistant",
- "message": "You can ask me a variety of questions and request assistance on topics such as:\n\n1. **GoLinks and GoSearch**: How to use golinks, create them, and search for information using GoSearch.\n2. **Productivity Tools**: Assistance with integrations like Confluence, Notion, Google Drive, Jira, and more.\n3. **Employee Directory**: Information about GoProfiles and how to use it.\n4. **General Information**: Help with finding information, organizing tasks, and managing projects using tools like Asana, ClickUp, and others.\n5. **Technical Support**: Basic troubleshooting and guidance on using various software tools.\n6. **Image Generation**: Creating AI-generated images based on your descriptions.\n\nFeel free to ask about any of these topics or anything else you think I might be able to help with!",
- "chatId": 81023,
- "responseTimeMs": 11630,
- "links": [ ],
- "fileContent": [ ],
- "imageUrl": null,
- "imagePrompt": "auto",
- "imageDetail": "high",
- "useImage": false
}
}, - "conversation_id": "54706",
- "links": "{\"resources\":[]}"
}https://api.gosearch.ai/goai/summary?idid=123
Generate a short summary for a document. You can either reference an existing document by idid (workspace indexed document),
or provide the document contents directly using title, body, and service.
Notes:
conversation_id is not provided, a new hidden conversation will be created automatically.| body | string Document content to summarize. Required when providing |
| conversation_id | integer Existing conversation ID to continue. If omitted, a new hidden conversation will be created. |
| file_id | string Personal Google Drive file ID. Use with |
| file_type | string Personal Google Drive file type. Use with |
| id | string <uuid> Personal Notion resource ID (UUID). Use with |
| idid | integer Workspace document ID to summarize. Provide this or |
| metadata | string Example: metadata={"path":"/Team/Docs","owner":"user@example.com"} Optional JSON metadata associated with the non-workspace document. |
| object | string Example: object=page Personal Notion object type (for example, |
| personal | boolean Default: false Flag indicating a personal connector resource. Not available for external API requests. |
| prompt | string Optional original search phrase to generate follow-up questions from. |
| service | string Integration/service identifier for the document (e.g., |
| title | string Document title. Required when providing |
{- "completion": {
- "promptTokens": 1200,
- "completionTokens": 60,
- "totalTokens": 1260,
- "message": "- Title: Example Document\n- Service: Example Service\n- Summary: A short document whose body contains example content.",
- "chat": {
- "type": "assistant",
- "message": "- Title: Example Document\n- Service: Example Service\n- Summary: A short document whose body contains example content.",
- "chatId": 123456,
- "responseTimeMs": 1100,
- "links": [ ],
- "fileContent": [ ],
- "imageUrl": null,
- "imagePrompt": "auto",
- "imageDetail": "auto",
- "useImage": false
}
}, - "follow_up_questions": [ ],
- "conversationId": 789012
}https://api.gosearch.ai/goai/ai_usage
Retrieve the remaining GoAI queries for the current day. For paid plans with unlimited queries, returns a flag indicating unlimited access. For freemium users, returns the number of remaining queries available for the day.
| timezone | string <= 50 characters Fallback timezone to use if the user's timezone is not set. Used for calculating daily limits. |
{- "remainingGoAIQueries": 2
}https://api.gosearch.ai/goai/custom_gpts_search
Retrieve a list of Agents with optional filtering, searching, and sorting. Supports filtering by ownership, popularity, recency, and searching by name.
| filter | string Enum: "mine" "team" "new" "popular" "recently_used" "owner" Filter to apply to the results. |
| limit | integer Default: 10 Number of Agents to return. |
| offset | integer Default: 0 Number of Agents to skip before starting to retrieve. |
| order | string Enum: "asc" "desc" Sort order. |
| owner_email | string <email> Email of the owner to filter by. Required when filter is 'owner'. |
| search | string The name of the Agent to search for. |
| sort | string Enum: "name" "created_at" "updated_at" Field to sort by. |
{- "results": [
- {
- "cgid": 11705,
- "name": "✈️ Travel Assistant",
- "description": "Helps with travel planning and booking",
- "instructions": "Help the user with travel planning and booking",
- "access": "all",
- "type": "public",
- "status": "saved",
- "uid": 6,
- "cid": 16,
- "created_at": 1769203203,
- "updated_at": 1769203400,
- "icon_url": null,
- "model": "gpt-4",
- "use_web": true,
- "include_answers": true,
- "include_glossary": false
}, - {
- "cgid": 11706,
- "name": "📊 Data Analyst",
- "description": "Analyzes data and creates reports",
- "instructions": "Analyze the data and create reports",
- "access": "data_sources",
- "type": "private",
- "status": "draft",
- "uid": 7,
- "cid": 16,
- "created_at": 1769203100,
- "updated_at": 1769203300,
- "icon_url": null,
- "model": null,
- "use_web": false,
- "include_answers": true,
- "include_glossary": true
}
], - "metadata": {
- "limit": 10,
- "offset": 0,
- "count": 2,
- "total_results": 2,
- "links": {
- "prev": null,
- "next": null
}
}
}