# Cherry Shot API > Generate studio-quality product photography and video ads programmatically. ## Docs - [Cherry Shot API: AI Product Photography & Video Ads](https://cherryshot.mintlify.app/introduction.md): Transform raw product photos into studio-quality images and short video ads using a simple REST API — no photography studio required. - [Cherry Shot API Quickstart: Your First Shoot in Minutes](https://cherryshot.mintlify.app/quickstart.md): Go from a raw product photo to studio-quality images and video ads using the Cherry Shot REST API — no design tools or studio required. - [Cherry Shot API: Authentication and API Key Management](https://cherryshot.mintlify.app/authentication.md): Generate Cherry Shot API keys, attach them to every request with a single header, manage agency keys, and handle auth and rate-limit errors. - [Generate Product Photography with Cherry Shot Shoots](https://cherryshot.mintlify.app/guides/shoots.md): Learn how to create studio-quality product photography shoots via the API, including style options, quality tiers, and polling for results. - [Create Video Ads from Product Images with Cherry Shot](https://cherryshot.mintlify.app/guides/videos.md): Learn how to generate short video ads from product images using the Cherry Shot API, including duration options, resolution tiers, pricing, and polling. - [Integrate Cherry Shot with Claude and Cursor via MCP](https://cherryshot.mintlify.app/guides/mcp.md): Connect Cherry Shot's remote MCP server to Claude Desktop, Claude Code, Cursor, or any MCP client and generate product shoots and video ads by chatting. - [Cherry Shot for Agencies: White-Label Workspace Guide](https://cherryshot.mintlify.app/guides/agencies.md): Run Cherry Shot under your own brand: shared credit pool, per-client attribution, branded delivery galleries, and agency-only API endpoints for devs. - [Cherry Shot API: Error Codes and Response Handling](https://cherryshot.mintlify.app/guides/errors.md): Learn how Cherry Shot structures error responses, which HTTP status codes to expect, and how to write resilient error-handling code in Python and Node.js. - [Liveness and version](https://cherryshot.mintlify.app/api-reference/liveness-and-version.md) - [Get the caller's credit balance](https://cherryshot.mintlify.app/api-reference/get-the-callers-credit-balance.md): Personal keys return the account balance. Agency (white-label) keys return the shared agency credit pool, with `balance: pool` and the agency name. - [Usage report](https://cherryshot.mintlify.app/api-reference/usage-report.md): Agency (white-label) keys get usage broken down per client brand — images, videos, and credits — for invoicing. Personal keys get their own totals. Defaults to the current calendar month. - [List client brands (agency keys)](https://cherryshot.mintlify.app/api-reference/list-client-brands-agency-keys.md): Available on agency (white-label) keys only. - [Create a client brand (agency keys)](https://cherryshot.mintlify.app/api-reference/create-a-client-brand-agency-keys.md): Available on agency (white-label) keys only. - [List available models (presets + your own)](https://cherryshot.mintlify.app/api-reference/list-available-models-presets-+-your-own.md) - [Create a product-photography shoot](https://cherryshot.mintlify.app/api-reference/create-a-product-photography-shoot.md) - [Poll a shoot](https://cherryshot.mintlify.app/api-reference/poll-a-shoot.md) - [Create a video ad from image(s)](https://cherryshot.mintlify.app/api-reference/create-a-video-ad-from-images.md) - [Poll a video](https://cherryshot.mintlify.app/api-reference/poll-a-video.md) ## OpenAPI Specs - [openapi](https://cherryshot.mintlify.app/openapi.yaml)