package main
import (
"encoding/base64"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
"os"
"strings"
)
const (
MODEL = "gemini-2.5-flash-image"
YOUR_API_KEY = "sk-123456789012345678901234567890123456789012345678"
REQUEST_PAYLOAD = `{
"contents": [{
"role": "user",
"parts": [{
"text": "A cute baby sea otter"
}]
}],
"generationConfig": {
"imageConfig": {
"aspectRatio": "4:3",
"imageSize": "1K"
}
}
}`
EXAMPLE_OUTPUT_PATH = "output.png"
)
type InlineData struct {
MimeType string `json:"mimeType"`
Data string `json:"data"`
}
type Part struct {
InlineData *InlineData `json:"inlineData"`
}
type Content struct {
Role string `json:"role"`
Parts []Part `json:"parts"`
}
type Candidate struct {
Content Content `json:"content"`
}
type ResponseJSON struct {
Candidates []Candidate `json:"candidates"`
}
func main() {
requestURL := fmt.Sprintf("https://gateway.theturbo.ai/v1/v1beta/models/%s:generateContent", MODEL)
requestMethod := "POST"
requestPayload := strings.NewReader(REQUEST_PAYLOAD)
req, err := http.NewRequest(requestMethod, requestURL, requestPayload)
if err != nil {
fmt.Println("Create request failed, err: ", err)
return
}
req.Header.Add("Content-Type", "application/json")
req.Header.Add("Accept", "application/json")
req.Header.Add("Authorization", "Bearer "+YOUR_API_KEY)
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
fmt.Println("Do request failed, err: ", err)
return
}
defer resp.Body.Close()
respBodyBytes, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Println("Read response body failed, err: ", err)
return
}
if resp.StatusCode != 200 {
fmt.Printf("status code: %d\n", resp.StatusCode)
fmt.Println(string(respBodyBytes))
return
}
var responseJSON ResponseJSON
if err := json.Unmarshal(respBodyBytes, &responseJSON); err != nil {
fmt.Println("Parse response body failed, err: ", err)
return
}
var base64JSON string
for _, candidate := range responseJSON.Candidates {
for _, part := range candidate.Content.Parts {
if part.InlineData != nil && part.InlineData.MimeType == "image/png" && part.InlineData.Data != "" {
base64JSON = part.InlineData.Data
break
}
}
if base64JSON != "" {
break
}
}
if base64JSON == "" {
fmt.Println("Parse response body failed, err: empty b64_json")
return
}
imageData, err := base64.StdEncoding.DecodeString(base64JSON)
if err != nil {
fmt.Println("Parse b64_json failed, err: ", err)
return
}
imageFile, err := os.Create(EXAMPLE_OUTPUT_PATH)
if err != nil {
fmt.Printf("Create file %s failed, err: %v\n", EXAMPLE_OUTPUT_PATH, err)
return
}
if _, err := imageFile.Write(imageData); err != nil {
fmt.Printf("Write to file %s failed, err: %v\n", EXAMPLE_OUTPUT_PATH, err)
imageFile.Close()
return
}
imageFile.Close()
fmt.Println("success to write to file ", EXAMPLE_OUTPUT_PATH)
}
#!/usr/bin/env python3
from google import genai
def main():
api_key = "sk-123456789012345678901234567890123456789012345678"
example_file_path = "example.png"
client = genai.Client(
api_key=api_key,
http_options={
"base_url": "https://gateway.theturbo.ai"
}
)
response = client.models.generate_content(
model="gemini-2.5-flash-image",
contents="A cute baby sea otter",
config=genai.types.GenerateContentConfig(
image_config=genai.types.ImageConfig(
aspect_ratio="4:3",
image_size="1K"
)
)
)
image_data = None
for candidate in response.candidates:
for part in candidate.content.parts:
if part.inline_data and part.inline_data.mime_type == "image/png":
image_data = part.inline_data.data
break
if image_data:
break
if not image_data:
print("error: no image data found")
return
with open(example_file_path, "wb") as f:
f.write(image_data)
print(f"success to write to file {example_file_path}")
if __name__ == "__main__":
main()
package main
import (
"encoding/base64"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
"os"
"strings"
)
const (
MODEL = "gemini-2.5-flash-image"
YOUR_API_KEY = "sk-123456789012345678901234567890123456789012345678"
REQUEST_PAYLOAD = `{
"contents": [{
"role": "user",
"parts": [{
"text": "add a rainbow"
}, {
"inlineData": {
"mimeType": "image/png",
"data": "%s"
}
}]
}],
"generationConfig": {
"imageConfig": {
"aspectRatio": "4:3",
"imageSize": "1K"
}
}
}`
EXAMPLE_INPUT_PATH = "input.png"
EXAMPLE_OUTPUT_PATH = "output.png"
)
type InlineData struct {
MimeType string `json:"mimeType"`
Data string `json:"data"`
}
type Part struct {
InlineData *InlineData `json:"inlineData"`
}
type Content struct {
Role string `json:"role"`
Parts []Part `json:"parts"`
}
type Candidate struct {
Content Content `json:"content"`
}
type ResponseJSON struct {
Candidates []Candidate `json:"candidates"`
}
func main() {
inputFileData, err := os.ReadFile(EXAMPLE_INPUT_PATH)
if err != nil {
fmt.Println("Read input file failed, err: ", err)
return
}
requestPayloadString := fmt.Sprintf(REQUEST_PAYLOAD, base64.StdEncoding.EncodeToString(inputFileData))
requestURL := fmt.Sprintf("https://gateway.theturbo.ai/v1/v1beta/models/%s:generateContent", MODEL)
requestMethod := "POST"
requestPayload := strings.NewReader(requestPayloadString)
req, err := http.NewRequest(requestMethod, requestURL, requestPayload)
if err != nil {
fmt.Println("Create request failed, err: ", err)
return
}
req.Header.Add("Content-Type", "application/json")
req.Header.Add("Accept", "application/json")
req.Header.Add("Authorization", "Bearer "+YOUR_API_KEY)
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
fmt.Println("Do request failed, err: ", err)
return
}
defer resp.Body.Close()
respBodyBytes, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Println("Read response body failed, err: ", err)
return
}
if resp.StatusCode != 200 {
fmt.Printf("status code: %d\n", resp.StatusCode)
fmt.Println(string(respBodyBytes))
return
}
var responseJSON ResponseJSON
if err := json.Unmarshal(respBodyBytes, &responseJSON); err != nil {
fmt.Println("Parse response body failed, err: ", err)
return
}
var base64JSON string
for _, candidate := range responseJSON.Candidates {
for _, part := range candidate.Content.Parts {
if part.InlineData != nil && part.InlineData.MimeType == "image/png" && part.InlineData.Data != "" {
base64JSON = part.InlineData.Data
break
}
}
if base64JSON != "" {
break
}
}
if base64JSON == "" {
fmt.Println("Parse response body failed, err: empty b64_json")
return
}
imageData, err := base64.StdEncoding.DecodeString(base64JSON)
if err != nil {
fmt.Println("Parse b64_json failed, err: ", err)
return
}
imageFile, err := os.Create(EXAMPLE_OUTPUT_PATH)
if err != nil {
fmt.Printf("Create file %s failed, err: %v\n", EXAMPLE_OUTPUT_PATH, err)
return
}
if _, err := imageFile.Write(imageData); err != nil {
fmt.Printf("Write to file %s failed, err: %v\n", EXAMPLE_OUTPUT_PATH, err)
imageFile.Close()
return
}
imageFile.Close()
fmt.Println("success to write to file ", EXAMPLE_OUTPUT_PATH)
}
#!/usr/bin/env python3
from google import genai
def main():
api_key = "sk-123456789012345678901234567890123456789012345678"
input_path = "example.png"
output_path = "example2.png"
with open(input_path, "rb") as f:
input_data = f.read()
client = genai.Client(
api_key=api_key,
http_options={
"base_url": "https://gateway.theturbo.ai"
}
)
response = client.models.generate_content(
model="gemini-2.5-flash-image",
contents=[
"add a rainbow",
genai.types.Part(
inline_data=genai.types.Blob(
mime_type="image/png",
data=input_data
)
)
],
config=genai.types.GenerateContentConfig(
image_config=genai.types.ImageConfig(
aspect_ratio="4:3",
image_size="1K"
)
)
)
image_data = None
for candidate in response.candidates:
for part in candidate.content.parts:
if part.inline_data and part.inline_data.mime_type == "image/png":
image_data = part.inline_data.data
break
if image_data:
break
if not image_data:
print("error: no image data found")
return
with open(output_path, "wb") as f:
f.write(image_data)
print(f"success to write to file {output_path}")
if __name__ == "__main__":
main()