All API requests should be made to
https://obsidyan.ai/api/v1Test the API directly from your browser. Try the status endpoint to verify connectivity.
Check API health and status
Note: Authentication is required for most endpoints. Get your API key from the settings page.
// Click 'Test Endpoint' to see the responseThe Obsidyan API uses API keys for authentication. Include your API key in the Authorization header of all requests.
Bearer token in Authorization header
Authorization: Bearer your_api_keyCreate keys in Settings. They start with oip_ and are shown once.
readRead your data. New keys have this scope by default.
writeAlso create, update and delete, and run AI features.
adminEverything write can do.
Successful responses return { success: true, data, meta }, where meta holds the version, a timestamp and a request_id. Every request runs as the key's owner, so it only sees that account's data. Requests other than GET need a key with the write scope.
/v1/patents/v1/patents/v1/patents/{id}/v1/patents/{id}/v1/patents/{id}/v1/claims/v1/claims/v1/claims/{id}/v1/claims/{id}/v1/sections/v1/sections/v1/prior-art/search/v1/prior-art/analyze/v1/filings/v1/filings/v1/filings/{id}/status/v1/drawings/v1/drawings/generate/v1/office-actions/v1/office-actions/{id}/v1/office-actions/{id}/analyze/v1/office-actions/{id}/respond/v1/examiner-stats/v1/deadlines/v1/quality-reviews/v1/quality-reviews/{id}/v1/quality-reviews/run/v1/quality-reviews/v1/documents/v1/documents/{id}/v1/analytics/portfolio/v1/analytics/trends/v1/ai/draft/v1/ai/claim-options/v1/ai/chat/v1/credits/balance/v1/credits/transactions/v1/organizations/v1/organizations/v1/organizations/{id}/v1/organizations/{id}/v1/organizations/{id}/members/v1/workspaces/v1/workspaces/v1/notifications/v1/notifications/{id}/v1/notifications/read-all/v1/inventions/v1/inventions/v1/inventions/{id}/v1/inventions/{id}/v1/inventions/{id}/v1/statusThe API is plain HTTP and JSON, so any HTTP client works. There are no official SDKs yet.
import requests
API_URL = "https://obsidyan.ai/api/v1"
HEADERS = {"Authorization": "Bearer your_api_key"}
# List your patent applications
patents = requests.get(f"{API_URL}/patents", headers=HEADERS).json()["data"]["items"]
# Create a new application (needs a key with the write scope)
patent = requests.post(
f"{API_URL}/patents",
headers=HEADERS,
json={
"title": "Adaptive Battery Thermal Management System",
"description": "A system that adjusts coolant flow from cell temperature readings...",
"technology_area": "Energy storage",
"filing_type": "provisional",
},
).json()["data"]
# Save a section, then run the draft checks on the saved sections (free, no AI)
requests.put(
f"{API_URL}/sections",
headers=HEADERS,
json={
"patent_id": patent["id"],
"section_type": "abstract",
"content": "A thermal management system for a battery pack...",
},
)
review = requests.post(
f"{API_URL}/quality-reviews/run",
headers=HEADERS,
json={"patent_id": patent["id"]},
).json()["data"]Each API key can make 100 requests per minute. Going over returns a 429 until the window resets.
AI endpoints and MCP tools spend the key owner's credits at the prices on the Pricing page, only when the work succeeds, and return a 402 if the balance is too low. They need a key with the write scope. The first draft on an application costs 2,400 credits and covers every section of it, whether it's drafted in the app or through the API, for up to 100 runs. Claim options are free once the application is drafted. Quality checks and examiner statistics don't use AI or credits.
AI endpoints return a 503 when they aren't available. GET /v1/status reports this as services.ai: "operational" or "unavailable".
Every API response includes rate limit information
X-RateLimit-LimitMaximum requests allowed in the current window
X-RateLimit-RemainingRequests remaining in the current window
X-RateLimit-ResetUnix timestamp when the rate limit resets
The API uses conventional HTTP response codes. Error bodies carry a machine-readable code and type, a message, and the request_id to quote if you contact us.
{
"success": false,
"error": {
"code": "missing_field",
"message": "The 'title' field is required",
"param": "title",
"type": "validation_error",
"doc_url": "https://obsidyan.ai/api#errors"
},
"meta": {
"version": "v1",
"timestamp": "2026-11-07T12:00:00.000Z",
"request_id": "req_..."
}
}The current version is v1. The version is part of the URL, as in /api/v1/patents.
Create an API key in Settings and start with GET /v1/status.
Connect AI agents to Obsidyan via the Model Context Protocol
The Model Context Protocol (MCP) is an open standard that lets AI agents like Claude, Cursor, and Windsurf interact with external tools and data sources in a structured way.
Our MCP server exposes 27 tools: applications, disclosures, prior art, drafting, claim options, draft checks, office actions, examiner statistics, filings, deadlines, drawings and more.
list_patent_applicationsget_patent_applicationcreate_patent_applicationupdate_patent_applicationlist_invention_disclosuresget_invention_disclosurecreate_invention_disclosuresearch_prior_artlist_prior_art_searcheslist_drafting_sectionsgenerate_draft_sectionpropose_claim_optionscheck_draftlist_office_actionsanalyze_office_actiongenerate_office_action_responseget_examiner_statslist_filing_recordslist_filing_deadlineslist_documentslist_quality_reviewschat_with_patent_assistantlist_notificationsmark_notification_readget_portfolio_summarygenerate_patent_drawingget_credit_balanceTools that create or change data need a key with the write scope. The AI tools (prior art search, drafting, drawings, office action analysis and responses, chat) charge credits from the key owner's balance and are available when GET /v1/status reports AI as operational. Claim options are free once an application is drafted; check_draft and get_examiner_stats use no AI and no credits.
Add this configuration to your AI agent or MCP client
{
"mcpServers": {
"obsidyan": {
"url": "https://obsidyan.ai/api/mcp",
"transport": "streamable-http",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}YOUR_API_KEY with an API key from Settings. It only sees that account's data.npx @modelcontextprotocol/inspector
Use the MCP Inspector to browse available tools, test requests, and validate responses interactively.