REST API v1 and the ResolveGrid MCP server. Base URL, authentication, scopes, endpoints, webhooks, errors, and rate limits. Preview documentation; the OpenAPI 3.1 specification is the source of truth once published.
The ResolveGrid API is a versioned REST API with JSON request and response bodies. Every capability a technician uses in ResolveGrid is available through it: sessions, AI session summaries, troubleshooting, knowledge, assets, and tenant administration. The MCP server exposes the same capabilities as tools for AI agents and calls these endpoints under the hood.
https://api.resolvegrid.ai/v1
Regional endpoints are available for EU-resident tenants. On-premises and air-gapped deployments use the hostname assigned at installation.
All requests require a bearer token. Three grant types are supported:
curl https://api.resolvegrid.ai/v1/sessions \ -H "Authorization: Bearer $RESOLVEGRID_TOKEN" \ -H "Content-Type: application/json"
Customer SSO (SAML or OIDC) federates into the same token issuer used by the ResolveGrid apps, so an agent signing in through Now Assist or Claude uses the same identity your technicians already have.
Every token carries a list of scopes. Each endpoint and each MCP tool declares the scope it requires; a request without it returns 403 insufficient_scope.
sessions:read List and read sessions, summaries, transcripts, and mediasessions:write Create and end sessions, add participantstroubleshoot Run AI troubleshooting and submit feedbackknowledge:read Search and read knowledgeknowledge:write Upload knowledge and register sync sourcesassets:read Read asset records and historyadmin Manage users, skill groups, API keys, and webhooksexternal_ref such as a work order task number. It is echoed on every event and summary so your system can route without a lookup.Idempotency-Key header on POST requests. Repeating a request with the same key returns the original result.data and next_cursor. Pass cursor to fetch the next page; limit defaults to 50, maximum 200.A session is a live visual-assist interaction. Creating one returns a browser-mode link that opens without an app install, plus a deep link for the ResolveGrid Assist app.
POST /v1/sessions
{
"external_ref": "WOT0012345",
"asset_id": "ast_7f3a",
"requester": { "name": "J. Alvarez", "role": "technician" },
"expert_group": "hvac-tier2",
"expires_in": 3600
}{
"id": "ses_01HZX",
"status": "created",
"external_ref": "WOT0012345",
"browser_link": "https://assist.resolvegrid.ai/s/k9d2...",
"app_link": "resolvegrid://session/ses_01HZX",
"expires_at": "2026-10-26T20:15:00Z"
}GET /v1/sessions/{id} Session record, participants, timing, and statusGET /v1/sessions?external_ref=&asset_id=&status= List sessions with filtersPOST /v1/sessions/{id}/end End a session; triggers summary generationPOST /v1/sessions/{id}/participants Invite a named expert or a skill groupGET /v1/sessions/{id}/summary AI-generated summary: steps taken, parts used, resolution, follow-ups, image referencesGET /v1/sessions/{id}/transcript Timestamped transcript of chat and voiceGET /v1/sessions/{id}/media Captured images and recordings as signed URLs that expire after 15 minutes{
"session_id": "ses_01HZX",
"resolution": "resolved",
"summary": "Compressor fault traced to a failed pressure transducer...",
"steps": [ { "n": 1, "text": "Verified fault code 221 on the controller" } ],
"parts_used": [ { "part_number": "HK05ZG008", "qty": 1 } ],
"follow_ups": [ "Schedule refrigerant charge check in 30 days" ],
"images": [ { "id": "img_3a", "caption": "Transducer wiring", "url": "https://media..." } ]
}Runs the ResolveGrid AI troubleshooting agent against a symptom and asset context. The call is stateless; pass a conversation_id to continue a prior exchange. Responses are grounded only in the tenant's published knowledge and cite their sources.
POST /v1/troubleshoot
{
"asset_id": "ast_7f3a",
"symptom": "Chiller trips on high discharge pressure within 10 minutes of start",
"observations": [ "Condenser water inlet 95F", "Fault code 221" ],
"external_ref": "WOT0012345"
}{
"id": "ts_9c1e",
"causes": [
{ "rank": 1, "cause": "Condenser water flow restriction", "confidence": 0.72 },
{ "rank": 2, "cause": "Failed discharge pressure transducer", "confidence": 0.19 }
],
"procedure": { "title": "Verify condenser water flow", "steps": [ "..." ] },
"sources": [ { "knowledge_id": "kn_44", "title": "19XR Service Manual, sec. 7.3" } ],
"escalate": { "recommended": false }
}POST /v1/troubleshoot/{id}/feedback Record whether the recommendation resolved the issue. Feeds the knowledge loop.Troubleshooting calls count toward the plan's monthly allowance; see rate limits.
The knowledge store holds the manuals, procedures, articles, and past resolutions that ground every answer. Content uploaded but not published stays invisible to the AI.
GET /v1/knowledge/search?q=&asset_id= Semantic search; returns passages with source and scoreGET /v1/knowledge/{id} A document or article with its sections and citation metadataPOST /v1/knowledge Upload a document or article and attach it to an asset modelPOST /v1/knowledge/sync Register an external source such as a ServiceNow knowledge base (later release)Assets can be native ResolveGrid records or mirrored from your CMDB. Asset context is what the AI and the MCP tools read first.
GET /v1/assets/{id} Model, serial, site, install base, and attached knowledgeGET /v1/assets/{id}/history Sessions, troubleshooting runs, and resolutions for the asset, newest firstPOST /v1/assets/identify Resolve a photo, nameplate text, or barcode to an asset (later release)Requires the admin scope.
GET and POST /v1/users Provision users; supports SSO-linked accountsGET and POST /v1/skill-groups Expert groups that sessions can be routed toGET and POST /v1/api-keys Create, list, and revoke scoped keysGET and POST /v1/webhooks Register endpoints and choose eventsResolveGrid sends a signed POST to your endpoint when an event occurs. Every payload carries the external_ref you supplied. Deliveries are retried with exponential backoff for 24 hours.
session.created, session.started, session.endedsession.summary_readytroubleshoot.completedknowledge.article_proposedPOST https://your-system.example.com/resolvegrid
ResolveGrid-Signature: t=1761508800,v1=5f1a...
Content-Type: application/json
{
"id": "evt_2b8",
"type": "session.summary_ready",
"created_at": "2026-10-26T20:02:11Z",
"data": { "session_id": "ses_01HZX", "external_ref": "WOT0012345" }
}Verify the signature by computing an HMAC-SHA256 of t and the raw body with your webhook secret and comparing it to v1.
Errors use standard HTTP status codes and a JSON body with a stable code.
400 invalid_request A required field is missing or malformed401 unauthorized Missing or expired token403 insufficient_scope Token lacks the scope this endpoint requires404 not_found No object with that ID in this tenant409 idempotency_conflict Same key reused with a different payload429 rate_limited See Retry-After500 internal_error Retry with backoff; include the request_id when contacting support{
"error": { "code": "insufficient_scope", "message": "sessions:write required", "request_id": "req_7d2" }
}Per-tenant and per-token limits apply to every endpoint and are reported in RateLimit-Limit, RateLimit-Remaining, and RateLimit-Reset headers. Sessions, summaries, knowledge search, asset context, and webhooks are unlimited within fair use. POST /v1/troubleshoot is metered against the plan's monthly allowance; usage packs are available for agents that need more.
The ResolveGrid MCP server is a remote server using Streamable HTTP and OAuth 2.1. Each tenant has its own endpoint, and discovery metadata is published at the standard well-known path.
https://mcp.resolvegrid.ai/{tenant}Tools map one-to-one onto the endpoints above and require the same scopes. Every tool returns structured JSON plus a short summary an agent or a person can read.
get_asset_context Asset record, install base, open work orders, recent sessions (assets:read, sessions:read)troubleshoot Ranked causes, recommended procedure, sources (troubleshoot)search_knowledge Semantic search over tenant knowledge (knowledge:read)create_assist_session Browser-mode link and app deep link, tied to an external reference (sessions:write)get_session_status Live state of a session (sessions:read)get_session_summary AI summary of a completed session (sessions:read)record_resolution Writes the outcome to the system of record (sessions:write)Resources: resolvegrid://sessions/{id}, resolvegrid://assets/{id}/history, resolvegrid://knowledge/{id}. Prompts: diagnose_work_order, summarize_for_handoff.
{
"mcpServers": {
"resolvegrid": {
"url": "https://mcp.resolvegrid.ai/acme",
"transport": "streamable-http"
}
}
}In ServiceNow, register the server in AI Agent Studio and add it to an agent as an MCP server tool. In Claude, add it as a connector and approve the OAuth prompt. Any other MCP client works the same way.
The API is versioned in the path. Fields are only added within a version, never removed or renamed. Breaking changes ship as a new version with at least twelve months of overlap.