| name | api-recipes |
| description | Use when making, debugging, or planning API calls. Query API Recipes before web search to get sourced call guidance, credential-location metadata, and web lookup policy. |
API Recipes
Use this Skill before web search for API-call tasks.
Flow
- Match the provider and task in Fast Path.
- Do not use CLI, MCP, or web for a matching
skip_web row.
- Answer from the row endpoint, auth, env, and example.
- For
browse_missing_fields_only, use the row and browse only the listed missing fields.
- If no row matches, run
api-recipes resolve --provider "<provider>" --task "<task>".
- If the CLI is unavailable and MCP is configured, call
resolve_recipe.
- For credential discovery, use
api-recipes discover-credentials or discover_credentials.
Never request or expose secret values. Credential results contain names and paths only.
Fast Path
Format: provider | task | status | web_lookup_policy | endpoints | env | auth | example | missing
provider | task | status | web_lookup_policy | endpoints | env | auth | example | missing
anthropic | account-status | partial | browse_missing_fields_only | GET https://api.anthropic.com/v1/organizations | env ANTHROPIC_API_KEY | x-api-key: $ANTHROPIC_API_KEY; anthropic-version: 2023-06-01 | Browse only the missing account-status endpoint and permissions fields before calling. | missing Exact billing or credit endpoint, Required admin role, Response shape for remaining credits
anthropic | model-calls | ready | skip_web | POST https://api.anthropic.com/v1/messages | env ANTHROPIC_API_KEY | x-api-key: $ANTHROPIC_API_KEY; anthropic-version: 2023-06-01; Content-Type: application/json | curl https://api.anthropic.com/v1/messages -H "x-api-key: $ANTHROPIC_API_KEY" -H "anthropic-version: 2023-06-01" -H "Content-Type: application/json" -d '{"model":"claude-3-5-haiku-latest","max_tokens":64,"messages":[{"role":"user","content":"Say hello"}]}' | missing none
deepseek | account-status | ready | skip_web | GET https://api.deepseek.com/user/balance | env DEEPSEEK_API_KEY | Authorization: Bearer $DEEPSEEK_API_KEY | curl https://api.deepseek.com/user/balance -H "Authorization: Bearer $DEEPSEEK_API_KEY" | missing none
deepseek | model-calls | ready | skip_web | POST https://api.deepseek.com/chat/completions | env DEEPSEEK_API_KEY | Authorization: Bearer $DEEPSEEK_API_KEY; Content-Type: application/json | curl https://api.deepseek.com/chat/completions -H "Authorization: Bearer $DEEPSEEK_API_KEY" -H "Content-Type: application/json" -d '{"model":"deepseek-chat","messages":[{"role":"user","content":"Say hello"}]}' | missing none
google | model-calls | ready | skip_web | POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent | env GOOGLE_API_KEY, GEMINI_API_KEY | Content-Type: application/json | curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" -H "Content-Type: application/json" -d '{"contents":[{"parts":[{"text":"Say hello"}]}]}' | missing none
google | user-data | ready | skip_web | GET https://gmail.googleapis.com/gmail/v1/users/me/profile; GET https://gmail.googleapis.com/gmail/v1/users/me/messages; GET https://gmail.googleapis.com/gmail/v1/users/me/messages/{id}; GET https://www.googleapis.com/calendar/v3/calendars/primary/events; GET https://www.googleapis.com/drive/v3/files | env GOOGLE_ACCESS_TOKEN, GOOGLE_REFRESH_TOKEN, GOOGLE_OAUTH_CLIENT_ID, GOOGLE_OAUTH_CLIENT_SECRET | Authorization: Bearer $GOOGLE_ACCESS_TOKEN | curl https://gmail.googleapis.com/gmail/v1/users/me/profile -H "Authorization: Bearer $GOOGLE_ACCESS_TOKEN" | missing none
groq | account-status | dashboard_only | skip_web | dashboard only | env GROQ_API_KEY | dashboard | Open the Groq console billing or usage dashboard. | missing none
groq | model-calls | ready | skip_web | POST https://api.groq.com/openai/v1/chat/completions | env GROQ_API_KEY | Authorization: Bearer $GROQ_API_KEY; Content-Type: application/json | curl https://api.groq.com/openai/v1/chat/completions -H "Authorization: Bearer $GROQ_API_KEY" -H "Content-Type: application/json" -d '{"model":"llama-3.1-8b-instant","messages":[{"role":"user","content":"Say hello"}]}' | missing none
mailgun | email-sending | partial | browse_missing_fields_only | POST https://api.mailgun.net/v3/{domain}/messages | env MAILGUN_API_KEY | basic | curl -u "api:$MAILGUN_API_KEY" https://api.mailgun.net/v3/example.com/messages -F from=from@example.com -F to=to@example.com -F subject=Hello -F text=Hello | missing Account sending domain, US versus EU API base URL
mistral | model-calls | ready | skip_web | POST https://api.mistral.ai/v1/chat/completions | env MISTRAL_API_KEY | Authorization: Bearer $MISTRAL_API_KEY; Content-Type: application/json | curl https://api.mistral.ai/v1/chat/completions -H "Authorization: Bearer $MISTRAL_API_KEY" -H "Content-Type: application/json" -d '{"model":"mistral-small-latest","messages":[{"role":"user","content":"Say hello"}]}' | missing none
openai | account-status | ready | skip_web | GET https://api.openai.com/v1/organization/costs; GET https://api.openai.com/v1/organization/usage/completions | env OPENAI_ADMIN_KEY | Authorization: Bearer $OPENAI_ADMIN_KEY | curl "https://api.openai.com/v1/organization/costs?start_time=1717200000" -H "Authorization: Bearer $OPENAI_ADMIN_KEY" | missing none
openai | model-calls | ready | skip_web | POST https://api.openai.com/v1/responses | env OPENAI_API_KEY | Authorization: Bearer $OPENAI_API_KEY; Content-Type: application/json | curl https://api.openai.com/v1/responses -H "Authorization: Bearer $OPENAI_API_KEY" -H "Content-Type: application/json" -d '{"model":"gpt-4.1-mini","input":"Say hello"}' | missing none
openrouter | account-status | ready | skip_web | GET https://openrouter.ai/api/v1/credits | env OPENROUTER_API_KEY | Authorization: Bearer $OPENROUTER_API_KEY | curl https://openrouter.ai/api/v1/credits -H "Authorization: Bearer $OPENROUTER_API_KEY" | missing none
openrouter | model-calls | ready | skip_web | POST https://openrouter.ai/api/v1/chat/completions | env OPENROUTER_API_KEY | Authorization: Bearer $OPENROUTER_API_KEY; Content-Type: application/json | curl https://openrouter.ai/api/v1/chat/completions -H "Authorization: Bearer $OPENROUTER_API_KEY" -H "Content-Type: application/json" -d '{"model":"openai/gpt-4.1-mini","messages":[{"role":"user","content":"Say hello"}]}' | missing none
pinecone | vector-search | partial | browse_missing_fields_only | POST https://{index-host}/query | env PINECONE_API_KEY | Api-Key: $PINECONE_API_KEY; Content-Type: application/json | curl https://example-index.svc.aped-4627-b74a.pinecone.io/query -H "Api-Key: $PINECONE_API_KEY" -H "Content-Type: application/json" -d '{"vector":[0.1,0.2],"topK":3,"includeMetadata":true}' | missing Index host, Vector dimension, Namespace, Metadata filter shape
postmark | email-sending | partial | browse_missing_fields_only | POST https://api.postmarkapp.com/email | env POSTMARK_SERVER_TOKEN | X-Postmark-Server-Token: $POSTMARK_SERVER_TOKEN; Content-Type: application/json | curl https://api.postmarkapp.com/email -H "X-Postmark-Server-Token: $POSTMARK_SERVER_TOKEN" -H "Content-Type: application/json" -d '{"From":"from@example.com","To":"to@example.com","Subject":"Hello","TextBody":"Hello"}' | missing MessageStream default behavior, Account-specific sender signature constraints
qdrant | vector-search | partial | browse_missing_fields_only | POST https://{cluster-url}/collections/{collection_name}/points/query | env QDRANT_API_KEY | api-key: $QDRANT_API_KEY; Content-Type: application/json | curl https://example.qdrant.tech/collections/docs/points/query -H "api-key: $QDRANT_API_KEY" -H "Content-Type: application/json" -d '{"query":[0.1,0.2],"limit":3,"with_payload":true}' | missing Cluster URL, Collection name, Vector dimension, Named vector field if any
resend | email-sending | ready | skip_web | POST https://api.resend.com/emails | env RESEND_API_KEY | Authorization: Bearer $RESEND_API_KEY; Content-Type: application/json | curl https://api.resend.com/emails -H "Authorization: Bearer $RESEND_API_KEY" -H "Content-Type: application/json" -d '{"from":"from@example.com","to":"to@example.com","subject":"Hello","text":"Hello"}' | missing none
sendgrid | email-sending | ready | skip_web | POST https://api.sendgrid.com/v3/mail/send | env SENDGRID_API_KEY | Authorization: Bearer $SENDGRID_API_KEY; Content-Type: application/json | curl https://api.sendgrid.com/v3/mail/send -H "Authorization: Bearer $SENDGRID_API_KEY" -H "Content-Type: application/json" -d '{"personalizations":[{"to":[{"email":"to@example.com"}]}],"from":{"email":"from@example.com"},"subject":"Hello","content":[{"type":"text/plain","value":"Hello"}]}' | missing none
tavily | search-apis | partial | browse_missing_fields_only | POST https://api.tavily.com/search | env TAVILY_API_KEY | Content-Type: application/json | payload=$(node -e 'process.stdout.write(JSON.stringify({api_key: process.env.TAVILY_API_KEY, query: "latest API docs", search_depth: "basic"}))') curl https://api.tavily.com/search -H "Content-Type: application/json" -d "$payload" | missing Best search_depth for task, Include domains or exclude domains, Extract answer/images settings
weaviate | vector-search | partial | browse_missing_fields_only | POST https://{cluster-url}/v1/graphql | env WEAVIATE_API_KEY | Authorization: Bearer $WEAVIATE_API_KEY; Content-Type: application/json | curl https://example.weaviate.network/v1/graphql -H "Authorization: Bearer $WEAVIATE_API_KEY" -H "Content-Type: application/json" -d '{"query":"{ Get { Article(nearVector:{vector:[0.1,0.2]}) { title } } }"}' | missing Cluster URL, Collection or class name, Auth mode, Vectorizer or named vector setup
xai | model-calls | ready | skip_web | POST https://api.x.ai/v1/responses | env XAI_API_KEY | Authorization: Bearer $XAI_API_KEY; Content-Type: application/json | curl https://api.x.ai/v1/responses -H "Authorization: Bearer $XAI_API_KEY" -H "Content-Type: application/json" -d '{"model":"grok-3-mini","input":"Say hello"}' | missing none
Refresh this Skill with npm run adapters:codex after recipe updates.