E-commerce product photo — wireless earbuds
Professional product photography of matte black wireless earbuds resting on a smooth white marble surface. One earbud lies flat, the other stands upright in its open charging case. Soft directional lighting from the upper left creates gentle shadows. The background is a seamless gradient from warm off-white to light gray. Shot at f/2.8, shallow depth of field with the standing earbud in sharp focus. Clean, editorial style suitable for a product listing hero image.
- Model
- flux-kontext-max
- Provider
- Black Forest Labs
- Service
- Flux Kontext
- Endpoint
- Text To Image
1. claude mcp add runapi -s user -- npx -y @runapi.ai/mcp
2. Restart Claude Code
3. Paste this prompt: Generate an image: "Professional product photography of matte black wireless earbuds resting on a smooth white marble surface. One earbud lies flat, the other stands upright in its open charging case. Soft directional lighting from the upper left creates gentle shadows. The background is a seamless gradient from warm off-white to light gray. Shot at f/2.8, shallow depth of field with the standing earbud in sharp focus. Clean, editorial style suitable for a product listing hero image."
1. codex plugin install runapi-mcp@agents
2. Restart Codex
3. Paste this prompt: Generate an image: "Professional product photography of matte black wireless earbuds resting on a smooth white marble surface. One earbud lies flat, the other stands upright in its open charging case. Soft directional lighting from the upper left creates gentle shadows. The background is a seamless gradient from warm off-white to light gray. Shot at f/2.8, shallow depth of field with the standing earbud in sharp focus. Clean, editorial style suitable for a product listing hero image."
1. npx @runapi.ai/mcp init cursor
2. Restart Cursor
3. Paste this prompt: Generate an image: "Professional product photography of matte black wireless earbuds resting on a smooth white marble surface. One earbud lies flat, the other stands upright in its open charging case. Soft directional lighting from the upper left creates gentle shadows. The background is a seamless gradient from warm off-white to light gray. Shot at f/2.8, shallow depth of field with the standing earbud in sharp focus. Clean, editorial style suitable for a product listing hero image."
1. npx @runapi.ai/mcp init windsurf
2. Restart Windsurf
3. Paste this prompt: Generate an image: "Professional product photography of matte black wireless earbuds resting on a smooth white marble surface. One earbud lies flat, the other stands upright in its open charging case. Soft directional lighting from the upper left creates gentle shadows. The background is a seamless gradient from warm off-white to light gray. Shot at f/2.8, shallow depth of field with the standing earbud in sharp focus. Clean, editorial style suitable for a product listing hero image."
curl -X POST https://runapi.ai/api/v1/flux_kontext/text_to_image \
-H "Authorization: Bearer $RUNAPI_KEY" \
-H "Content-Type: application/json" \
--data-binary @- <<'JSON'
{
"model": "flux-kontext-max",
"prompt": "Professional product photography of matte black wireless earbuds resting on a smooth white marble surface. One earbud lies flat, the other stands upright in its open charging case. Soft directional lighting from the upper left creates gentle shadows. The background is a seamless gradient from warm off-white to light gray. Shot at f/2.8, shallow depth of field with the standing earbud in sharp focus. Clean, editorial style suitable for a product listing hero image."
}
JSON
import { FluxKontextClient } from "@runapi.ai/flux-kontext";
const client = new FluxKontextClient({
apiKey: process.env.RUNAPI_API_KEY,
});
const result = await client.textToImage.run({
"model": "flux-kontext-max",
"prompt": "Professional product photography of matte black wireless earbuds resting on a smooth white marble surface. One earbud lies flat, the other stands upright in its open charging case. Soft directional lighting from the upper left creates gentle shadows. The background is a seamless gradient from warm off-white to light gray. Shot at f/2.8, shallow depth of field with the standing earbud in sharp focus. Clean, editorial style suitable for a product listing hero image."
});
console.log(result.id);
require "runapi/flux_kontext"
client = RunApi::FluxKontext::Client.new
result = client.text_to_image.run(
model: "flux-kontext-max",
prompt: "Professional product photography of matte black wireless earbuds resting on a smooth white marble surface. One earbud lies flat, the other stands upright in its open charging case. Soft directional lighting from the upper left creates gentle shadows. The background is a seamless gradient from warm off-white to light gray. Shot at f/2.8, shallow depth of field with the standing earbud in sharp focus. Clean, editorial style suitable for a product listing hero image."
)
puts result.id
package main
import (
"context"
"fmt"
"log"
"net/http"
"os"
"strings"
)
func main() {
body := strings.NewReader("{\"model\":\"flux-kontext-max\",\"prompt\":\"Professional product photography of matte black wireless earbuds resting on a smooth white marble surface. One earbud lies flat, the other stands upright in its open charging case. Soft directional lighting from the upper left creates gentle shadows. The background is a seamless gradient from warm off-white to light gray. Shot at f/2.8, shallow depth of field with the standing earbud in sharp focus. Clean, editorial style suitable for a product listing hero image.\"}")
req, err := http.NewRequestWithContext(context.Background(), http.MethodPost, "https://runapi.ai/api/v1/flux_kontext/text_to_image", body)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Authorization", "Bearer "+os.Getenv("RUNAPI_API_KEY"))
req.Header.Set("Content-Type", "application/json")
resp, err := http.DefaultClient.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
fmt.Println(resp.Status)
}
Using this flux-kontext-max prompt
How do I copy this prompt safely?
Use the copy button beside the full prompt block. It copies only the prompt text, not surrounding page labels, so you can paste it into an agent instruction, a JSON request body, or your own prompt library.
Why does the detail page show parameters?
Some prompts were collected with saved generation settings such as aspect ratio, duration, or voice controls. When parameters exist, the page lists them separately so you can reuse the prompt text and the structured settings together.
Which endpoint should I call?
Use the endpoint path shown in the API code block. The path is generated from the prompt's RunAPI service and endpoint name, then rendered as the public API URL used by curl and SDK examples.
Can I use this prompt in an agent instead of code?
Yes. Pick Claude Code, Codex, Cursor, or Windsurf in the tab switcher, install the RunAPI MCP Server, and paste the generated instruction. The instruction includes the full prompt text.