TextQL Public RPC API

The full public Connect-RPC surface of the TextQL platform, generated from the protobuf service definitions and published with code samples. 407 operations across twenty services — dashboards, connectors, Tableau and Power BI integration, datasets, Ontology management, chat, agents, audit logs, MCP server registration, metrics export, observability, playbooks, RBAC, the sandbox services, and SCIM credential management.

Operations 407

Showing the first 250 of 407. The full set is in the contract, and via get_provider_operations.

POST /textql.rpc.public.agent.AgentService/CreateAgent CreateAgent #
POST /textql.rpc.public.agent.AgentService/DeleteAgent DeleteAgent #
POST /textql.rpc.public.agent.AgentService/DuplicateAgent DuplicateAgent #
POST /textql.rpc.public.agent.AgentService/GetAgent GetAgent #
POST /textql.rpc.public.agent.AgentService/GetAgentDBSchema GetAgentDBSchema #
POST /textql.rpc.public.agent.AgentService/GetAgentDBTablePreview GetAgentDBTablePreview #
POST /textql.rpc.public.agent.AgentService/GetAgentRun GetAgentRun #
POST /textql.rpc.public.agent.AgentService/ListAgentRuns ListAgentRuns #
POST /textql.rpc.public.agent.AgentService/ListAgents ListAgents #
POST /textql.rpc.public.agent.AgentService/ResetAgentAvatar ResetAgentAvatar #
POST /textql.rpc.public.agent.AgentService/TriggerAgent TriggerAgent #
POST /textql.rpc.public.agent.AgentService/UpdateAgent UpdateAgent #
POST /textql.rpc.public.agent.AgentService/UploadAgentAvatar UploadAgentAvatar #
POST /textql.rpc.public.app.AppService/AppHeartbeat AppHeartbeat #
POST /textql.rpc.public.app.AppService/CreateApp CreateApp #
POST /textql.rpc.public.app.AppService/DeleteApp DeleteApp #
POST /textql.rpc.public.app.AppService/DuplicateApp Duplicates an app the caller can view into a new app they own, named "Copy of ". Copies code/files/data sources/compute functions/ schedule; never carries over the source's d #
POST /textql.rpc.public.app.AppService/GetApp GetApp #
POST /textql.rpc.public.app.AppService/GetAppDBSchema Replaces the calling member's entire ordering; capped server-side. #
POST /textql.rpc.public.app.AppService/GetAppDBTablePreview View analytics: reads the engagement views recorded on app page load. #
POST /textql.rpc.public.app.AppService/GetAppMemberState Per-member notification subscription to an app ("watch this app"). #
POST /textql.rpc.public.app.AppService/GetAppVersion Overwrites the published tree's pinned _runtime/ana-1.js with the platform's current copy so host-driven affordances (comment hit-testing) work on older documents; never touches au #
POST /textql.rpc.public.app.AppService/GetAppViewStats Keeps the viewed app's compute worker alive; first view spawns and pre-warms it (dashboard viewer-TTL parity). #
POST /textql.rpc.public.app.AppService/GetMembersWithApps GetMembersWithApps #
POST /textql.rpc.public.app.AppService/InvokeAppComputeFunction InvokeAppComputeFunction #
POST /textql.rpc.public.app.AppService/ListAppActivitySince Favorite/unfavorite a library item (app or dashboard) for the calling member. Per-member, per-org; favorited=false hard-deletes the row. Covers both primitives since the merged lib #
POST /textql.rpc.public.app.AppService/ListAppVersions Re-fetches data sources, rebuilds the document with a fresh snapshot, re-uploads. #
POST /textql.rpc.public.app.AppService/ListApps ListApps #
POST /textql.rpc.public.app.AppService/ListMyAppMemberActivity Watcher management: app owners/editors and org admins list the app's subscribers and add/remove members (Upsert/Delete with member_id). #
POST /textql.rpc.public.app.AppService/MoveAppToFolder MoveAppToFolder #
POST /textql.rpc.public.app.AppService/PresenceHeartbeat Ordering overlay for the sidebar Bookmarks section: one position list per member covering favorites and thread bookmarks (':' keys). Membership truth stays in library_fav #
POST /textql.rpc.public.app.AppService/RecordAppMemberActivity RecordAppMemberActivity #
POST /textql.rpc.public.app.AppService/RefreshApp Moves an app into a library folder (or to root when folder_id is empty). #
POST /textql.rpc.public.app.AppService/RestoreAppVersion Version history: git-backed, one version per save (plus legacy publish-era snapshots); authors can list and restore. #
POST /textql.rpc.public.app.AppService/SetAppMemberState SetAppMemberState #
POST /textql.rpc.public.app.AppService/SetFavorite Executes a declared compute function on a pooled sandbox worker; gated, org-scoped, rate-limited. #
POST /textql.rpc.public.app.AppService/UpdateApp UpdateApp #
POST /textql.rpc.public.audit_log.AuditLogService/ConfigureOtlpExport ConfigureOtlpExport #
POST /textql.rpc.public.audit_log.AuditLogService/ConfigureS3Export ConfigureS3Export #
POST /textql.rpc.public.audit_log.AuditLogService/DeleteOtlpExportConfig DeleteOtlpExportConfig #
POST /textql.rpc.public.audit_log.AuditLogService/DeleteS3ExportConfig DeleteS3ExportConfig #
POST /textql.rpc.public.audit_log.AuditLogService/GetOtlpExportConfig GetOtlpExportConfig #
POST /textql.rpc.public.audit_log.AuditLogService/GetS3ExportConfig GetS3ExportConfig #
POST /textql.rpc.public.audit_log.AuditLogService/ListAuditLogs ListAuditLogs #
POST /textql.rpc.public.audit_log.AuditLogService/TestOtlpExportConnection TestOtlpExportConnection #
POST /textql.rpc.public.audit_log.AuditLogService/TestS3ExportConnection TestS3ExportConnection #
POST /textql.rpc.public.audit_log.AuditLogService/TriggerOtlpExport TriggerOtlpExport #
POST /textql.rpc.public.audit_log.AuditLogService/TriggerS3Export TriggerS3Export #
POST /textql.rpc.public.chat.ChatService/ApproveContextPromptChange ApproveContextPromptChange #
POST /textql.rpc.public.chat.ChatService/ApproveOntologyChange ApproveOntologyChange #
POST /textql.rpc.public.chat.ChatService/AttachAgentToChat AttachAgentToChat #
POST /textql.rpc.public.chat.ChatService/AttachApp AttachApp #
POST /textql.rpc.public.chat.ChatService/AttachDashboard AttachDashboard #
POST /textql.rpc.public.chat.ChatService/AttachDataset RateChatCell appends a row to cell_rating for every click; thumbs-down also upserts a user_thumbs_down thread_warning. #
POST /textql.rpc.public.chat.ChatService/BookmarkChat BookmarkChat #
POST /textql.rpc.public.chat.ChatService/CancelStream CancelStream #
POST /textql.rpc.public.chat.ChatService/CheckChatPermissions CheckChatPermissions #
POST /textql.rpc.public.chat.ChatService/CheckHealth CheckHealth #
POST /textql.rpc.public.chat.ChatService/CheckStreamlitHealth CheckStreamlitHealth #
POST /textql.rpc.public.chat.ChatService/CreateChat CreateChat #
POST /textql.rpc.public.chat.ChatService/DeleteChat DeleteChat #
POST /textql.rpc.public.chat.ChatService/DismissQuestions Resolve a halted questions cell. Submit hands the answers to the agent and resumes it; Dismiss hands over only the answered count and does NOT resume (the user's next message becom #
POST /textql.rpc.public.chat.ChatService/DuplicateChat DuplicateChat #
POST /textql.rpc.public.chat.ChatService/GetAPIChatAnswer GetAPIChatAnswer #
POST /textql.rpc.public.chat.ChatService/GetArtifact GetArtifact #
POST /textql.rpc.public.chat.ChatService/GetChat GetChat #
POST /textql.rpc.public.chat.ChatService/GetChatArtifactsSummary GetChatArtifactsSummary #
POST /textql.rpc.public.chat.ChatService/GetChatExecutionTiming GetChatExecutionTiming #
POST /textql.rpc.public.chat.ChatService/GetChatHistory GetChatHistory #
POST /textql.rpc.public.chat.ChatService/GetChats GetChats #
POST /textql.rpc.public.chat.ChatService/GetCompletionParameters List distinct chat creators the user can access #
POST /textql.rpc.public.chat.ChatService/GetCompletionParametersBatch GetCompletionParametersBatch #
POST /textql.rpc.public.chat.ChatService/GetLlmUsage GetLlmUsage #
POST /textql.rpc.public.chat.ChatService/GetMembersWithChats GetMembersWithChats #
POST /textql.rpc.public.chat.ChatService/GetPlaybookChats GetPlaybookChats #
POST /textql.rpc.public.chat.ChatService/PollChatEvents PollChatEvents #
POST /textql.rpc.public.chat.ChatService/QueryOneShot QueryOneShot #
POST /textql.rpc.public.chat.ChatService/RateChatCell RateChatCell #
POST /textql.rpc.public.chat.ChatService/RejectContextPromptChange RejectContextPromptChange #
POST /textql.rpc.public.chat.ChatService/RejectOntologyChange Resolve a halted ask_approval form cell. Submit runs the form's submission and continues the agent with the outcome; Reject discards it (passive, no run); Dismiss treats it as a ch #
POST /textql.rpc.public.chat.ChatService/RunChat RunChat #
POST /textql.rpc.public.chat.ChatService/SendMessage SendMessage #
POST /textql.rpc.public.chat.ChatService/SubmitContextPromptChange SubmitContextPromptChange #
POST /textql.rpc.public.chat.ChatService/SubmitQuestions SubmitQuestions #
POST /textql.rpc.public.chat.ChatService/UnbookmarkChat UnbookmarkChat #
POST /textql.rpc.public.chat.ChatService/UpdateChat UpdateChat #
POST /textql.rpc.public.connector.ConnectorService/CreateConnector CreateConnector #
POST /textql.rpc.public.connector.ConnectorService/DeleteConnector DeleteConnector #
POST /textql.rpc.public.connector.ConnectorService/DuplicateConnector DuplicateConnector #
POST /textql.rpc.public.connector.ConnectorService/ExecuteQuery ExecuteQuery #
POST /textql.rpc.public.connector.ConnectorService/GetConnector GetConnector #
POST /textql.rpc.public.connector.ConnectorService/GetConnectorCellDurations GetConnectorCellDurations #
POST /textql.rpc.public.connector.ConnectorService/GetConnectorChats GetConnectorChats #
POST /textql.rpc.public.connector.ConnectorService/GetConnectorDashboards GetConnectorDashboards #
POST /textql.rpc.public.connector.ConnectorService/GetConnectorStats GetConnectorStats #
POST /textql.rpc.public.connector.ConnectorService/GetConnectorUsage GetConnectorUsage #
POST /textql.rpc.public.connector.ConnectorService/GetConnectors GetConnectors #
POST /textql.rpc.public.connector.ConnectorService/GetExampleQueries GetExampleQueries #
POST /textql.rpc.public.connector.ConnectorService/GetTablePreview GetTablePreview #
POST /textql.rpc.public.connector.ConnectorService/ListConnectorTables ListConnectorTables #
POST /textql.rpc.public.connector.ConnectorService/ListQueryTemplates ListQueryTemplates #
POST /textql.rpc.public.connector.ConnectorService/TestConnector TestConnector #
POST /textql.rpc.public.connector.ConnectorService/UpdateConnector UpdateConnector #
POST /textql.rpc.public.dashboard.DashboardService/CheckDashboardHealth CheckDashboardHealth #
POST /textql.rpc.public.dashboard.DashboardService/CreateDashboard CRUD operations #
POST /textql.rpc.public.dashboard.DashboardService/CreateDashboardFolder Folder management #
POST /textql.rpc.public.dashboard.DashboardService/DeleteDashboard DeleteDashboard #
POST /textql.rpc.public.dashboard.DashboardService/DeleteDashboardFolder DeleteDashboardFolder #
POST /textql.rpc.public.dashboard.DashboardService/DiscardDashboardChanges DiscardDashboardChanges #
POST /textql.rpc.public.dashboard.DashboardService/DuplicateDashboard DuplicateDashboard #
POST /textql.rpc.public.dashboard.DashboardService/GetDashboard GetDashboard #
POST /textql.rpc.public.dashboard.DashboardService/GetDashboardVersion GetDashboardVersion #
POST /textql.rpc.public.dashboard.DashboardService/GetDashboardViewStats View analytics #
POST /textql.rpc.public.dashboard.DashboardService/GetMembersWithDashboards Member management #
POST /textql.rpc.public.dashboard.DashboardService/ListDashboardFolders ListDashboardFolders #
POST /textql.rpc.public.dashboard.DashboardService/ListDashboardVersions Version history #
POST /textql.rpc.public.dashboard.DashboardService/ListDashboards ListDashboards #
POST /textql.rpc.public.dashboard.DashboardService/MoveDashboardToFolder MoveDashboardToFolder #
POST /textql.rpc.public.dashboard.DashboardService/PreviewConfigDashboard Config-managed dashboards: render a `.dashboard` straight from a patch ref before it merges (ADR-0022). Runs as the file's run_as, gated on the previewer being authorized for it; p #
POST /textql.rpc.public.dashboard.DashboardService/PublishDashboard Publishing workflow #
POST /textql.rpc.public.dashboard.DashboardService/RegenerateScreenshot Screenshot management #
POST /textql.rpc.public.dashboard.DashboardService/RestoreDashboardVersion RestoreDashboardVersion #
POST /textql.rpc.public.dashboard.DashboardService/RunScheduledDashboard RunScheduledDashboard #
POST /textql.rpc.public.dashboard.DashboardService/SpawnDashboard Dashboard execution #
POST /textql.rpc.public.dashboard.DashboardService/UpdateDashboard UpdateDashboard #
POST /textql.rpc.public.dashboard.DashboardService/UpdateDashboardFolder UpdateDashboardFolder #
POST /textql.rpc.public.dashboard.DashboardService/UpdateDashboardSchedule Scheduling #
POST /textql.rpc.public.dataset.DatasetService/CreateFolder CreateFolder #
POST /textql.rpc.public.dataset.DatasetService/CreatePowerBIDataset CreatePowerBIDataset #
POST /textql.rpc.public.dataset.DatasetService/CreateTableauDataset Create Tableau dataset from views/datasources #
POST /textql.rpc.public.dataset.DatasetService/CreateUploadPresignUrl uploads #
POST /textql.rpc.public.dataset.DatasetService/DeleteDataset Delete a dataset (soft delete) #
POST /textql.rpc.public.dataset.DatasetService/ExportDataset export dataset in "raw" format – original if dataset is uploaded, converted format otherwise (defaults to CSV) #
POST /textql.rpc.public.dataset.DatasetService/GetDataset GetDataset, GetDatasets only return metadata #
POST /textql.rpc.public.dataset.DatasetService/GetDatasetStats GetDatasetStats #
POST /textql.rpc.public.dataset.DatasetService/GetDatasetValues GetDatasetValues #
POST /textql.rpc.public.dataset.DatasetService/GetDatasets GetDatasets #
POST /textql.rpc.public.dataset.DatasetService/GetDatasetsByIds GetDatasetsByIds #
POST /textql.rpc.public.dataset.DatasetService/GetFolders for AR: CreateFolderACL, UpdateFolderACL, DeleteFolderACL #
POST /textql.rpc.public.dataset.DatasetService/ProcessUploadPresignUrl ProcessUploadPresignUrl #
POST /textql.rpc.public.dataset.DatasetService/UpdateDataset Update dataset metadata #
POST /textql.rpc.public.mcp.MCPService/ClearOAuthToken ClearOAuthToken #
POST /textql.rpc.public.mcp.MCPService/DeleteMCPServer DeleteMCPServer #
POST /textql.rpc.public.mcp.MCPService/GetMCPServers GetMCPServers #
POST /textql.rpc.public.mcp.MCPService/HandleOAuthCallback HandleOAuthCallback #
POST /textql.rpc.public.mcp.MCPService/InitiateOAuthFlow InitiateOAuthFlow #
POST /textql.rpc.public.mcp.MCPService/ToggleMCPServer ToggleMCPServer #
POST /textql.rpc.public.mcp.MCPService/UpsertMCPServers UpsertMCPServers #
POST /textql.rpc.public.metrics_export.MetricsExportService/ConfigureMetricsExport ConfigureMetricsExport #
POST /textql.rpc.public.metrics_export.MetricsExportService/DeleteMetricsExportConfig DeleteMetricsExportConfig #
POST /textql.rpc.public.metrics_export.MetricsExportService/GetMetricsExportConfig GetMetricsExportConfig #
POST /textql.rpc.public.metrics_export.MetricsExportService/TestMetricsExportConnection TestMetricsExportConnection #
POST /textql.rpc.public.metrics_export.MetricsExportService/TriggerMetricsPush TriggerMetricsPush #
POST /textql.rpc.public.observe.ObservabilityService/ActivateCustomTopic ActivateCustomTopic #
POST /textql.rpc.public.observe.ObservabilityService/BackfillCustomTopic BackfillCustomTopic #
POST /textql.rpc.public.observe.ObservabilityService/BackfillThreadWarnings BackfillThreadWarnings #
POST /textql.rpc.public.observe.ObservabilityService/CreateCustomTopic Custom topics #
POST /textql.rpc.public.observe.ObservabilityService/DeactivateCustomTopic DeactivateCustomTopic #
POST /textql.rpc.public.observe.ObservabilityService/DeleteCustomTopic DeleteCustomTopic #
POST /textql.rpc.public.observe.ObservabilityService/ExportObservabilityCsv ExportObservabilityCsv #
POST /textql.rpc.public.observe.ObservabilityService/FixCheckRecord FixCheckRecord #
POST /textql.rpc.public.observe.ObservabilityService/FixWarning FixWarning #
POST /textql.rpc.public.observe.ObservabilityService/GetAccessMethodStats GetAccessMethodStats #
POST /textql.rpc.public.observe.ObservabilityService/GetActivePeopleStats GetActivePeopleStats #
POST /textql.rpc.public.observe.ObservabilityService/GetActivePeopleTrend GetActivePeopleTrend #
POST /textql.rpc.public.observe.ObservabilityService/GetBackfillPreview GetBackfillPreview #
POST /textql.rpc.public.observe.ObservabilityService/GetBackfillStatus GetBackfillStatus #
POST /textql.rpc.public.observe.ObservabilityService/GetBillingStats GetBillingStats #
POST /textql.rpc.public.observe.ObservabilityService/GetChatSourceStats GetChatSourceStats #
POST /textql.rpc.public.observe.ObservabilityService/GetChatTopics GetChatTopics #
POST /textql.rpc.public.observe.ObservabilityService/GetCheckRecordFix GetCheckRecordFix #
POST /textql.rpc.public.observe.ObservabilityService/GetCustomTopic GetCustomTopic #
POST /textql.rpc.public.observe.ObservabilityService/GetCustomTopicPeople GetCustomTopicPeople #
POST /textql.rpc.public.observe.ObservabilityService/GetCustomTopicThreads GetCustomTopicThreads #
POST /textql.rpc.public.observe.ObservabilityService/GetEngagementSpectrum GetEngagementSpectrum #
POST /textql.rpc.public.observe.ObservabilityService/GetMemberActivity GetMemberActivity #
POST /textql.rpc.public.observe.ObservabilityService/GetMemberSignalTrend GetMemberSignalTrend #
POST /textql.rpc.public.observe.ObservabilityService/GetObservabilityStats GetObservabilityStats #
POST /textql.rpc.public.observe.ObservabilityService/GetThreadWarnings GetThreadWarnings #
POST /textql.rpc.public.observe.ObservabilityService/ListCustomTopics ListCustomTopics #
POST /textql.rpc.public.observe.ObservabilityService/RefineTopicDraft RefineTopicDraft #
POST /textql.rpc.public.observe.ObservabilityService/SetTopicTagFeedback SetTopicTagFeedback #
POST /textql.rpc.public.observe.ObservabilityService/UpdateCustomTopic UpdateCustomTopic #
POST /textql.rpc.public.patches.OntologyManagementService/AddOntologySubmodule AddOntologySubmodule #
POST /textql.rpc.public.patches.OntologyManagementService/ApprovePatch ApprovePatch #
POST /textql.rpc.public.patches.OntologyManagementService/ConfigureOntologyRemote ConfigureOntologyRemote #
POST /textql.rpc.public.patches.OntologyManagementService/CreateApprovalRule CreateApprovalRule #
POST /textql.rpc.public.patches.OntologyManagementService/CreateContextPatchAutoApproveRule CreateContextPatchAutoApproveRule #
POST /textql.rpc.public.patches.OntologyManagementService/CreateOntologyDirectory CreateOntologyDirectory #
POST /textql.rpc.public.patches.OntologyManagementService/CreateOntologyFileUploadUrl Streams how many folders and files a subtree holds, so the UI can report the size of the whole Ontology rather than only the directories it has lazily listed. Counts rise monotonic #
POST /textql.rpc.public.patches.OntologyManagementService/DeleteApprovalRule DeleteApprovalRule #
POST /textql.rpc.public.patches.OntologyManagementService/DeleteContextPatchAutoApproveRule DeleteContextPatchAutoApproveRule #
POST /textql.rpc.public.patches.OntologyManagementService/DeleteOntologyDirectory DeleteOntologyDirectory #
POST /textql.rpc.public.patches.OntologyManagementService/DeleteOntologyFile DeleteOntologyFile #
POST /textql.rpc.public.patches.OntologyManagementService/DenyPatch DenyPatch #
POST /textql.rpc.public.patches.OntologyManagementService/ExchangeOntologyGithubCode ExchangeOntologyGithubCode #
POST /textql.rpc.public.patches.OntologyManagementService/FinalizeOntologyFileUpload FinalizeOntologyFileUpload #
POST /textql.rpc.public.patches.OntologyManagementService/GetCodeownerCoverage GetCodeownerCoverage #
POST /textql.rpc.public.patches.OntologyManagementService/GetConfigExportCapabilities GetConfigExportCapabilities #
POST /textql.rpc.public.patches.OntologyManagementService/GetEffectiveOntologyOwners GetEffectiveOntologyOwners #
POST /textql.rpc.public.patches.OntologyManagementService/GetFileUsage GetFileUsage #
POST /textql.rpc.public.patches.OntologyManagementService/GetFileUsageTimeline GetFileUsageTimeline #
POST /textql.rpc.public.patches.OntologyManagementService/GetOntologyAnaConfig GetOntologyAnaConfig #
POST /textql.rpc.public.patches.OntologyManagementService/GetOntologyFile GetOntologyFile #
POST /textql.rpc.public.patches.OntologyManagementService/GetOntologyGithubOAuthURL GetOntologyGithubOAuthURL #
POST /textql.rpc.public.patches.OntologyManagementService/GetOntologyHistoryFileDiff GetOntologyHistoryFileDiff #
POST /textql.rpc.public.patches.OntologyManagementService/GetOntologyOwners GetOntologyOwners #
POST /textql.rpc.public.patches.OntologyManagementService/GetOntologyRemote GetOntologyRemote #
POST /textql.rpc.public.patches.OntologyManagementService/GetOntologySizeTimeline GetOntologySizeTimeline #
POST /textql.rpc.public.patches.OntologyManagementService/GetOntologySyncConflicts GetOntologySyncConflicts #
POST /textql.rpc.public.patches.OntologyManagementService/GetOntologyUsageSummary GetOntologyUsageSummary #
POST /textql.rpc.public.patches.OntologyManagementService/GetPatch GetPatch #
POST /textql.rpc.public.patches.OntologyManagementService/GetPatchByNumber GetPatchByNumber #
POST /textql.rpc.public.patches.OntologyManagementService/GetPatchCapabilities PlanConfigMigration reports what the lazy config migration WOULD do to this org's objects, and writes nothing. Admin-only, internal: it exists so a release manager can warn the spe #
POST /textql.rpc.public.patches.OntologyManagementService/GetRawPatch GetRawPatch #
POST /textql.rpc.public.patches.OntologyManagementService/GetUsageDetailsForFile GetUsageDetailsForFile #
POST /textql.rpc.public.patches.OntologyManagementService/ListApprovalRules ListApprovalRules #
POST /textql.rpc.public.patches.OntologyManagementService/ListChatsForFile ListChatsForFile #
POST /textql.rpc.public.patches.OntologyManagementService/ListContextPatchAutoApproveRules ListContextPatchAutoApproveRules #
POST /textql.rpc.public.patches.OntologyManagementService/ListGoldenFiles Deprecated: use SetOntologyOwners with the desired entry set. An empty desired set removes every entry and opens the directory. #
POST /textql.rpc.public.patches.OntologyManagementService/ListOntologyEntries ListOntologyEntries #
POST /textql.rpc.public.patches.OntologyManagementService/ListOntologyHistory ListOntologyHistory #
POST /textql.rpc.public.patches.OntologyManagementService/ListOntologyImports ListOntologyImports #
POST /textql.rpc.public.patches.OntologyManagementService/ListOntologySubmodules ListOntologySubmodules #
POST /textql.rpc.public.patches.OntologyManagementService/ListOntologySyncRuns ListOntologySyncRuns #
POST /textql.rpc.public.patches.OntologyManagementService/ListPatchObjects ListPatchObjects parses the config objects present at a patch's git ref and returns each object's Library path, resolved display name, and granular type (e.g. "playbook", "dashboar #
POST /textql.rpc.public.patches.OntologyManagementService/ListPatchReviewers ListPatchReviewers #
POST /textql.rpc.public.patches.OntologyManagementService/ListPatches ListPatches #
POST /textql.rpc.public.patches.OntologyManagementService/ListSkills ListSkills #
POST /textql.rpc.public.patches.OntologyManagementService/PlanOntologyMerge PlanOntologyMerge #
POST /textql.rpc.public.patches.OntologyManagementService/PreviewOntologyPullFromRemote PreviewOntologyPullFromRemote #
POST /textql.rpc.public.patches.OntologyManagementService/PullOntologyFromRemote PullOntologyFromRemote #
POST /textql.rpc.public.patches.OntologyManagementService/PushOntologyToRemote PushOntologyToRemote #
POST /textql.rpc.public.patches.OntologyManagementService/RecoverOntology RecoverOntology #
POST /textql.rpc.public.patches.OntologyManagementService/RemoveOntologyRemote Lists the skills under the ontology's flat skills/ root that the caller can read (OWNERS-filtered). Returns display metadata only — never instruction bodies — feeding the chat comp #
POST /textql.rpc.public.patches.OntologyManagementService/RemoveOntologySubmodule RemoveOntologySubmodule #
POST /textql.rpc.public.patches.OntologyManagementService/RenameOntologyFile RenameOntologyFile #
POST /textql.rpc.public.patches.OntologyManagementService/RequestPatchReview RequestPatchReview #
POST /textql.rpc.public.patches.OntologyManagementService/ResolveOntologySyncConflict TriggerConfigDriftReconcile forces an immediate config-sync catch-up for the caller's org: if the Ontology repo's live HEAD differs from the last reconciled commit, it enqueues a r #
POST /textql.rpc.public.patches.OntologyManagementService/RestorePatch RestorePatch #
POST /textql.rpc.public.patches.OntologyManagementService/RevertPatch RevertPatch #
POST /textql.rpc.public.patches.OntologyManagementService/SaveAllObjectsAsConfig SaveAllObjectsAsConfig #
POST /textql.rpc.public.patches.OntologyManagementService/SaveObjectAsConfig SaveObjectAsConfig #
POST /textql.rpc.public.patches.OntologyManagementService/SetOntologyFileGolden Deprecated: use SetOntologyOwners with the complete desired entry set. #
POST /textql.rpc.public.patches.OntologyManagementService/SetOntologyOwners SetOntologyOwners #
POST /textql.rpc.public.patches.OntologyManagementService/TriggerConfigDriftReconcile TriggerConfigDriftReconcile #
POST /textql.rpc.public.patches.OntologyManagementService/UpdateApprovalRule UpdateApprovalRule #
POST /textql.rpc.public.patches.OntologyManagementService/UpdateContextPatchAutoApproveRule UpdateContextPatchAutoApproveRule #
POST /textql.rpc.public.patches.OntologyManagementService/UpdateOntologySyncConfig UpdateOntologySyncConfig #
POST /textql.rpc.public.patches.OntologyManagementService/UpsertOntologyAnaConfig UpsertOntologyAnaConfig #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/textql-public-rpc-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

textql-platform-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: TextQL API
  version: "1.0.0"
  description: |
    TextQL public API. Generated from protobuf service definitions; internal
    endpoints are excluded via google.api.visibility / file_visibility.
servers:
  - url: https://app.textql.com/rpc/public
paths:
  /textql.rpc.public.agent.AgentService/CreateAgent:
    post:
      tags:
        - AgentService
      summary: CreateAgent
      operationId: AgentService_CreateAgent
      x-speakeasy-group: agents
      x-speakeasy-name-override: create
      parameters:
        - name: Connect-Protocol-Version
          in: header
          required: true
          schema:
            $ref: '#/components/schemas/connect-protocol-version'
        - name: Connect-Timeout-Ms
          in: header
          schema:
            $ref: '#/components/schemas/connect-timeout-header'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/textql.rpc.public.agent.CreateAgentRequest'
        required: true
      responses:
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connect.error'
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/textql.rpc.public.agent.CreateAgentResponse'
      x-codeSamples:
        - lang: typescript
          label: TypeScript (SDK)
          source: |-
            import { Textql } from "@textql/sdk";

            const textql = new Textql({
              apiKey: process.env["TEXTQL_API_KEY"] ?? "",
            });

            async function run() {
              const result = await textql.agents.create({
                body: {},
              });

              console.log(result);
            }

            run();
        - lang: python
          label: Python (SDK)
          source: |-
            import os
            from textql_sdk import Textql


            with Textql(
                api_key=os.getenv("TEXTQL_API_KEY", ""),
            ) as textql:

                res = textql.agents.create()

                # Handle response
                print(res)
  /textql.rpc.public.agent.AgentService/DeleteAgent:
    post:
      tags:
        - AgentService
      summary: DeleteAgent
      operationId: AgentService_DeleteAgent
      x-speakeasy-group: agents
      x-speakeasy-name-override: delete
      parameters:
        - name: Connect-Protocol-Version
          in: header
          required: true
          schema:
            $ref: '#/components/schemas/connect-protocol-version'
        - name: Connect-Timeout-Ms
          in: header
          schema:
            $ref: '#/components/schemas/connect-timeout-header'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/textql.rpc.public.agent.DeleteAgentRequest'
        required: true
      responses:
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connect.error'
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/google.protobuf.Empty'
      x-codeSamples:
        - lang: typescript
          label: TypeScript (SDK)
          source: |-
            import { Textql } from "@textql/sdk";

            const textql = new Textql({
              apiKey: process.env["TEXTQL_API_KEY"] ?? "",
            });

            async function run() {
              const result = await textql.agents.delete({
                body: {},
              });

              console.log(result);
            }

            run();
        - lang: python
          label: Python (SDK)
          source: |-
            import os
            from textql_sdk import Textql


            with Textql(
                api_key=os.getenv("TEXTQL_API_KEY", ""),
            ) as textql:

                res = textql.agents.delete()

                # Handle response
                print(res)
  /textql.rpc.public.agent.AgentService/DuplicateAgent:
    post:
      tags:
        - AgentService
      summary: DuplicateAgent
      operationId: AgentService_DuplicateAgent
      x-speakeasy-group: agents
      x-speakeasy-name-override: duplicate
      parameters:
        - name: Connect-Protocol-Version
          in: header
          required: true
          schema:
            $ref: '#/components/schemas/connect-protocol-version'
        - name: Connect-Timeout-Ms
          in: header
          schema:
            $ref: '#/components/schemas/connect-timeout-header'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/textql.rpc.public.agent.DuplicateAgentRequest'
        required: true
      responses:
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connect.error'
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/textql.rpc.public.agent.DuplicateAgentResponse'
      x-codeSamples:
        - lang: typescript
          label: TypeScript (SDK)
          source: |-
            import { Textql } from "@textql/sdk";

            const textql = new Textql({
              apiKey: process.env["TEXTQL_API_KEY"] ?? "",
            });

            async function run() {
              const result = await textql.agents.duplicate({
                body: {},
              });

              console.log(result);
            }

            run();
        - lang: python
          label: Python (SDK)
          source: |-
            import os
            from textql_sdk import Textql


            with Textql(
                api_key=os.getenv("TEXTQL_API_KEY", ""),
            ) as textql:

                res = textql.agents.duplicate()

                # Handle response
                print(res)
  /textql.rpc.public.agent.AgentService/GetAgent:
    post:
      tags:
        - AgentService
      summary: GetAgent
      operationId: AgentService_GetAgent
      x-speakeasy-group: agents
      x-speakeasy-name-override: getAgent
      parameters:
        - name: Connect-Protocol-Version
          in: header
          required: true
          schema:
            $ref: '#/components/schemas/connect-protocol-version'
        - name: Connect-Timeout-Ms
          in: header
          schema:
            $ref: '#/components/schemas/connect-timeout-header'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/textql.rpc.public.agent.GetAgentRequest'
        required: true
      responses:
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connect.error'
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/textql.rpc.public.agent.GetAgentResponse'
      x-codeSamples:
        - lang: typescript
          label: TypeScript (SDK)
          source: |-
            import { Textql } from "@textql/sdk";

            const textql = new Textql({
              apiKey: process.env["TEXTQL_API_KEY"] ?? "",
            });

            async function run() {
              const result = await textql.agents.getAgent({
                body: {},
              });

              console.log(result);
            }

            run();
        - lang: python
          label: Python (SDK)
          source: |-
            import os
            from textql_sdk import Textql


            with Textql(
                api_key=os.getenv("TEXTQL_API_KEY", ""),
            ) as textql:

                res = textql.agents.get_agent()

                # Handle response
                print(res)
  /textql.rpc.public.agent.AgentService/GetAgentDBSchema:
    post:
      tags:
        - AgentService
      summary: GetAgentDBSchema
      operationId: AgentService_GetAgentDBSchema
      x-speakeasy-group: agents
      x-speakeasy-name-override: getDBSchema
      parameters:
        - name: Connect-Protocol-Version
          in: header
          required: true
          schema:
            $ref: '#/components/schemas/connect-protocol-version'
        - name: Connect-Timeout-Ms
          in: header
          schema:
            $ref: '#/components/schemas/connect-timeout-header'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/textql.rpc.public.agent.GetAgentDBSchemaRequest'
        required: true
      responses:
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connect.error'
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/textql.rpc.public.agent.GetAgentDBSchemaResponse'
      x-codeSamples:
        - lang: typescript
          label: TypeScript (SDK)
          source: |-
            import { Textql } from "@textql/sdk";

            const textql = new Textql({
              apiKey: process.env["TEXTQL_API_KEY"] ?? "",
            });

            async function run() {
              const result = await textql.agents.getDBSchema({
                body: {},
              });

              console.log(result);
            }

            run();
        - lang: python
          label: Python (SDK)
          source: |-
            import os
            from textql_sdk import Textql


            with Textql(
                api_key=os.getenv("TEXTQL_API_KEY", ""),
            ) as textql:

                res = textql.agents.get_db_schema()

                # Handle response
                print(res)
  /textql.rpc.public.agent.AgentService/GetAgentDBTablePreview:
    post:
      tags:
        - AgentService
      summary: GetAgentDBTablePreview
      operationId: AgentService_GetAgentDBTablePreview
      x-speakeasy-group: agents
      x-speakeasy-name-override: getDBTablePreview
      parameters:
        - name: Connect-Protocol-Version
          in: header
          required: true
          schema:
            $ref: '#/components/schemas/connect-protocol-version'
        - name: Connect-Timeout-Ms
          in: header
          schema:
            $ref: '#/components/schemas/connect-timeout-header'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/textql.rpc.public.agent.GetAgentDBTablePreviewRequest'
        required: true
      responses:
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connect.error'
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/textql.rpc.public.agent.GetAgentDBTablePreviewResponse'
      x-codeSamples:
        - lang: typescript
          label: TypeScript (SDK)
          source: |-
            import { Textql } from "@textql/sdk";

            const textql = new Textql({
              apiKey: process.env["TEXTQL_API_KEY"] ?? "",
            });

            async function run() {
              const result = await textql.agents.getDBTablePreview({
                body: {},
              });

              console.log(result);
            }

            run();
        - lang: python
          label: Python (SDK)
          source: |-
            import os
            from textql_sdk import Textql


            with Textql(
                api_key=os.getenv("TEXTQL_API_KEY", ""),
            ) as textql:

                res = textql.agents.get_db_table_preview()

                # Handle response
                print(res)
  /textql.rpc.public.agent.AgentService/GetAgentRun:
    post:
      tags:
        - AgentService
      summary: GetAgentRun
      operationId: AgentService_GetAgentRun
      x-speakeasy-group: agents
      x-speakeasy-name-override: getRun
      parameters:
        - name: Connect-Protocol-Version
          in: header
          required: true
          schema:
            $ref: '#/components/schemas/connect-protocol-version'
        - name: Connect-Timeout-Ms
          in: header
          schema:
            $ref: '#/components/schemas/connect-timeout-header'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/textql.rpc.public.agent.GetAgentRunRequest'
        required: true
      responses:
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connect.error'
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/textql.rpc.public.agent.GetAgentRunResponse'
      x-codeSamples:
        - lang: typescript
          label: TypeScript (SDK)
          source: |-
            import { Textql } from "@textql/sdk";

            const textql = new Textql({
              apiKey: process.env["TEXTQL_API_KEY"] ?? "",
            });

            async function run() {
              const result = await textql.agents.getRun({
                body: {},
              });

              console.log(result);
            }

            run();
        - lang: python
          label: Python (SDK)
          source: |-
            import os
            from textql_sdk import Textql


            with Textql(
                api_key=os.getenv("TEXTQL_API_KEY", ""),
            ) as textql:

                res = textql.agents.get_run()

                # Handle response
                print(res)
  /textql.rpc.public.agent.AgentService/ListAgentRuns:
    post:
      tags:
        - AgentService
      summary: ListAgentRuns
      operationId: AgentService_ListAgentRuns
      x-speakeasy-group: agents
      x-speakeasy-name-override: listRuns
      parameters:
        - name: Connect-Protocol-Version
          in: header
          required: true
          schema:
            $ref: '#/components/schemas/connect-protocol-version'
        - name: Connect-Timeout-Ms
          in: header
          schema:
            $ref: '#/components/schemas/connect-timeout-header'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/textql.rpc.public.agent.ListAgentRunsRequest'
        required: true
      responses:
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connect.error'
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/textql.rpc.public.agent.ListAgentRunsResponse'
      x-codeSamples:
        - lang: typescript
          label: TypeScript (SDK)
          source: |-
            import { Textql } from "@textql/sdk";

            const textql = new Textql({
              apiKey: process.env["TEXTQL_API_KEY"] ?? "",
            });

            async function run() {
              const result = await textql.agents.listRuns({
                body: {},
              });

              console.log(result);
            }

            run();
        - lang: python
          label: Python (SDK)
          source: |-
            import os
            from textql_sdk import Textql


            with Textql(
                api_key=os.getenv("TEXTQL_API_KEY", ""),
            ) as textql:

                res = textql.agents.list_runs()

                # Handle response
                print(res)
  /textql.rpc.public.agent.AgentService/ListAgents:
    post:
      tags:
        - AgentService
      summary: ListAgents
      operationId: AgentService_ListAgents
      x-speakeasy-group: agents
      x-speakeasy-name-override: list
      parameters:
        - name: Connect-Protocol-Version
          in: header
          required: true
          schema:
            $ref: '#/components/schemas/connect-protocol-version'
        - name: Connect-Timeout-Ms
          in: header
          schema:
            $ref: '#/components/schemas/connect-timeout-header'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/textql.rpc.public.agent.ListAgentsRequest'
        required: true
      responses:
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connect.error'
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/textql.rpc.public.agent.ListAgentsResponse'
      x-codeSamples:
        - lang: typescript
          label: TypeScript (SDK)
          source: |-
            import { Textql } from "@textql/sdk";

            const textql = new Textql({
              apiKey: process.env["TEXTQL_API_KEY"] ?? "",
            });

            async function run() {
              const result = await textql.agents.list({
                body: {},
              });

              console.log(result);
            }

            run();
        - lang: python
          label: Python (SDK)
          source: |-
            import os
            from textql_sdk import Textql


            with Textql(
                api_key=os.getenv("TEXTQL_API_KEY", ""),
            ) as textql:

                res = textql.agents.list()

                # Handle response
                print(res)
  /textql.rpc.public.agent.AgentService/ResetAgentAvatar:
    post:
      tags:
        - AgentService
      summary: ResetAgentAvatar
      operationId: AgentService_ResetAgentAvatar
      x-speakeasy-group: agents
      x-speakeasy-name-override: resetAgentAvatar
      parameters:
        - name: Connect-Protocol-Version
          in: header
          required: true
          schema:
            $ref: '#/components/schemas/connect-protocol-version'
        - name: Connect-Timeout-Ms
          in: header
          schema:
            $ref: '#/components/schemas/connect-timeout-header'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/textql.rpc.public.agent.ResetAgentAvatarRequest'
        required: true
      responses:
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connect.error'
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/textql.rpc.public.agent.ResetAgentAvatarResponse'
      x-codeSamples:
        - lang: typescript
          label: TypeScript (SDK)
          source: |-
            import { Textql } from "@textql/sdk";

            const textql = new Textql({
              apiKey: process.env["TEXTQL_API_KEY"] ?? "",
            });

            async function run() {
              const result = await textql.agents.resetAgentAvatar({
                body: {},
              });

              console.log(result);
            }

            run();
        - lang: python
          label: Python (SDK)
          source: |-
            import os
            from textql_sdk import Textql


            with Textql(
                api_key=os.getenv("TEXTQL_API_KEY", ""),
            ) as textql:

                res = textql.agents.reset_agent_avatar()

                # Handle response
                print(res)
  /textql.rpc.public.agent.AgentService/TriggerAgent:
    post:
      tags:
        - AgentService
      summary: TriggerAgent
      operationId: AgentService_TriggerAgent
      x-speakeasy-group: agents
      x-speakeasy-name-override: triggerAgent
      parameters:
        - name: Connect-Protocol-Version
          in: header
          required: true
          schema:
            $ref: '#/components/schemas/connect-protocol-version'
        - name: Connect-Timeout-Ms
          in: header
          schema:
            $ref: '#/components/schemas/connect-timeout-header'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/textql.rpc.public.agent.TriggerAgentRequest'
        required: true
      responses:
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connect.error'
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/textql.rpc.public.agent.TriggerAgentResponse'
      x-codeSamples:
        - lang: typescript
          label: TypeScript (SDK)
          source: |-
            import { Textql } from "@textql/sdk";

            const textql = new Textql({
              apiKey: process.env["TEXTQL_API_KEY"] ?? "",
            });

            async function run() {
              const result = await textql.agents.triggerAgent({
                body: {},
              });

              console.log(result);
            }

            run();
        - lang: python
          label: Python (SDK)
          source: |-
            import os
            from textql_sdk import Textql


            with Textql(
                api_key=os.getenv("TEXTQL_API_KEY", ""),
            ) as textql:

                res = textql.agents.trigger_agent()

                # Handle response
                print(res)
  /textql.rpc.public.agent.AgentService/UpdateAgent:
    post:
      tags:
        - AgentService
      summary: UpdateAgent
      operationId: AgentService_UpdateAgent
      x-speakeasy-group: agents
      x-speakeasy-name-override: update
      parameters:
        - name: Connect-Protocol-Version
          in: header
          required: true
          schema:
            $ref: '#/components/schemas/connect-protocol-version'
        - name: Connect-Timeout-Ms
          in: header
          schema:
            $ref: '#/components/schemas/connect-timeout-header'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/textql.rpc.public.agent.UpdateAgentRequest'
        required: true
      responses:
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connect.error'
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/textql.rpc.public.agent.UpdateAgentResponse'
      x-codeSamples:
        - lang: typescript
          label: TypeScript (SDK)
          source: |-
            import { Textql } from "@textql/sdk";

            const textql = new Textql({
              apiKey: process.env["TEXTQL_API_KEY"] ?? "",
            });

            async function run() {
              const result = await textql.agents.update({
                body: {},
              });

              console.log(result);
            }

            run();
        - lang: python
          label: Python (SDK)
          source: |-
            import os
            from textql_sdk import Textql


            with Textql(
                api_key=os.getenv("TEXTQL_API_KEY", ""),
            ) as textql:

                res = textql.agents.update()

                # Handle response
                print(res)
  /textql.rpc.public.agent.AgentService/UploadAgentAvatar:
    post:
      tags:
        - AgentService
      summary: UploadAgentAvatar
      operationId: AgentService_UploadAgentAvatar
      x-speakeasy-group: agents
      x-speakeasy-name-override: uploadAgentAvatar
      parameters:
        - name: Connect-Protocol-Version
          in: header
          required: true
          schema:
            $ref: '#/components/schemas/connect-protocol-version'
        - name: Connect-Timeout-Ms
          in: header
          schema:
            $ref: '#/components/schemas/connect-timeout-header'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/textql.rpc.public.agent.UploadAgentAvatarRequest'
        required: true
      responses:
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connect.error'
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/textql.rpc.public.agent.UploadAgentAvatarResponse'
      x-codeSamples:
        - lang: typescript
          label: TypeScript (SDK)
          source: |-
            import { Textql } from "@textql/sdk";

            const textql = new Textql({
              apiKey: process.env["TEXTQL_API_KEY"] ?? "",
            });

            async function run() {
              const result = await textql.agents.uploadAgentAvatar({
                body: {},
              });

              console.log(result);
            }

            run();
        - lang: python
          label: Python (SDK)
          source: |-
            import os
            from textql_sdk import Textql


            with Textql(
                api_key=os.getenv("TEXTQL_API_KEY", ""),
            ) as textql:

                res = textql.agents.upload_agent_avatar()

                # Handle response
                print(res)
  /textql.rpc.public.app.AppService/AppHeartbeat:
    post:
      tags:
        - AppService
      summary: AppHeartbeat
      operationId: AppService_AppHeartbeat
      x-speakeasy-group: apps
      x-speakeasy-name-override: heartbeat
      parameters:
        - name: Connect-Protocol-Version
          in: header
          required: true
          schema:
            $ref: '#/components/schemas/connect-protocol-version'
        - name: Connect-Timeout-Ms
          in: header
          schema:
            $ref: '#/components/schemas/connect-timeout-header'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/textql.rpc.public.app.AppHeartbeatRequest'
        required: true
      responses:
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connect.error'
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/google.protobuf.Empty'
      x-codeSamples:
        - lang: typescript
          label: TypeScript (SDK)
          source: |-
            import { Textql } from "@textql/sdk";

            const textql = new Textql({
              apiKey: process.env["TEXTQL_API_KEY"] ?? "",
            });

            async function run() {
              const result = await textql.apps.heartbeat({
                body: {},
              });

              console.log(result);
            }

            run();
        - lang: python
          label: Python (SDK)
          source: |-
            import os
            from textql_sdk import Textql


            with Textql(
                api_key=os.getenv("TEXTQL_API_KEY", ""),
            ) as textql:

                res = textql.apps.heartbeat()

                # Handle response
                print(res)
  /textql.rpc.public.app.AppService/CreateApp:
    post:
      tags:
        - AppService
      summary: CreateApp
      operationId: AppService_CreateApp
      x-speakeasy-group: apps
      x-speakeasy-name-override: createApp
      parameters:
        - name: Connect-Protocol-Version
          in: header
          required: true
          schema:
            $ref: '#/components/schemas/connect-protocol-version'
        - name: Connect-Timeout-Ms
          in: header
          schema:
            $ref: '#/components/schemas/connect-timeout-header'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/textql.rpc.public.app.CreateAppRequest'
        required: true
      responses:
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connect.error'
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/textql.rpc.public.app.CreateAppResponse'
      x-codeSamples:
        - lang: typescript
          label: TypeScript (SDK)
          source: |-
            import { Textql } from "@textql/sdk";

            const textql = new Textql({
              apiKey: process.env["TEXTQL_API_KEY"] ?? "",
            });

            async function run() {
              const result = await textql.apps.createApp({
                body: {},
              });

              console.log(result);
            }

            run();
        - lang: python
          label: Python (SDK)
          source: |-
            import os
            from textql_sdk import Textql


            with Textql(
                api_key=os.getenv("TEXTQL_API_KEY", ""),
            ) as textql:

                res = textql.apps.create_app()

                # Handle response
                print(res)
  /textql.rpc.public.app.AppService/DeleteApp:
    post:
      tags:
        - AppService
      summary: DeleteApp
      operationId: AppService_DeleteApp
      x-speakeasy-group: apps
      x-speakeasy-name-override: deleteApp
      parameters:
        - name: Connect-Protocol-Version
          in: header
          required: true
          schema:
            $ref: '#/components/schemas/connect-protocol-version'
        - name: Connect-Timeout-Ms
          in: header
          schema:
            $ref: '#/components/schemas/connect-timeout-header'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/textql.rpc.public.app.DeleteAppRequest'
        required: true
      responses:
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connect.error'
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/google.protobuf.Empty'
      x-codeSamples:
        - lang: typescript
          label: TypeScript (SDK)
          source: |-
            import { Textql } from "@textql/sdk";

            const textql = new Textql({
              apiKey: process.env["TEXTQL_API_KEY"] ?? "",
            });

            async function run() {
              const result = await textql.apps.deleteApp({
                body: {},
              });

              console.log(result);
            }

            run();
        - lang: python
          label: Python (SDK)
          source: |-
            import os
            from textql_sdk import Textql


            with Textql(
                api_key=os.getenv("TEXTQL_API_KEY", ""),
            ) as textql:

                res = textql.apps.delete_app()

                # Handle response
                print(res)
  /textql.rpc.public.app.AppService/DuplicateApp:
    post:
      tags:
        - AppService
      summary: Duplicates an app the caller can view into a new app they own,  named "Copy of <name>". Copies code/files/data sources/compute functions/  schedule; never carries over the source's data snapshot.
      description: |-
        Duplicates an app the caller can view into a new app they own,
         name

# --- truncated at 32 KB (1580 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/textql/refs/heads/main/openapi/textql-platform-api-openapi.yml