HighQ
Search your matter data
- Category
- Productivity
- Primary Subcategory
- Legal Practice & Matter Platforms
Integration details
Description
Connect ChatGPT to the matters your team already manage in HighQ. Retrieve data from files, folders, and iSheets, whether that's a matter tracker, a due diligence review, client documentation or a contract register. Seamlessly Incorporate legal matter context directly into your ChatGPT workflows. Administrators can also review audit history across sites and iSheets. Access read-only and always follows your existing HighQ permissions.
- Integration type
- Plugin
- Verification status
- Not applicable
- Platform
- ChatGPT
- Primary Subcategory
- Legal Practice & Matter Platforms
- Secondary Subcategories
- None listed
- Brand
- HighQ
- Access
- Account required
- First tracked
- 2026-09-19
- Tool count
- 18
- Geography
- US
The Primary Subcategory used for this profile’s headline score.
Other Subcategories where the Integration is listed.
Get alerts for HighQ
Get updates when HighQ’s Discoverability Score or category rank changes.
ChatGPT Plugin Discovery Score
ChatGPT Plugin discovery is coming soon
ChatGPT can surface a Plugin when it matches a user's request.Your Plugin Discovery Score measures how often yours appears.
No spam. Unsubscribe any time.
What discovery looks like

Competing in ChatGPT Legal Practice & Matter Platforms
View Category18 tools agents can invoke
Get one file's metadata by numeric fileid (not its contents or bytes) Returns the stored metadata record for one file, identified by its numeric fileid. Use it when the user asks about a specific known file: name, type, size, version and version note, created and modified dates and authors, folder id and folder path, site id, tags, contentstatus (1 = active, 0 = deleted), your view/edit/delete permission, and a comma-separated status string (checkout, review, e-signature, approval, DMS). It never returns the file's bytes or text; set include=downloadurl to add a download link. It cannot look up files by name - you must already have the numeric fileid. The response also carries the file's row in the site's file-metadata iSheet: filemetadatasheetid is the sheet id and itemid is the record id for that document's metadata, both 0 when there is no active sheet, no record, or you lack access. Fields with no value are omitted, so absence can mean no value, no permission or a disabled feature - do not retry to make one appear. API Endpoint: GET /20/files/{fileid} Returns: Dict with keys: - status_code: HTTP response status code - data: Response data (JSON or text) - headers: Response headers - url: Request URL - endpoint: API endpoint called - tool_name: Name of this tool - error: Error message (if failed)
Get the extracted plain text of one file (paged) Returns the extracted plain text of one file, split into word-sized chunks, so you can read, summarize, quote, or analyze its actual contents. Requires a numeric file id you already have from a listing or search, plus your own download access to the file. Each response includes the chunk's text plus totalAvailableChunks; read from offset 0 through totalAvailableChunks-1 to page the whole document. A file with no extractable text, such as a scanned image without a text layer, returns an error instead of content. Not for finding files, nor for checking whether a term merely appears in one (search for that instead), nor for fetching a download link or file metadata. API Endpoint: GET /20/gen-ai/files/{fileid}/rawtext Returns: Dict with keys: - status_code: HTTP response status code - data: Response data (JSON or text) - headers: Response headers - url: Request URL - endpoint: API endpoint called - tool_name: Name of this tool - error: Error message (if failed)
Get one HighQ site's configuration by numeric siteid Read one HighQ site's configuration and metadata by numeric siteid: modules, security and file settings, owner, status, dates, size, and matter/client numbers. Requires the numeric id (names are not accepted; resolve one from a site listing or search first). You must be an active participant; a site you can't reach - archived, pending, or another user's 'My site' - returns a 403 access error (never 404, never an empty result), so don't retry. Your own 'My site' is fine, and a Preparation site is readable only by its site admins. Admin/owner-only fields (size, adminnote, dates) are omitted for ordinary participants, and any field you lack permission for is omitted - a missing field means no value or no access, not something to retry. statusid: 1=Active, 2=Readonly, 3=Archived, 4=Preparation, 5=Pending. sitefolderID is the site's root folder id (use it to browse the site's files). Pass summary="true" for a lighter, differently shaped record. API Endpoint: GET /20/sites/{siteid} Returns: Dict with keys: - status_code: HTTP response status code - data: Response data (JSON or text) - headers: Response headers - url: Request URL - endpoint: API endpoint called - tool_name: Name of this tool - error: Error message (if failed)
List the caller's own favourited items of one content type Lists the caller's own favourited (bookmarked) items of one content type, most recently accessed first; optionally scoped to one site. Use for "my favourites", "my bookmarks", or "starred items". Always the caller's own - it cannot read another user's; returns item metadata and links only (not file contents) and is read-only. Each item includes its content id, title and link. One content type per call (no all-types mode), so call once per type to cover several. No total count is returned and inaccessible items are dropped after paging, so a short page is not the end - page until a call returns empty (an empty result is a normal 200, not a 404). API Endpoint: GET /20/favourites Returns: Dict with keys: - status_code: HTTP response status code - data: Response data (JSON or text) - headers: Response headers - url: Request URL - endpoint: API endpoint called - tool_name: Name of this tool - error: Error message (if failed)
List the files in one folder (metadata only) List the files stored directly in one folder and return each file's metadata - id, name, size, type, created and modified dates, author and folder path. Metadata only: it never returns file content or a download link. Select the folder with q set to "folderid=<id>" (keep the double quotes; <id> is a numeric folder id from a folder listing or an earlier result). q is required and is the only way to choose the folder, which also fixes the site. The tool lists that one folder only - not its subfolders - and cannot find files by name. It returns up to 100 files per call and 25 by default; to read more, call again with a larger offset, using the response's filetotal (the number of files you can access) to know when to stop. To pull specific files you already have ids for, pass filelist instead of listing a folder. includedetails=false (default) omits five per-file fields; set includedetails=true to include them (see the parameter). If a call returns 403, the response summary says whether it was a permission problem or a malformed q/parameter. API Endpoint: GET /20/files Returns: Dict with keys: - status_code: HTTP response status code - data: Response data (JSON or text) - headers: Response headers - url: Request URL - endpoint: API endpoint called - tool_name: Name of this tool - error: Error message (if failed)
List a site's folders or read one folder's metadata List folders and read folder metadata - use it for either, but never for files. Pass folderId to read one folder, or siteId to list a site's top-level folders; give exactly one (giving neither returns a 403; if both are sent, folderId wins and siteId is ignored). A bare folderId call returns that folder's own metadata (id, name, description, location, dates, owner). For contents, add include=subfolders for its direct child folders (one level down, not nested), include=path for the parent-folder chain to the top, or include=path,subfolders for both - no other value is accepted. Paging and sorting apply ONLY to the child-folder list (so only with include=subfolders): up to 100 per page (25 default), no total, so page with offset until a call returns fewer than requested. child and filecount appear only on items in that child list, not on the queried folder - to go deeper, call again with a child folder's id. Every folder already carries location (its full path text); use include=path only when you need the ancestor folder objects, whose names are NOT permission-filtered (a breadcrumb label, not proof of access). Folder and site ids come from a site listing, an earlier result, or the user; you cannot look up a folder by name. API Endpoint: GET /20/folders/details Returns: Dict with keys: - status_code: HTTP response status code - data: Response data (JSON or text) - headers: Response headers - url: Request URL - endpoint: API endpoint called - tool_name: Name of this tool - error: Error message (if failed)
Get an iSheet's change-history (audit) events — whole sheet, or one row via itemid Change-history (audit) events of one iSheet: a timeline of logged actions, newest first, answering "who changed what and when" for compliance or investigation. Returns events, not the iSheet's current cell values or column definitions. Requires the iSheet's numeric id (no name lookup) and site Reporting-admin rights; a missing or inaccessible iSheet returns 403, not 404. Defaults to the whole-sheet timeline (all rows plus sheet-level and bulk actions); set itemid for one row's history. Paging is offset-based: nextauditid is a row offset (events to skip), not a page number or record id — start at 0, pass back the response's nextauditid for the next page, and stop as soon as a page returns fewer events than the requested limit (an empty page also means done, but a short page already tells you there's nothing left). Response: nextauditid plus an audit array of entries {auditid, itemid, actionuser (may be empty), actionname, actionalias, version, date, ipaddress}. API Endpoint: GET /20/isheet/{isheetid}/audit Returns: Dict with keys: - status_code: HTTP response status code - data: Response data (JSON or text) - headers: Response headers - url: Request URL - endpoint: API endpoint called - tool_name: Name of this tool - error: Error message (if failed)
Get an iSheet's column definitions (structure, with full configuration on request) Returns the column definitions of one iSheet: for each column its id, name, type, section and system-generated type. By default (includedetails=false) that is all you get, for a smaller, faster response. Set includedetails=true to also include each column's full configuration (defaults, validation, choices, formulas, lookup wiring - held in the columnconditions and columnspecificdetail fields); this is required whenever you will use the response to create or update iSheet items, since the write path needs that configuration to build a valid value for each column. This is structure and metadata only, never row data or cell values, and there is no paging (one entry per accessible column; an empty list if you can see none). Use it to inspect an iSheet's layout, to map a column name to its id, or to get the column metadata needed before creating or updating iSheet items; optionally narrow the result to the columns of a single view. You must already have the numeric isheetid; this tool cannot look up an iSheet by name. Results are filtered to the columns the caller may access, so different users can see different columns for the same iSheet, and access requires view rights on the iSheet's site. API Endpoint: GET /20/isheets/admin/{isheetid}/columns Returns: Dict with keys: - status_code: HTTP response status code - data: Response data (JSON or text) - headers: Response headers - url: Request URL - endpoint: API endpoint called - tool_name: Name of this tool - error: Error message (if failed)
List an iSheet's saved views (configuration, not records) Returns the saved views of one iSheet - the ways its records can be displayed (standard views such as Default, Draft items and Deleted items, and optional custom views when includecustomview=true) - each with its id, title, default/email flags, sort order and row filter, in configured position order. This is the views' configuration, never the iSheet's rows or cell values, and there is no paging. By default it returns the standard views without their columns; set includedetails to add each view's columns (id, name, type), and includecustomview to add the caller's own custom views. Use a view id from the result to read that view's columns or items. Needs the numeric iSheet id (no lookup by name); an unknown or inaccessible id returns 403, and results list only the views the caller may see. API Endpoint: GET /20/isheets/admin/{isheetid}/views Returns: Dict with keys: - status_code: HTTP response status code - data: Response data (JSON or text) - headers: Response headers - url: Request URL - endpoint: API endpoint called - tool_name: Name of this tool - error: Error message (if failed)
List a site's iSheets (id, name and type only - not their columns or rows) Discover the iSheets (data registers/tables) in one HighQ site, or get an iSheet id for follow-up column, view, or item calls. Each entry is iSheet-level identity only - id, name, type, plus templateID when the iSheet is linked to a template - so this is a cheap discovery call; it does not return an iSheet's columns, views, or row data, which are separate calls once you have the id. Site is identified by numeric id only (no name lookup; get the id from a site listing); set type to narrow to one kind, or omit it for all. Returns active iSheets only, and only those the caller may view (admins see all); you must be a participant of the site and iSheets must be enabled for it. Not paged, and an empty list is a normal result. An unknown or inaccessible site, or one with iSheets disabled, returns 403, not 404. API Endpoint: GET /20/isheets Returns: Dict with keys: - status_code: HTTP response status code - data: Response data (JSON or text) - headers: Response headers - url: Request URL - endpoint: API endpoint called - tool_name: Name of this tool - error: Error message (if failed)
List all iSheets in a site with admin-level configuration (site administrators only) List all iSheets in one site with each iSheet's admin configuration (type, status, access type, feature flags). By default the response is trimmed to keep it small - the per-column summary is omitted; pass includedetails=true to also return each iSheet's columns (id, name, section, type, description). Use it to inventory a site's iSheets, inspect their setup, or get an iSheet id for follow-up column, view, or record lookups. Returns configuration and structure only - not the rows inside an iSheet, and not full column detail. The list includes both ACTIVE and PENDING iSheets. Requires the numeric id of a site you already have (no lookup by name). Caller must be a site administrator (org/system admins and the site creator also qualify); other members are denied. No paging or count; filter only by type. API Endpoint: GET /20/isheets/admin Returns: Dict with keys: - status_code: HTTP response status code - data: Response data (JSON or text) - headers: Response headers - url: Request URL - endpoint: API endpoint called - tool_name: Name of this tool - error: Error message (if failed)
List the members of one site (identity, contact, organisation, status, role) List the members of one HighQ site with their identity, contact, organisation, status and role - each returns userid, name (firstname/lastname), email, status and roles. Use when you have a numeric site ID and need who belongs to that site - not a tenant-wide people search, and not a user's files or activity. Requires Member Manager rights on an active site, else the call is rejected. Filter by group, status, invitation, or login, or fetch named users via userid/emailidcsv; free-text search with q; sort by ordertype (field) and orderby (direction). No total is returned - a page shorter than limit is the last (up to 100 per call, 25 default). API Endpoint: GET /20/sites/{siteid}/users Returns: Dict with keys: - status_code: HTTP response status code - data: Response data (JSON or text) - headers: Response headers - url: Request URL - endpoint: API endpoint called - tool_name: Name of this tool - error: Error message (if failed)
List site purposes (site categories) for the tenant Lists the site categories configured for the current Collaborate tenant. The product calls these site purposes, so use it when a user asks which site purposes or categories exist, or to turn a purpose name into its numeric id. Takes no required input: call it with no arguments for the full list. Each entry has siteCategoryID (numeric, sent as a string) and siteCategoryName, plus name translations where they exist. It returns this taxonomy only, never sites, site membership or file data. Results are limited to the categories the caller is allowed to see, so an empty list is a normal result rather than an error. API Endpoint: GET /20/sitecategories Returns: Dict with keys: - status_code: HTTP response status code - data: Response data (JSON or text) - headers: Response headers - url: Request URL - endpoint: API endpoint called - tool_name: Name of this tool - error: Error message (if failed)
Find or list the HighQ sites you can access (name -> id) List or find the HighQ sites the caller can access; the main use is turning a site name into the numeric site id and root folder id (sitefolderID) that other operations need. No input required - the default returns the 25 most recently accessed sites. Filter by name, site purpose (category), module, matter/client number, or specific site ids; each parameter's help says how it combines with the others. Each site returns id, sitename, sitedescription, sitefolderID, categories, status, statusid (1=Active, 2=Readonly, 3=Archived, 4=Preparation), siteowner and lastaccesseddate; set includedetails=true for module flags, computed site size and file/security settings. sitecount is the total before paging - compare it with the rows returned to see whether more remain; page with offset/limit. An empty result is a normal 200 - do not retry. Never send an empty string for a filter; omit the parameter instead (matterno= and clientno= return HTTP 500). API Endpoint: GET /20/sites Returns: Dict with keys: - status_code: HTTP response status code - data: Response data (JSON or text) - headers: Response headers - url: Request URL - endpoint: API endpoint called - tool_name: Name of this tool - error: Error message (if failed)
Read HighQ's platform-wide audit trail (admin only) Read HighQ's platform-wide audit trail - who did what, when, across every site in the instance - for security and compliance questions: sign-ins and two-factor or impersonation events, membership/permission/role changes, site lifecycle and settings changes, and document or folder activity (downloads, uploads, deletes, e-signature, sharing). Admin-only: the caller needs a System User Admin or Org Admin token or the API returns 403 (this is not pre-checked). Not for iSheet row/record-level history. Pick exactly ONE auditAlias by intent (see the parameter). Always give a time range - there is no all-time default: either set dateFilter to a rolling window (Last 5 Mins, Last 15 Mins, Last 1 Hour, Last 6 Hours) and send no dates, or set dateFilter=Custom and send startDate AND endDate as 'DD MMM YYYY' (e.g. 01 Jan 2026). Omitting dateFilter defaults it to Custom, so Custom without both dates - or dates in any other format - returns 403. actionType is optional: omit for all events of the alias, or pass only codes that belong to the chosen alias (a code from another alias returns 403). Narrow further with siteId, userId, userRole, userType, userStatus and siteStatus (combinable). Results come grouped by site, up to 500 records per page (default 100), with totalCount as the full match count; page by advancing offset by limit, and STOP once offset reaches totalCount (or a page returns fewer than limit) - do not keep paging past the end. API Endpoint: GET /20/systemaudits Supports jq_filter: pass it whenever the response is a collection or large object to trim it server-side and reduce token usage. See 'Response data fields' below for real field names. Returns: Dict with keys: - status_code: HTTP response status code - data: Response data (JSON or text), filtered if jq_filter was provided - headers: Response headers - url: Request URL - endpoint: API endpoint called - tool_name: Name of this tool - jq_filter: The jq filter that was applied (only present when a filter ran) - error: Error message (if failed) Response data fields (schema: object): totalCount (integer(int32)) offset (integer(int32)) limit (integer(int32)) sortType (string) sortOrder (string) siteAudit (array<SiteAuditGroupDBO>) siteId (integer(int32)) siteName (string) siteStatus (string) audits (array<BaseAuditDBO>) auditId (integer(int32)) actionAlias (string) actionDescription (string) actionDateTime (string) actionUser (object) userid (integer(int32)) fullName (string) userStatus (string) userType (string) userRole (string) actionUserOrganisation (string) ipAddress (string) path (string) actionDetails (object) oldValueLabel (string) newValueLabel (string) fields (array<AuditDetailFieldDBO>) fieldName (string) oldValue (string) newValue (string) auditType (string, required) targetSite (object) id (integer(int32)) name (string) targetFolder (object) id (integer(int32)) name (string) targetDocument (object) id (integer(int32)) name (string) Use exact field names above in your jq_filter — do not rename, abbreviate, or guess paths.
List instance-wide user accounts Lists user accounts across the entire HighQ instance (the system-level people directory), not the members of a single site. Use it to find or look up people by status, organisation, group, name, email, job title, external id, or free text; to sort them; or to fetch the caller's own account. Any authenticated user may call it, but results are privilege-scoped: a user-admin or org-admin sees every account in the instance, while a regular user sees only accounts already visible to them, and the returned totals reflect that scope - do not assume the result is a complete roster. Each record is account/profile metadata (userid, name, email, status, organisation, job title, department, last-login, and - depending on instance version and configuration - roles with an auto sign-in URL, two-factor-registration status, phone, and postal address); it never returns a user's site content, files, or per-site permissions. Output contains personal data - treat it as sensitive. Pass 'myself', 'me', or 'i' as userid or email to fetch your own account. Paging: offset is a zero-based row offset (rows to skip, not a page number) and each call returns at most 100 accounts, so advance offset to read more. Invalid status, paging, sort, organisation, or group values are rejected. API Endpoint: GET /20/users Returns: Dict with keys: - status_code: HTTP response status code - data: Response data (JSON or text) - headers: Response headers - url: Request URL - endpoint: API endpoint called - tool_name: Name of this tool - error: Error message (if failed)
Search files, folders, and people across HighQ sites Primary, cheap tool for finding files, folders, and people in HighQ by name, keyword, phrase, or tag - use it for almost any document or file lookup: keyword or topic search, finding a named file, checking whether something exists or is mentioned, and resolving a name to the id other operations need. It reads only the search index, so prefer it over a document's full text for search and keyword work; read full text only for the exact wording of a known file. Each match returns context id, name, type, URL, site, folder id, extension, modified date, and a summary. searchTerm picks the mode: 'title:' prefix matches names and titles; no prefix matches text inside documents; 'tag:' prefix matches tags. To constrain title and content together, send the title field with an unprefixed searchTerm - the only way to require both, since 'title:' consumes the whole term and searches no content. Route by intent: 'documents about X' -> unprefixed searchTerm; 'file named X' -> 'title:'; a person -> contentTypes ['people']; 'is X mentioned in <file>' -> one single mode 4 call (file name in title, X in searchTerm), where a match means the document contains it and an empty result set means it does not - answer it here, not by fetching and scanning the document's full text. Send fromDate 'any' for all dates, or a start date for newer content only. If a folder id is known, search it directly: for 'A and B both in folder id 21', send filterInstances [{"folderIds": ["21"]}], searchTerm 'A B', booleanOperation 'AND', contentTypes ['documents']. Page with startIndex and rowCount; no reliable total is returned, so stop when a page returns fewer than rowCount. API Endpoint: POST /20/search Returns: Dict with keys: - status_code: HTTP response status code - data: Response data (JSON or text) - headers: Response headers - url: Request URL - endpoint: API endpoint called - tool_name: Name of this tool - error: Error message (if failed)
Search or list the rows of one iSheet (returns row data) Search or list the rows (items) of one iSheet - a spreadsheet-like data register - returning matching rows with their cell values, up to 500 per call (default 100). Returns row data, not the iSheet's column definitions. Use it to list all rows, keyword-search across columns, filter by column conditions, fetch rows by item id, or read a row's current values before editing it. Requires the numeric iSheet id (no lookup by name); you can only read iSheets you have view access to. Put criteria in the request body - an empty body lists every row; all criteria combine with AND, so an item-id filter plus a keyword none of those rows match returns nothing (send an item-id filter alone to fetch exactly those rows). No total count is returned, so page with offset and stop as soon as a page returns fewer than limit rows - do not keep paging. A single matching row or column may serialize as an object rather than a one-element array, so parse defensively. API Endpoint: POST /20/isheet/{isheetid}/search Returns: Dict with keys: - status_code: HTTP response status code - data: Response data (JSON or text) - headers: Response headers - url: Request URL - endpoint: API endpoint called - tool_name: Name of this tool - error: Error message (if failed)
How do I improve a ChatGPT Plugin's discoverability?
The levers are the listing surface agents actually read: names, descriptions, keywords, tool metadata, and registry health. Which lever matters depends on where discovery breaks, which is what continuous measurement shows.
What are HighQ alternatives on ChatGPT?
As of 2026-09-20, HighQ competes with Aurora, Casepoint, Casepoint Gov, Chat Jurídico, Courtroom5, DocketDrafter, Everlaw, GC AI, JUNE, LawVu, Mary, May or Shall, Quilia, Relativity, مساعدي — IB Law in ChatGPT Legal Practice & Matter Platforms, ranked by public Discoverability Score.
Where is this profile measured?
This profile uses the geography attached to the latest public registry snapshot: US. Locale tags are intentionally omitted.