context7
Documentation context retrieval using the Context7 API.
Prerequisites
Requires CONTEXT7_API_KEY environment variable to be set. API keys start with ctx7sk.
API Endpoint
GET https://context7.com/api/v2/context
Retrieve documentation context for a specific library.
Get Context
Retrieve documentation context for a specific library.
Request:
curl -s "https://context7.com/api/v2/context?libraryId=/facebook/react&query=useEffect" \
-H "Authorization: Bearer $CONTEXT7_API_KEY"
Response: Plain text/markdown format with code examples and source references:
### Perform Side Effects in React Function Components using useEffect Hook
Source: https://context7.com/facebook/react/llms.txt
The `useEffect` hook enables functional components to perform side effects...
\`\`\`jsx
import { useState, useEffect } from 'react';
function UserProfile({ userId }) {
// ... code example ...
}
\`\`\`
--------------------------------
### React > Hooks > useEffect
Source: https://context7.com/facebook/react/llms.txt
The `useEffect` hook performs side effects in function components...
Example Usage
# Get documentation for React useEffect hook
curl -s "https://context7.com/api/v2/context?libraryId=/facebook/react&query=useEffect" \
-H "Authorization: Bearer $CONTEXT7_API_KEY"
# Get documentation for a specific concept
curl -s "https://context7.com/api/v2/context?libraryId=/facebook/react&query=useState%20hook" \
-H "Authorization: Bearer $CONTEXT7_API_KEY"
# Save to file for reference
curl -s "https://context7.com/api/v2/context?libraryId=/facebook/react&query=hooks" \
-H "Authorization: Bearer $CONTEXT7_API_KEY" > react-hooks.md
# Search with URL-encoded query
curl -s "https://context7.com/api/v2/context?libraryId=/vercel/next.js&query=app%20router" \
-H "Authorization: Bearer $CONTEXT7_API_KEY"
Query Parameters
| Parameter | Type | Description |
|---|---|---|
libraryId |
string | Required. Library identifier (e.g., /facebook/react, /vercel/next.js). |
query |
string | Required. Natural language query about the documentation topic. |
Library ID Format
Library IDs follow the pattern /owner/repo:
| Example | Description |
|---|---|
/facebook/react |
React library |
/vercel/next.js |
Next.js framework |
Response Format
Context Response
The /api/v2/context endpoint returns plain text in markdown format with the following structure:
- Multiple sections separated by
-------------------------------- - Each section contains:
- A heading (e.g.,
### Component Name) - A Source URL
- Description text explaining the concept
- Code examples in fenced code blocks
- A heading (e.g.,
Example structure:
### Topic Title
Source: https://context7.com/owner/repo/llms.txt
Description text explaining the concept...
\`\`\`language
// Code example
\`\`\`
--------------------------------
### Another Topic
Source: https://github.com/owner/repo/blob/...
More documentation...
Error Handling
| Status | Meaning | Action |
|---|---|---|
200 |
Success | Process normally |
202 |
Accepted - Library not finalized | Wait and retry |
301 |
Moved - Library redirected | Use new ID from redirectUrl |
400 |
Bad Request | Check query parameters |
401 |
Unauthorized - Invalid API key | Verify key (starts with ctx7sk) |
403 |
Forbidden | Check library access permissions |
404 |
Not Found | Verify the library ID |
422 |
Unprocessable - Library too large/no code | Try different library |
429 |
Too Many Requests | Wait for Retry-After header |
500 |
Internal Server Error | Retry with backoff |
503 |
Service Unavailable | Retry later |
Rate Limits
- Without API key: Low rate limits, no custom configuration
- With API key: Higher limits based on plan
- View usage at https://context7.com/dashboard
Best Practices
-
Be specific with queries: Use detailed natural language
# Good curl -s ".../context?...&query=How%20to%20implement%20authentication%20with%20middleware" # Less optimal curl -s ".../context?...&query=auth" -
Cache responses: Documentation updates infrequently, cache for hours or days
-
Handle rate limits: Implement exponential backoff for 429 errors
-
Use specific versions: Pin to exact versions for consistent results
curl -s ".../context?libraryId=/vercel/next.js/v15.1.8&query=..."
Always check that CONTEXT7_API_KEY is set before making requests.