Skip to content

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.

Click Usage Logs in the left sidebar, or go to /usage-logs/common, to see API requests and billing details.

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.

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.

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.

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 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.

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.

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.

Task logs can be filtered by:

  • Date range;
  • Task ID.

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}/content with 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.

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.

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.

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.

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/fetch
GET /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}/fetch
GET /mj/task/{id}/image-seed
POST /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/swap
POST /mj/submit/upload-discord-images
Extended features such as face swap and uploading Discord images.

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.