openapi: 3.1.0 info: title: Moonshot AI Batch API version: 1.0.0 description: API for Moonshot AI / Kimi large language model services servers: - url: https://api.moonshot.ai description: Production tags: - name: Batch paths: /v1/batches: post: summary: Create Batch description: Create a batch task. You need to first upload a JSONL file with purpose="batch" via the Files API, then use the returned file_id to create the task. tags: - Batch security: - bearerAuth: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/BatchCreateRequest' responses: '200': description: The created batch task content: application/json: schema: $ref: '#/components/schemas/BatchObject' '400': description: Bad request - Invalid parameters content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '401': description: Unauthorized - Invalid or missing API key content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' get: summary: List Batches description: List batch tasks for your organization. tags: - Batch security: - bearerAuth: [] parameters: - name: after in: query required: false description: Pagination cursor, pass the ID of the last batch from the previous page schema: type: string - name: limit in: query required: false description: Number of results per page, default 20 schema: type: integer default: 20 responses: '200': description: List of batch tasks content: application/json: schema: $ref: '#/components/schemas/BatchListResponse' '401': description: Unauthorized - Invalid or missing API key content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /v1/batches/{batch_id}: get: summary: Retrieve Batch description: Retrieve the status and details of a specific batch task. tags: - Batch security: - bearerAuth: [] parameters: - name: batch_id in: path required: true description: The ID of the batch task schema: type: string responses: '200': description: Batch task details content: application/json: schema: $ref: '#/components/schemas/BatchObject' '401': description: Unauthorized - Invalid or missing API key content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '404': description: Batch task not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /v1/batches/{batch_id}/cancel: post: summary: Cancel Batch description: Cancel an in-progress batch task. The status will change to cancelling and then to cancelled. Only tasks in validating, in_progress, or finalizing status can be cancelled. tags: - Batch security: - bearerAuth: [] parameters: - name: batch_id in: path required: true description: The ID of the batch task schema: type: string responses: '200': description: The cancelled batch task content: application/json: schema: $ref: '#/components/schemas/BatchObject' '400': description: Bad request - Task status does not allow cancellation content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '401': description: Unauthorized - Invalid or missing API key content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '404': description: Batch task not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' components: schemas: BatchListResponse: type: object properties: object: type: string example: list data: type: array items: $ref: '#/components/schemas/BatchObject' has_more: type: boolean description: Whether there are more results required: - object - data ErrorResponse: type: object properties: error: type: object properties: message: type: string description: Error message describing what went wrong type: type: string description: Error type code: type: string description: Error code required: - message required: - error BatchObject: type: object properties: id: type: string description: Unique identifier for the batch task object: type: string description: Object type, always batch example: batch endpoint: type: string description: Request endpoint input_file_id: type: string description: Input file ID completion_window: type: string description: Processing time window status: type: string description: 'Current status: validating, failed, in_progress, finalizing, completed, expired, cancelling, cancelled' enum: - validating - failed - in_progress - finalizing - completed - expired - cancelling - cancelled output_file_id: type: - string - 'null' description: Output file ID for successful results error_file_id: type: - string - 'null' description: Error file ID for failed results created_at: type: integer description: Creation timestamp (Unix) in_progress_at: type: - integer - 'null' description: Execution start timestamp (Unix) expires_at: type: - integer - 'null' description: Expiration timestamp (Unix) finalizing_at: type: - integer - 'null' description: Result preparation start timestamp (Unix) completed_at: type: - integer - 'null' description: Completion timestamp (Unix) failed_at: type: - integer - 'null' description: Validation failure timestamp (Unix) cancelling_at: type: - integer - 'null' description: Cancellation request timestamp (Unix) cancelled_at: type: - integer - 'null' description: Cancellation completion timestamp (Unix) request_counts: $ref: '#/components/schemas/BatchRequestCounts' metadata: type: - object - 'null' description: Custom metadata additionalProperties: type: string required: - id - object - endpoint - input_file_id - completion_window - status - created_at - request_counts BatchCreateRequest: type: object properties: input_file_id: type: string description: ID of the input file, must be a .jsonl file uploaded with purpose="batch" endpoint: type: string description: Request endpoint, currently only /v1/chat/completions is supported enum: - /v1/chat/completions completion_window: type: string description: Time window for task processing, supports formats like 12h, 1d, 3d, minimum 12h, maximum 7d metadata: type: object description: Custom metadata, up to 16 key-value pairs, key max 64 chars, value max 512 chars additionalProperties: type: string maxLength: 512 required: - input_file_id - endpoint - completion_window BatchRequestCounts: type: object properties: completed: type: integer description: Number of completed requests failed: type: integer description: Number of failed requests total: type: integer description: Total number of requests required: - completed - failed - total securitySchemes: bearerAuth: type: http scheme: bearer description: The Authorization header expects a Bearer token. Use an MOONSHOT_API_KEY as the token. This is a server-side secret key. Generate one on the [API keys page](https://platform.kimi.ai/console/api-keys) in your dashboard.