nango-api-integration
v1.0.0Connect AI agents to 700+ external APIs using Nango. Handles OAuth, authentication flows, and tool calling for any API. Use when integrating agents with external services (Google, Slack, GitHub, Salesforce, etc.), setting up API access for agents, or when you need OAuth/API key management for AI too...
Installation
Please help me install the skill `nango-api-integration` from SkillHub official store.
npx skills add engsathiago/nango-api-integration
Nango API Integration for AI Agents
Nango provides unified API access for AI agents with OAuth handling, 700+ pre-built integrations, and MCP server support. This skill helps you connect your agent to any external API.
Why Nango for Agents?
- 700+ APIs pre-integrated - No need to build each integration from scratch
- 2800+ pre-built actions - Ready-to-use API operations
- MCP servers per app - Model Context Protocol support
- 1:1 API access - No abstraction layer, you see exact API requests
- White-label OAuth - Embeddable auth flows
- Any backend language - Works with Python, Node, etc.
- AI-generated code - Write integration logic with AI
Quick Start
Step 1: Create Nango Account
- Go to https://nango.dev
- Sign up for a free account
- Create a new project
- Get your API key from Settings
Step 2: Install Nango SDK
# Python
pip install nango
# Node.js
npm install @nangohq/node-client
Step 3: Configure Environment
Add to your environment:
NANGO_SECRET_KEY=your-secret-key-here
NANGO_HOST=https://api.nango.dev # or self-hosted
Integration Patterns
Pattern 1: OAuth Flow
For APIs requiring OAuth (Google, Slack, GitHub, etc.):
from nango import Nango
nango = Nango()
# Get OAuth URL
auth_url = nango.get_auth_url(
provider="google",
redirect_uri="https://your-app.com/callback"
)
# User visits auth_url, authorizes, returns with code
# Exchange code for connection
connection = nango.create_connection(
provider="google",
code="auth_code_from_callback",
connection_id="user-google-123"
)
# Now make API calls
result = nango.proxy(
provider="google",
endpoint="/gmail/v1/users/me/messages",
connection_id="user-google-123"
)
Pattern 2: API Key
For APIs using API keys (Stripe, OpenAI, etc.):
from nango import Nango
nango = Nango()
# Set API key for provider
nango.set_credentials(
provider="stripe",
connection_id="user-stripe-123",
credentials={"api_key": "sk_test_xxx"}
)
# Make calls
customers = nango.proxy(
provider="stripe",
endpoint="/v1/customers",
connection_id="user-stripe-123"
)
Pattern 3: MCP Server
For Model Context Protocol integration:
# Get MCP server configuration for a provider
mcp_config = nango.get_mcp_server(
provider="github",
connection_id="user-github-123"
)
# Use with MCP-compatible agents
# The config includes tools, resources, and prompts
Popular API Integrations
| Provider | Use Case | Auth Type |
|---|---|---|
| Gmail, Calendar, Drive | OAuth | |
| Slack | Messages, Channels | OAuth |
| GitHub | Repos, Issues, PRs | OAuth |
| Salesforce | CRM Data | OAuth |
| Stripe | Payments | API Key |
| Notion | Notes, Databases | OAuth |
| Linear | Issues, Projects | OAuth |
| HubSpot | CRM, Marketing | OAuth |
Creating Custom Integrations
Template for New Provider
// integrations/my-custom-api.ts
import { NangoIntegration } from '@nangohq/types';
export default NangoIntegration({
// Provider name
provider: 'my-custom-api',
// Authentication type
auth: {
type: 'api_key', // or 'oauth2', 'basic'
credentials: {
api_key: { type: 'string', required: true }
}
},
// Available actions
actions: {
list_items: {
endpoint: '/items',
method: 'GET',
output: { type: 'array' }
},
create_item: {
endpoint: '/items',
method: 'POST',
input: { type: 'object' },
output: { type: 'object' }
}
}
});
Deploy Custom Integration
# Deploy to Nango
nango deploy integrations/my-custom-api.ts
Error Handling
from nango import Nango, NangoError
try:
result = nango.proxy(
provider="github",
endpoint="/repos/owner/repo/issues",
connection_id="user-github-123"
)
except NangoError as e:
if e.code == "auth_expired":
# Re-authorize
auth_url = nango.get_auth_url("github")
print(f"Please re-authorize: {auth_url}")
elif e.code == "rate_limited":
# Wait and retry
time.sleep(e.retry_after)
else:
raise
Best Practices for Agents
1. Connection Management
- Store connection IDs with user context
- Check connection health before operations
- Implement re-auth flows automatically
2. Error Recovery
- Handle rate limits gracefully
- Cache frequently accessed data
- Provide clear error messages to users
3. Security
- Never expose API keys in prompts
- Use environment variables for secrets
- Implement permission scoping
4. Performance
- Batch operations when possible
- Use webhooks instead of polling
- Implement request caching
MCP Integration for OpenClaw
To use Nango with OpenClaw agents:
# In your OpenClaw skill or tool
from nango import Nango
class NangoTool:
def __init__(self):
self.nango = Nango()
def call_api(self, provider: str, endpoint: str, connection_id: str, **params):
"""Generic API calling tool for any provider."""
return self.nango.proxy(
provider=provider,
endpoint=endpoint,
connection_id=connection_id,
params=params
)
def list_providers(self):
"""List all available providers."""
return self.nango.list_providers()
def get_provider_actions(self, provider: str):
"""Get available actions for a provider."""
return self.nango.get_actions(provider)
Common Issues
Issue: "Connection not found"
- Ensure connection_id matches what was created
- Check if credentials expired
Issue: "Provider not supported"
- Check full list at https://nango.dev/integrations
- Create custom integration for unsupported providers
Issue: "Rate limited"
- Implement exponential backoff
- Consider upgrading Nango plan
Resources
- Nango Dashboard: https://app.nango.dev
- Documentation: https://docs.nango.dev
- Integration Catalog: https://nango.dev/integrations
- GitHub: https://github.com/NangoHQ/nango
- Community: https://nango.dev/community
Pricing
- Free Tier: 10,000 API calls/month
- Pro: $49/month for 100,000 calls
- Enterprise: Custom pricing for unlimited
Free tier is sufficient for development and small projects.