Logs & Async Tasks
The platform stores request details, drawing records and async tasks such as video and music separately. After signing in, open Usage Logs or Task Logs from the left navigation. This page covers all three data sections, task status and how to query them through the API.
The three sections live at:
/usage-logs/common: general API usage logs and billing details;/usage-logs/drawing: Midjourney drawing tasks;/usage-logs/task: general async tasks such as Suno and video.
Usage logs
Section titled “Usage logs”Click Usage Logs in the left sidebar, or go to /usage-logs/common, to see API requests and billing details.
Filters
Section titled “Filters”| Filter | Description |
|---|---|
| Time range | Filters by record creation time. Both ends are included in the query range. |
| Model name | Filters by model name. |
| Group | Filters by the group the request used. |
| Log type | All types, top-up, consumption, management, system, error, refund, sign-in. |
| Token name | Filters by API key name. |
| Request ID | Locates one request by the platform request ID. |
| Upstream request ID | Locates a request by the ID the upstream service returned. Including this ID when you report a problem makes it much faster to investigate. |
Page statistics
Section titled “Page statistics”The values in the filter bar follow the current filters:
- Usage: the total quota of the consumption records in the current filter range, viewable by time, model, group and key.
- RPM: consumption requests in the last 60 seconds.
- TPM: total input and output tokens in the last 60 seconds.
List and details
Section titled “List and details”The list has columns for time and type, token, model, stream, tokens, cost, latency and details.
- Tokens: shows input tokens / output tokens. When caching is used, cache read and write counts may also appear.
- Cost: shows the quota consumed or refunded for that record.
- Latency: shows the response time for consumption or error records that have timing data. Streaming requests may additionally show first response time (FRT) and throughput.
- Details: click a record to open the details dialog. Depending on the log type and the fields actually stored, it may include the request ID, model mapping, error or refund reason, token breakdown, billing breakdown, cache/audio/image usage and stream status — not every record shows every block.
Why a record may be missing
Section titled “Why a record may be missing”Log writes lag slightly. A request you just sent can take a few seconds to appear, so refresh before concluding it is missing.
Not every failed response produces an Error record: requests rejected before they reach a model (an invalid key, insufficient quota) usually produce no consumption log at all.
The Record IP address preference in your profile only controls whether the request IP is stored in consumption and error logs. It does not affect whether the record itself is created.
Task logs
Section titled “Task logs”Task Logs contains two subsections, Drawing logs and Task logs:
- Drawing logs: Midjourney drawing tasks.
- Task logs: async tasks such as text-to-video, image-to-video and audio generation.
Drawing logs
Section titled “Drawing logs”Click Task Logs → Drawing logs in the left sidebar, or go to /usage-logs/drawing, to see Midjourney drawing task records.
Drawing logs can be filtered by:
- Date range;
- Midjourney task ID.
The list includes submission time and status, action type, task ID, latency, submission result, progress, image, prompt and failure reason. Click an image to preview it, click a prompt to see it in full, and click a failure reason to see the complete error message.
Drawing statuses are: Not started, Queued, In progress, Success, Failure, Window waiting.
Async task logs
Section titled “Async task logs”Click Task Logs → Task logs in the left sidebar, or go to /usage-logs/task, to see async task logs.
Async endpoints for video, music and similar do not return a final result when the request is submitted. On successful submission the platform returns a public task ID and stores a task record, then a background job polls the upstream service and updates the status, progress and result.
Filtering tasks
Section titled “Filtering tasks”Task logs can be filtered by:
- Date range;
- Task ID.
List and results
Section titled “List and results”The task list shows submission and completion time, task ID, platform and action, latency, status, progress and details:
- When a Suno task succeeds and returns an audio address, the details column offers an audio preview;
- Some video tasks show a preview entry after they succeed. You can also request
/v1/videos/{task_id}/contentwith the same account’s sign-in session or API key to fetch the video content of a completed task. That endpoint validates task ownership and returns nothing when the task is unfinished or belongs to another user; - Other failed records show a failure reason in the details column, which opens the full message when clicked.
Task status and background processing
Section titled “Task status and background processing”Async task logs use the following status values. Different platforms may spell a status slightly differently, so handle them leniently when reading through the API.
| Status | Meaning |
|---|---|
| Not started | The task record exists but processing has not begun. |
| Queued | Submitted upstream, waiting for further processing. |
| In queue | Entered the processing queue. |
| In progress | Being processed. |
| Success | Finished; the result can be viewed or fetched. |
| Failure | Processing failed. The failure reason is written to the task record when the upstream provides one. |
| Unknown | The internally defined fallback for an unknown status. |
Task status is updated by background polling, roughly every 15 seconds, so a freshly submitted task lags briefly. When polling for a result through the API, match that cadence instead of looping at high frequency. Tasks that never finish move to a failed terminal state after a timeout.
Failure, timeout and refunds
Section titled “Failure, timeout and refunds”Once a task reaches a failed terminal state, the system usually tries to refund any quota that was pre-charged at submission, and writes a refund log entry on success. A successful refund clears the pending refund quota on the task record and reduces the accumulated usage. The request count is not rolled back.
The following can make the page status and the balance temporarily inconsistent:
- The task never had pre-charged quota (the cost shows as 0);
- The refund has not gone through yet, and the system is holding the quota for a retry or manual reconciliation. Keep the task ID and contact support in this case.
API reference
Section titled “API reference”Log query endpoints
Section titled “Log query endpoints”To pull usage into your own accounting or monitoring system, use the read-only endpoints below. They authenticate with your sign-in session and always return results scoped to your own account.
| Data | Endpoint | Time parameter unit |
|---|---|---|
| General logs | GET /api/log/self |
seconds (created_at) |
| Log statistics | GET /api/log/self/stat |
seconds |
| Midjourney drawing | GET /api/mj/self |
milliseconds (submit_time) |
| Async tasks | GET /api/task/self |
seconds (submit_time) |
These endpoints use the pagination parameters p and page_size. Page numbers start at 1, and a page_size above 100 is truncated to 100.
In addition, GET /api/log/token reads a key’s recent logs using the API key itself, with no sign-in session — handy for a server-side usage check. It returns at most the 1000 most recent records, and works even if the key has expired or run out of quota.
Common query parameters for GET /api/task/self: p, page_size, task_id, start_timestamp, end_timestamp; it also accepts platform, action and status.
The task endpoints use Unix second timestamps for start_timestamp and end_timestamp. The Midjourney drawing endpoints use milliseconds.
Async generation and task endpoints
Section titled “Async generation and task endpoints”The endpoints below submit and query async video, music and drawing tasks. They all authenticate with an API key. The video content endpoint also accepts a sign-in session, and enforces task ownership so it only ever returns your own tasks.
Which platforms are available depends on the models currently offered — filter by model type in the Model Marketplace to check.
| Endpoint | Path | Description |
|---|---|---|
| OpenAI video generation | POST /v1/videos |
Creates an OpenAI-compatible async video generation task and returns a task identifier on success. |
| OpenAI video task query | GET /v1/videos/{task_id} |
Returns the status, progress and result of a video generation task. |
| Video content retrieval | GET /v1/videos/{task_id}/content |
Streams back the finished video content. The system fetches it upstream from the task result or decodes a stored data URL. |
| Video remix | POST /v1/videos/{video_id}/remix |
Submits a new remix async task based on an existing video. |
| Legacy video generation | POST /v1/video/generations |
The compatible legacy video generation path, which creates an async video task. |
| Legacy video task query | GET /v1/video/generations/{task_id} |
Returns the status and result of a legacy video generation task. |
| Kling text-to-video | POST /kling/v1/videos/text2video |
Submits a text-to-video task in the Kling format. The system converts the request format first. |
| Kling image-to-video | POST /kling/v1/videos/image2video |
Submits an image-to-video task in the Kling format. |
| Kling task query | GET /kling/v1/videos/text2video/{task_id}GET /kling/v1/videos/image2video/{task_id} |
Returns the result of a Kling text-to-video or image-to-video task. |
| Jimeng official endpoint | POST /jimeng/ |
Compatible with the official Jimeng API format, using parameters such as Action and Version to distinguish submission from query. |
| Suno task submission | POST /suno/submit/{action} |
Submits a Suno music generation task. The action parameter determines the task type. |
| Suno task query | POST /suno/fetchGET /suno/fetch/{id} |
Returns the Suno task list, or the status and result of one task. |
| Midjourney task submission | POST /mj/submit/{action}POST /{mode}/mj/submit/{action} |
Supports actions such as imagine, describe, blend, change, simple-change, edits, video, action, modal and shorten. |
| Midjourney task query | GET /mj/task/{id}/fetchGET /mj/task/{id}/image-seedPOST /mj/task/list-by-condition |
Returns the task status, image seed, or a task list by condition. Paths with a {mode} prefix are also supported. |
| Midjourney image proxy | GET /mj/image/{id}GET /{mode}/mj/image/{id} |
Fetches or proxies the generated image by Midjourney task ID. |
| Midjourney extended actions | POST /mj/insight-face/swapPOST /mj/submit/upload-discord-images |
Extended features such as face swap and uploading Discord images. |
Relationship to the dashboard
Section titled “Relationship to the dashboard”Logs are a record-by-record breakdown, while the dashboard aggregates by time, model and group. They refresh at different times: a new request appears in the logs first, and chart data only updates after aggregation, so a short-lived mismatch between the two is normal.
When investigating a call, start in the usage log and locate the request by time, model, request ID or upstream request ID. For an async request, note the task_id the submission endpoint returned and query the final task status and failure details. When you need support, quoting the request ID or task ID is the fastest route.