# CurlyFlies > Publishing infrastructure for AI-generated content. Upload a file, get a publish-grade public URL in under 200ms — direct bytes, correct Content-Type, no cookies, no redirects, no viewer pages. URLs pass Instagram/Meta/Buffer crawler validation (fixes error 9004). Files live up to 90 days (plan-dependent), then vanish. No bucket setup, no OAuth, no human in the loop. ## Quick Start One API call: curl -X POST https://curlyflies.com/v1/upload \ -H "Authorization: Bearer $CURLY_KEY" \ -F "file=@image.png" Returns: { "url": "https://curlyflies.com/f/{id}.png", "expires_at": "..." } ## Agent Self-Provisioning Agents can create their own API key: POST /v1/agent/signup with { "email": "...", "agent_name": "..." } ## REST API Docs - [Upload file](https://curlyflies.com/docs/api.md) - [Upload from URL](https://curlyflies.com/docs/api.md#upload-from-url) - [Get file info](https://curlyflies.com/docs/api.md#get-file-info) - [Delete file](https://curlyflies.com/docs/api.md#delete-file) - [Usage stats](https://curlyflies.com/docs/api.md#usage) ## MCP Server URL: https://mcp.curlyflies.com/mcp Auth: Bearer token Tools: upload_file, upload_from_url, get_file_info, delete_file - [MCP setup docs](https://curlyflies.com/docs/mcp.md) ## Authentication All requests require: Authorization: Bearer {api_key} Get a key at: https://curlyflies.com/dashboard Or agents can self-provision: POST /v1/agent/signup ## Pricing Free: 100 uploads/mo, 5MB max, 24h TTL Builder: $9/mo, 2000 uploads, 250MB max, TTL up to 30 days Pro: $29/mo, 10000 uploads, 1GB max, TTL up to 60 days Scale: $99/mo, 50000 uploads, 5GB max, TTL up to 90 days ## Works With n8n, Make.com, Zapier, Pipedream, Claude (MCP), Cursor, LangChain, CrewAI, AutoGPT, and any HTTP client. Fixes expired presigned URLs from GPT Image (OpenAI), Nano Banana (Google), Seedream, Flux, Midjourney, Replicate, and Higgsfield (and legacy DALL-E). ## Error Codes 9004: "Media fetch failed" — file URL not publicly accessible (use a curlyflies URL instead) 401: Invalid or missing API key 413: File exceeds plan size limit 429: Rate limit exceeded (100 req/hour on free)