Skip to main content
GET
/
api
/
v1
/
jobs
/
recordInfo
Get Task Details
curl --request GET \
  --url https://api.kie.ai/api/v1/jobs/recordInfo \
  --header 'Authorization: Bearer <token>'
{
  "code": 200,
  "message": "success",
  "data": {
    "taskId": "task_12345678",
    "model": "grok-imagine/text-to-image",
    "state": "success",
    "param": "{\"model\":\"grok-imagine/text-to-image\",\"callBackUrl\":\"https://your-domain.com/api/callback\",\"input\":{\"prompt\":\"Cinematic portrait...\",\"aspect_ratio\":\"3:2\"}}",
    "resultJson": "{\"resultUrls\":[\"https://example.com/generated-content.jpg\"]}",
    "failCode": "",
    "failMsg": "",
    "completeTime": 1698765432000,
    "createTime": 1698765400000,
    "updateTime": 1698765432000
  }
}

Overview

Use this endpoint to query the status and results of any task created through Market model APIs. This is a unified query interface that works with all models under the Market category.
This endpoint works with all Market models including Seedream, Grok Imagine, Kling, Claude, and any future models added to the Market.

API Endpoint

GET https://api.kie.ai/api/v1/jobs/recordInfo

Query Parameters

taskId
string
required
The unique task identifier returned when you created the task.Example: task_12345678

Request Example

curl -X GET "https://api.kie.ai/api/v1/jobs/recordInfo?taskId=task_12345678" \
  -H "Authorization: Bearer YOUR_API_KEY"

Response Format

{
  "code": 200,
  "message": "success",
  "data": {
    "taskId": "task_12345678",
    "model": "grok-imagine/text-to-image",
    "state": "success",
    "param": "{\"model\":\"grok-imagine/text-to-image\",\"callBackUrl\":\"https://your-domain.com/api/callback\",\"input\":{\"prompt\":\"Cinematic portrait...\",\"aspect_ratio\":\"3:2\"}}",
    "resultJson": "{\"resultUrls\":[\"https://example.com/generated-content.jpg\"]}",
    "failCode": "",
    "failMsg": "",
    "completeTime": 1698765432000,
    "createTime": 1698765400000,
    "updateTime": 1698765432000
  }
}

Response Fields

code
integer
Response status code. 200 indicates success.
message
string
Response message. Typically "success" for successful queries.
data
object
The task data object containing all task information.

Task States

StateDescriptionAction
waitingTask is queued and waiting to be processedContinue polling
queuingTask is in the processing queueContinue polling
generatingTask is currently being processedContinue polling
successTask completed successfullyParse resultJson to get results
failTask failedCheck failCode and failMsg for details

Polling Best Practices

For production applications, we strongly recommend using the callBackUrl parameter when creating tasks:
  • No polling needed: Your server receives notifications automatically
  • Lower API costs: Eliminates continuous polling requests
  • Better performance: Immediate notifications when tasks complete
  • Reduced latency: No delay between completion and notification
See individual model documentation for callback implementation details.
When state is success:
  1. Parse the resultJson string to JSON
  2. Extract the resultUrls array
  3. Download generated content immediately
  4. Store content in your own storage
Important: Generated content URLs typically expire after 24 hours.

Error Handling

{
  "code": 200,
  "message": "success",
  "data": {
    "taskId": "task_12345678",
    "model": "grok-imagine/text-to-image",
    "state": "fail",
    "param": "{\"model\":\"grok-imagine/text-to-image\",\"input\":{\"prompt\":\"...\"}}",
    "resultJson": "",
    "failCode": "422",
    "failMsg": "Invalid prompt: prompt contains prohibited content",
    "completeTime": 1698765432000,
    "createTime": 1698765400000,
    "updateTime": 1698765432000
  }
}

Common Error Codes

CodeDescriptionSolution
401Unauthorized - Invalid or missing API keyCheck your API key
404Task not foundVerify the taskId is correct
422Validation error in original requestCheck the failMsg for details
500Internal server errorRetry after a few minutes
501Generation failedCheck failMsg for specific error details

Example: Complete Polling Flow

Node.js
async function pollTaskStatus(taskId, maxAttempts = 60, interval = 5000) {
  for (let attempt = 0; attempt < maxAttempts; attempt++) {
    const response = await fetch(
      `https://api.kie.ai/api/v1/jobs/recordInfo?taskId=${taskId}`,
      {
        headers: { 'Authorization': 'Bearer YOUR_API_KEY' }
      }
    );
    
    const result = await response.json();
    const { state, resultJson, failMsg } = result.data;
    
    console.log(`Attempt ${attempt + 1}: State = ${state}`);
    
    if (state === 'success') {
      const results = JSON.parse(resultJson);
      console.log('✅ Task completed!');
      console.log('Results:', results.resultUrls);
      return results;
    }
    
    if (state === 'fail') {
      console.error('❌ Task failed:', failMsg);
      throw new Error(failMsg);
    }
    
    // Still processing, wait before next poll
    await new Promise(resolve => setTimeout(resolve, interval));
  }
  
  throw new Error('Task timed out after maximum attempts');
}

// Usage
try {
  const results = await pollTaskStatus('task_12345678');
  console.log('Generated content URLs:', results.resultUrls);
} catch (error) {
  console.error('Error:', error.message);
}

Rate Limits

  • Maximum query rate: 10 requests per second per API key
  • Recommended interval: 2-5 seconds between polls
Excessive polling may result in rate limiting. Use callbacks for production applications.

Authorizations

Authorization
string
header
required

All APIs require authentication via Bearer Token.

Get API Key:

  1. Visit API Key Management Page to get your API Key

Usage: Add to request header: Authorization: Bearer YOUR_API_KEY

Note:

  • Keep your API Key secure and do not share it with others
  • If you suspect your API Key has been compromised, reset it immediately in the management page

Query Parameters

taskId
string
required

The unique task identifier returned when you created the task.

Example:

"task_12345678"

Response

Request successful

code
enum<integer>

Response status code

  • 200: Success - Request has been processed successfully
  • 401: Unauthorized - Authentication credentials are missing or invalid
  • 402: Insufficient Credits - Account does not have enough credits to perform the operation
  • 404: Not Found - The requested resource or endpoint does not exist
  • 422: Validation Error - The request parameters failed validation checks
  • 429: Rate Limited - Request limit has been exceeded for this resource
  • 455: Service Unavailable - System is currently undergoing maintenance
  • 500: Server Error - An unexpected error occurred while processing the request
  • 501: Generation Failed - Content generation task failed
  • 505: Feature Disabled - The requested feature is currently disabled
Available options:
200,
401,
402,
404,
422,
429,
455,
500,
501,
505
msg
string

Response message, error description when failed

Example:

"success"

data
object

The task data object containing all task information