Sakrylle Image
image.sakrylle.com is Sakrylle's official online image generation and editing site. It covers text-to-image, reference-image editing, mask inpainting, and Agent multi-turn conversational generation. The tech stack is React 19 + TypeScript + Vite 6 + Zustand -- a pure frontend SPA. History and gallery data primarily live in your browser, so download anything important before closing the page.
- Live site: https://image.sakrylle.com
- Console: https://ai1.sakrylle.com
- Current version: 0.11.4
Pricing at a glance
- Available image model:
gpt-image-2(the GPT-Image group, ¥0.15/call) - Billing: per successful call; failed requests are not charged
- Group: image models are isolated by group -- your API Key must be bound to the group that owns the model you call
- In streaming mode with intermediate images enabled, intermediate images are returned as part of the same request; actual charges are shown in the Console
One API key is bound to exactly one group. One-click login (OAuth) automatically pulls the groups and models available on your account; with a manual key, bind the group that owns the image model you want. If you want GPT-Pro chat models and an image model at the same time, create separate keys in the console.
Actual billing is shown in the console.
Sign in
Open image.sakrylle.com, click the gear icon in the upper right, and switch to the API tab in the settings panel.
One-click login
- Click Sign in with Sakrylle
- Browser redirects to
oidc1.sakrylle.comfor authorization (OAuth 2.0 Authorization Code + PKCE) - After approval you are bounced back automatically
- Balance and model list are pulled in for you -- no need to paste an API key
The access token is stored in localStorage and silently refreshes 60 seconds before expiry. Click Sign out to clear local tokens immediately; the gallery and history are not wiped.
OAuth Bearer fallback
When no manual API key is configured, the site automatically uses the access_token obtained from OAuth login as the Bearer token for requests. If a manual key is also configured, the manual key takes priority.
Manual API key
If you prefer not to use OAuth, or your network blocks the redirect:
- Create an API key bound to the
GPT-Imagegroup in the console - Paste it into API Key (manual) in the settings panel
- Leave API URL as the default
https://api.sakrylle.com/v1 - Leave Model ID as the default
gpt-image-2 - Leave API mode as the default
Images API
When you are signed in via OAuth, the manual key field is ignored. To use a manual key, sign out first or create a separate profile.
URL one-click import
You can pack a configuration into a URL:
https://image.sakrylle.com/?apiKey=sk-xxxxxxxxxxxxxxxx&model=gpt-image-2Supported query params: apiKey, model, apiMode (images or responses), streamImages, streamPartialImages.
Gallery mode
The gallery is the main interface of the site. All generation tasks appear as cards arranged in the gallery. It supports search, filtering, selection, and batch operations.
Text-to-image
Minimal flow:
- Type a prompt in the bottom input bar, e.g.
A shiba inu in a red apron grilling mochi under cherry blossoms in Kyoto - Click Generate at the bottom right
- A task card appears in the gallery immediately; expand it for a preview once the result returns
Optional parameters (adjust near the input bar before submitting):
- Count: up to 10 images per submission; internally up to 6 workers run concurrently
- Size: the interface provides multiple size and aspect-ratio presets (1:1, 3:2, 2:3, 16:9, 9:16, 4:3, 3:4, 21:9); actual support depends on the current
gpt-image-2capabilities - Quality: auto / low / medium / high (auto mode lets the model decide)
- Output format: PNG / JPEG / WebP
- Compression: adjustable compression ratio
- Transparent background: available when output format is PNG
Tasks run concurrently and do not block each other -- you can keep submitting prompts and they queue up in the gallery.
Reference-image editing
Replacement editing
No mask needed; the model regenerates the whole image:
- Click the image icon at the left of the input bar to upload a reference (or drag-and-drop)
- Write a prompt describing the change, e.g.
Replace the background with an evening seaside - Generate
Up to 16 reference images can be uploaded simultaneously, supporting both drag-and-drop and paste upload. HEIC format images are automatically converted to JPEG on upload.
Mask inpainting
- After uploading a reference, click the brush icon on the thumbnail
- The mask editor opens; paint over the area you want regenerated
- Adjust brush size / switch to eraser / one-click invert
- Confirm and return to the main view, write a prompt for the new local content
- Generate -- only pixels under the mask are rewritten; everything else is preserved
Settings → General → Reference image edit button lets you choose the default behaviour: ask each time / replace reference / open mask editor.
Image mentions
In the prompt, use @图1 to reference an uploaded image. Agent history images can be referenced with forms such as @第1轮图1.
Multi-image
When count is greater than 1, the site automatically splits the request into multiple concurrent single-image requests (MAX_CONCURRENT = 6). Each request executes and returns independently. Task cards show real-time progress for each image.
Streaming
Settings → API → Streaming controls whether the SSE streaming endpoint is used:
- Off: wait for the full image, ideal for single-image generations on stable networks
- On: stream partial steps as they arrive; better visualization, less likely to time out on long tasks
When streaming is on, intermediate image count (partial_images, 0--3) controls how many partial images are pushed:
0: no intermediate images -- the connection may be killed by proxies during long silences2or3(recommended): you see steady progress- Intermediate images are returned as part of the same request; actual charges are shown in the Console
Sakrylle's upstream supports streaming for
gpt-image-2only one image at a time. When count > 1, batch generation is automatically split into concurrent single-image requests.
Task management
Search and filter
The gallery provides a search bar at the top to search tasks by prompt content. Tasks can also be filtered by status (queued, generating, completed, failed).
Batch actions
- Drag-select: click and drag in the gallery空白 area to select multiple task cards
- Ctrl/Cmd + click: add or remove individual tasks from the selection
- Selected tasks can be: batch downloaded (packed as ZIP), batch deleted
Context menu
Right-click on a task card or generated image to open a context menu for copy, download, delete, and other operations.
Image drag reorder
Images in the gallery support drag-and-drop reordering.
Favorites
Favoriting tasks
Click the favorite button (star) on a task card to add it to favorites.
Collection management
- Create collections: name a collection to categorize favorited tasks
- Rename / delete collections
- Reorder collections: drag to adjust collection order
- Assign tasks to collections
- Batch operations: select multiple tasks to batch add/remove from collections
Agent chat
Agent mode lets you iterate on images as a chat: the model can read images from previous turns, call the image_generation tool to continue, and use web search to ground the conversation.
Prerequisites
Agent mode is built on top of the Responses API and requires a text model that supports the image_generation tool (not gpt-image-2 itself). Agent mode does not work with the default settings -- you must switch to Responses API in the settings panel first.
Agent mode requires a GPT-Pro group key (different from the key used for image generation), since Agent conversations are billed through the text model.
Configuration steps
- Create an API key bound to the
GPT-Progroup in the console - Open the settings panel → API
- Click Create new profile (or edit the current one) and set:
- API Key: paste the GPT-Pro key from step 1
- API mode: switch to
Responses API - Model ID: enter
gpt-5.5(or another text model that supports theimage_generationtool) - Streaming: recommended on
- Intermediate image count: recommended
2or3to avoid timeout disconnects on long tasks
- At the top of the main view, switch the mode selector to Agent
- Type a prompt to start the multi-turn conversation
If you open Agent mode without switching to Responses API, you will get
model not foundortool not supportederrors. This is the most common pitfall.
Conversation management
- Conversation history: all conversation turns are saved locally and can be reviewed at any time
- Rename conversations: give conversations meaningful names for easier lookup
- Branching: fork a new conversation from any turn to explore different directions
Agent options
- Max tool rounds (Settings → Agent): 1--50, default 15. Caps consecutive tool calls so the agent cannot loop indefinitely
- Web search (Settings → Agent): allows the model to call the
web_searchtool during a conversation; each call is billed separately - Stop generation: click the stop button at any time during generation to interrupt the current process
- Auto-scroll: automatically scrolls to the latest message when new content arrives
Markdown stream
Text responses in Agent conversations support streaming rendering, including:
- Markdown formatting (headings, lists, bold, links, etc.)
- Code blocks (with syntax highlighting)
- KaTeX math formula rendering
- Tables
Settings
The settings panel contains 5 tabs.
API
| Setting | Description |
|---|---|
| Provider selection | Choose API provider (Sakrylle or custom) |
| API URL | API endpoint address, default https://api.sakrylle.com/v1 |
| API Key | Manually entered secret key |
| Model ID | Model identifier to use |
| API mode | Images API or Responses API |
| Streaming | Enable/disable SSE streaming |
| Profile management | Create/switch/delete configuration profiles |
| Group selection | Select the bound API Key group |
Custom provider system
Supports adding custom API providers via JSON manifest files.
Codex mode
Works with Codex CLI.
Preferences
| Setting | Description |
|---|---|
| Submit mode | Enter to send / Ctrl+Enter to send |
| Clear input | Whether to clear the input field after submitting |
| Reference image edit button | Ask each time / replace reference / open mask editor |
| ZIP download route | Storage path for batch ZIP downloads |
| Notifications | Browser notification toggle |
Agent
| Setting | Description |
|---|---|
| Max tool rounds | 1--50, default 15 |
| Web search | Enable/disable |
Data
Settings → Data offers:
- Export: pack all profiles, history, and conversations into a ZIP file (contains all data)
- Import: restore from a ZIP file
- Clear: wipe all local data (irreversible)
Export-then-import is currently the only way to migrate to a new device.
About
Displays version information, upstream repository link, license, and other details.
Appearance
Dark / light theme
Supports both dark and light themes. Switching uses the View Transition API for smooth transition animations.
Language switching
Supports Chinese (zh) and English (en), switchable directly from the interface.
PWA and local data
Install as an app
Browsers that support PWA (Chrome / Edge / Safari 16.4+) show an install icon in the address bar -- one click installs the site as a desktop app. Once installed, the UI loads offline, but generation itself still requires the network.
Local data
- Task history, gallery thumbnails, and Agent conversations primarily live in the browser database; auth tokens, theme, language, group choices, and some settings use browser local storage / session storage
- There is no cloud sync -- switching browsers, clearing cache, or using incognito mode all hide the old data
- Use the download button on each task card to save important images locally
Balance display
After signing in, the current account balance is displayed in the page header for easy reference.
Multi-group OAuth
If you need both image generation and Agent conversation capabilities, create separate keys for different groups in the console:
- GPT-Image group (group_id=5): for text-to-image and reference-image editing (Images API)
- GPT-Pro group: for Agent multi-turn conversation (Responses API)
OAuth login automatically pulls all available groups on the account, and the site selects the appropriate key based on the current mode.
Troubleshooting
401 invalid_api_key: the key is wrong, deleted, or expired. Recreate one in API Keys402 insufficient balance: top up via Billing403 Image generation is not enabled for this group: the current key is not in the GPT-Image group (required for Images API mode). Create a GPT-Image key in the console- Agent mode reports
model not found/tool not supported: the API mode is still set to Images API, or the model ID is stillgpt-image-2. Change to a text model that supports theimage_generationtool, e.g.gpt-5.5 - Streaming generation stalls with no progress: intermediate image count is set to
0. Set it to2or3and retry - Signed in but the site still shows logged out: the browser blocked the OAuth redirect or third-party cookies are disabled. Fall back to Manual API key
- Gallery is empty: cache cleared, incognito session, or new device -- IndexedDB is gone and not recoverable. If you exported a ZIP earlier, restore it from Data
Related docs
- API Keys -- create and manage your keys
- Billing -- how per-request billing is charged
- Models & pricing -- full model price list
- Images API -- call image generation directly via API
