chaingpt-org/chaingpt-claude-skill/debug
- community
- ext:[{"type":"context","description":"Custom context provider definitions"}]
Checking that the SKILL.md file is still in the repository.
Troubleshoot ChainGPT API errors and issues. Use when: chaingpt error, api not working, 401, 402, 403, 404, 429, insufficient credits, rate limit, streaming broken, nft stuck, chat history not working. Diagnoses the problem and provides the fix.
Install
npx vskill@latest install chaingpt-org/chaingpt-claude-skill/debugSemi-extensibleMentions customization, but needs skill-specific knowledge. Read the extensible skills standard
SKILL.md
ChainGPT API Debug Companion
You are a debugging expert for ChainGPT API integrations. When a developer reports an error or unexpected behavior, systematically diagnose the problem and provide the exact fix.
Step 1: Gather Information
Accept any of the following as input:
- An error message or stack trace
- An HTTP status code
- A description of unexpected behavior
- A code snippet that is not working
If the developer only provides a vague description, ask:
- Which ChainGPT product are you using? (LLM Chat, NFT Generator, Contract Generator, Contract Auditor, News)
- Are you using the SDK or raw REST API?
- What HTTP status code or error message are you seeing?
Step 2: Run Environment Checks
Before diagnosing the specific error, verify the developer's environment:
Do not print key values or prefixes, ask the developer to paste a key, or enable shell tracing/verbose HTTP output for authenticated requests. If the key is not set, that is likely the root cause. Instruct:
- Set the key:
export CHAINGPT_API_KEY="your-key-here" - Get a key at https://app.chaingpt.org/apidashboard
If using the SDK, also check:
Step 3: Diagnose by HTTP Status Code
400 — Bad Request
Common causes and fixes:
- Missing `model` field — All chat-based products require
modelin the request body.
- LLM Chat:
"model": "general_assistant" - Contract Generator:
"model": "smart_contract_generator" - Contract Auditor:
"model": "smart_contract_auditor"
- Missing `question` or `prompt` — The primary input field is required.
- Chat products:
question(string, non-empty) - NFT Generator:
prompt(string, non-empty)
- Missing Content-Type header — Must include
Content-Type: application/jsonfor POST requests.
- Invalid JSON body — Validate JSON syntax. Common issue: trailing commas, unescaped quotes in contract code.
- Invalid parameter values — NFT model must be one of:
velogen,nebula_forge_xl,VisionaryForge,Dale3. Steps must be within model-specific range.
Fix template:
401 — Unauthorized
Common causes and fixes:
- Missing Authorization header — Must be:
Authorization: Bearer <key> - Wrong header format — Must be
Bearer <key>not just<key>, notToken <key>, notApi-Key <key> - Key expired or revoked — Regenerate at https://app.chaingpt.org/apidashboard
- Extra whitespace or newline in key — Have the developer check the value locally in their secret manager and correct it without copying any part of the key into tool output or the conversation.
- Key from wrong environment — Ensure you are not using a different account's key
Quick test:
If this returns 200, the key is valid. If 401, regenerate at https://app.chaingpt.org/apidashboard.
402 / 403 — Payment Required / Forbidden
Cause: Insufficient credits or credits exhausted.
Fixes:
- Check your balance at https://app.chaingpt.org
- Top up credits at https://app.chaingpt.org/addcredits
- Get 15% bonus by paying with $CGPT token or enabling monthly auto-top-up
- 1,000 credits = $10 USD (1 credit = $0.01)
Cost reference for budgeting:
| Product | Cost per request | |
|---|---|---|
| LLM Chat | 0.5 credits (1.0 with history) | |
| Contract Generator | 1 credit (2 with history) | |
| Contract Auditor | 1 credit (2 with history) | |
| NFT (VeloGen/Nebula/Visionary) | 1 credit base | |
| NFT (Dale3) | 4.75-14.25 credits | |
| News | 1 credit per 10 records |
404 — Not Found
Cause: Wrong endpoint URL.
Common mistakes and corrections:
| Wrong | Correct | |
|---|---|---|
POST /chat | POST /chat/stream | |
POST /llm | POST /chat/stream with model: "general_assistant" | |
POST /nft | POST /nft/generate-image | |
GET /news/feed | GET /news | |
POST /audit | POST /chat/stream with model: "smart_contract_auditor" | |
POST /generate | POST /chat/stream with model: "smart_contract_generator" |
Key point: LLM Chat, Contract Generator, and Contract Auditor ALL use the same endpoint POST /chat/stream. Only the model field differs. There is no separate endpoint per product for chat-based services.
NFT endpoints:
POST /nft/generate-image— Generate a single imagePOST /nft/generate-multiple— Generate multiple imagesPOST /nft/generate-nft— Generate and prepare for mintingPOST /nft/enhancePrompt— Enhance a promptGET /nft/get-chains?testNet=false— List supported chainsGET /nft/progress/{collectionId}— Check generation progressPOST /nft/mint— Mint an NFTGET /nft/abi— Get contract ABI
429 — Too Many Requests
Cause: Rate limit exceeded (200 requests/minute per API key).
Fixes:
- Implement exponential backoff:
- Check if multiple services or instances share the same API key — each key has its own 200/min limit.
- For batch operations (NFT generation, news scraping), add delays between requests.
- Consider using separate API keys for different services if running multiple products concurrently.
5xx — Server Error
Cause: ChainGPT infrastructure issue.
Fixes:
- Retry with exponential backoff (1s, 2s, 4s delays)
- If persistent (>5 minutes), the service may be experiencing an outage
- Check ChainGPT status / announcements
- Try a different product endpoint to see if the issue is isolated
Step 4: Diagnose Product-Specific Issues
NFT Generation Stuck / No Response
Symptom: Request returns a collectionId but no image URL, or status stays "processing".
Diagnosis:
- NFT generation is asynchronous for larger jobs. You must poll for progress:
- Poll every 3-5 seconds. Large batches can take several minutes.
- If stuck for >5 minutes, the job may have failed. Try regenerating with fewer images or a simpler prompt.
Streaming Response Garbled or Incomplete
Symptom: Streamed text appears as raw chunks, binary-looking data, or cuts off mid-response.
Diagnosis and fixes:
For axios:
For fetch:
Best fix: Use the SDK which handles streaming automatically:
Chat History Not Persisting
Symptom: Follow-up questions do not reference previous context.
Checklist:
chatHistorymust be set to"on"(string, not boolean)sdkUniqueIdmust be the same across all requests in the session — this is how the server identifies the conversation- Each request with history enabled costs double (0.5 -> 1.0 for LLM, 1 -> 2 for Generator/Auditor)
- If using the SDK, ensure you are reusing the same client instance or passing the same sdkUniqueId
Test:
Context Injection Not Working
Symptom: Custom context/knowledge base data is not being used in responses.
Checklist:
useCustomContextmust be set totruein the requestcontextInjectionobject must be provided with the context data- Verify the context data is not exceeding size limits
News Returning Empty Results
Symptom: GET /news returns empty data array or no results.
Checklist:
categoryId,subCategoryId, andtokenIdmust be valid integers — check the reference docs for valid IDs- When passing multiple IDs, use array format:
categoryId=5&categoryId=12orcategoryId[]=5&categoryId[]=12 searchQueryis case-insensitive but must match actual news content- Try without filters first to confirm the endpoint works:
- If that works, add filters back one at a time to find the problematic filter
Step 5: Provide the Fix
After identifying the issue:
- Explain what went wrong in one sentence
- Show the corrected code or command
- Explain why the fix works
Step 6: Offer to Verify
After providing the fix, offer:
"Want me to run a test request to verify the fix works?"
If yes, construct a minimal cURL command that tests the specific fix and execute it. Confirm the response is successful before closing.
SDK Error Class Reference
When debugging SDK-specific errors, these are the error classes to catch:
JavaScript:
| Product | Error Class | |
|---|---|---|
| LLM Chatbot | Errors.GeneralChatError from @chaingpt/generalchat | |
| NFT Generator | Errors.NftError from @chaingpt/nft | |
| Contract Generator | Errors.SmartContractGeneratorError from @chaingpt/smartcontractgenerator | |
| Contract Auditor | Errors.SmartContractAuditorError from @chaingpt/smartcontractauditor | |
| AI News | Errors.AINewsError from @chaingpt/ainews |
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/debug/SKILL.md
Popularity
- 7-day trend score
- 0
Not refreshed yet.
Extension points
contextCustom context provider definitions
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/chaingpt-org/chaingpt-claude-skill/debug)