Help me integrate the Aibubu API. Read https://docs.aibubu.ai/llms.txt and the chosen model reference first. Use the current public schema; do not invent model IDs or parameters. API base URL: https://aibubu.ai/v1. Authenticate with Authorization: Bearer $AIBUBU_API_KEY from the environment. Never put credentials in source code or logs. Images/video: POST /v1/generations, save task_id, then GET /v1/tasks/{task_id} until succeeded/failed/canceled. Alternatively use callback_url after configuring a Webhook Secret and implement HMAC signature verification. Text: use the OpenAI/Anthropic/Gemini compatible interface supported by the chosen model. Do not assume every model supports every protocol. Upload reference media with /v1/uploads/images or /v1/uploads/files and use the returned resource URL. Estimate with POST /v1/quote before submission. Only purchased credit packs fund API calls; subscription and gifted credits are excluded. Use a fresh Idempotency-Key for each new generation. Retries of the same operation reuse the same key and identical payload. A timeout does not mean the task was not accepted: query it or replay the same idempotent operation before creating a new one. Handle 429/503 with bounded backoff and Retry-After; surface 401/403/402 as authentication, permission or funding errors. Agent Skill: npx skills add https://docs.aibubu.ai. Remote MCP: https://aibubu.ai/mcp; follow the documented OAuth flow. Chosen model: gpt-image-2. Example request: { "model": "gpt-image-2", "prompt": "A minimal futuristic city poster" } Implement submission, progress/polling, result retrieval and explicit error handling. List the required environment variables.