{
  "info": {
    "name": "Noqte Media API (v1)",
    "description": "API تولید محتوای نقطه — عکس، ویدئو، موسیقی با کردیت کیف پول. متغیر apiKey را با کلید sk-media-… خود پر کنید. مسیر پیشنهادی: models → estimate → generations → generations/{id}.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "auth": {
    "type": "bearer",
    "bearer": [
      {
        "key": "token",
        "value": "{{apiKey}}",
        "type": "string"
      }
    ]
  },
  "variable": [
    {
      "key": "baseUrl",
      "value": "https://api.noqte.ai",
      "type": "string"
    },
    {
      "key": "apiKey",
      "value": "",
      "type": "string"
    },
    {
      "key": "modelSlug",
      "value": "gpt-image-2",
      "type": "string"
    },
    {
      "key": "generationId",
      "value": "",
      "type": "string"
    },
    {
      "key": "assetId",
      "value": "",
      "type": "string"
    }
  ],
  "item": [
    {
      "name": "GET /v1/media/models",
      "request": {
        "method": "GET",
        "header": [
          {
            "key": "Authorization",
            "value": "Bearer {{apiKey}}"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/v1/media/models?kind=image",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "v1",
            "media",
            "models"
          ],
          "query": [
            {
              "key": "kind",
              "value": "image"
            }
          ]
        },
        "description": "فهرست مدل‌ها — مدل‌های فعال و مجاز برای این کلید، همراه قرارداد ورودی و قیمت پایه.\n\nScope: media:read"
      },
      "response": [
        {
          "name": "200 example",
          "originalRequest": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/media/models?kind=image",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "media",
                "models"
              ],
              "query": [
                {
                  "key": "kind",
                  "value": "image"
                }
              ]
            }
          },
          "status": "200",
          "code": 200,
          "_postman_previewlanguage": "json",
          "header": [
            {
              "key": "Content-Type",
              "value": "application/json"
            }
          ],
          "body": "{\n  \"models\": [\n    {\n      \"slug\": \"{{modelSlug}}\",\n      \"kind\": \"image\",\n      \"label\": \"نام نمایشی مدل\",\n      \"description\": \"توضیح کوتاه مدل\",\n      \"credits\": 12,\n      \"unit\": \"image\",\n      \"prompt_optional\": false,\n      \"prompt_max_chars\": 2000,\n      \"options\": {\n        \"aspect_ratio\": [\n          {\n            \"id\": \"1:1\",\n            \"label\": \"مربع\",\n            \"default\": true,\n            \"credits\": 12\n          },\n          {\n            \"id\": \"16:9\",\n            \"label\": \"افقی\",\n            \"credits\": 12\n          }\n        ]\n      },\n      \"text_inputs\": [],\n      \"image_input\": {\n        \"max\": 4,\n        \"label\": \"تصویر مرجع\",\n        \"required\": false,\n        \"max_mb\": 20,\n        \"formats\": [\n          \"png\",\n          \"jpg\",\n          \"webp\"\n        ]\n      },\n      \"input_slots\": []\n    }\n  ],\n  \"media_enabled\": true,\n  \"billing_source\": \"wallet\",\n  \"daily_free_credits_eligible\": false\n}"
        }
      ]
    },
    {
      "name": "POST /v1/media/estimate",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Authorization",
            "value": "Bearer {{apiKey}}"
          }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\n  \"model_slug\": \"{{modelSlug}}\",\n  \"prompt\": \"A calm cinematic scene at sunrise, soft light\",\n  \"params\": {\n    \"size\": \"1:1\",\n    \"quality\": \"low\"\n  }\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        },
        "url": {
          "raw": "{{baseUrl}}/v1/media/estimate",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "v1",
            "media",
            "estimate"
          ]
        },
        "description": "برآورد هزینه — ورودی را اعتبارسنجی و قیمت دقیق را برمی‌گرداند؛ کردیتی کسر نمی‌شود.\n\nScope: media:read"
      },
      "response": [
        {
          "name": "200 example",
          "originalRequest": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/media/estimate",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "media",
                "estimate"
              ]
            }
          },
          "status": "200",
          "code": 200,
          "_postman_previewlanguage": "json",
          "header": [
            {
              "key": "Content-Type",
              "value": "application/json"
            }
          ],
          "body": "{\n  \"credits\": 12,\n  \"wallet_balance\": 480,\n  \"has_enough_credits\": true,\n  \"resolved_params\": {\n    \"size\": \"1:1\",\n    \"quality\": \"low\"\n  },\n  \"billing_source\": \"wallet\",\n  \"daily_free_credits_eligible\": false\n}"
        }
      ]
    },
    {
      "name": "POST /v1/media/uploads",
      "event": [
        {
          "listen": "test",
          "script": {
            "type": "text/javascript",
            "exec": [
              "if (pm.response.code === 201) {",
              "  pm.collectionVariables.set('assetId', pm.response.json().asset.id);",
              "}"
            ]
          }
        }
      ],
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Authorization",
            "value": "Bearer {{apiKey}}"
          }
        ],
        "body": {
          "mode": "formdata",
          "formdata": [
            {
              "key": "model_slug",
              "value": "{{modelSlug}}",
              "type": "text"
            },
            {
              "key": "file",
              "type": "file",
              "src": ""
            }
          ]
        },
        "url": {
          "raw": "{{baseUrl}}/v1/media/uploads",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "v1",
            "media",
            "uploads"
          ]
        },
        "description": "آپلود فایل مرجع — فایل مرجع را با multipart ثبت می‌کند و `asset.id` برمی‌گرداند.\n\nScope: assets:write"
      },
      "response": [
        {
          "name": "201 example",
          "originalRequest": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/media/uploads",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "media",
                "uploads"
              ]
            }
          },
          "status": "201",
          "code": 201,
          "_postman_previewlanguage": "json",
          "header": [
            {
              "key": "Content-Type",
              "value": "application/json"
            }
          ],
          "body": "{\n  \"asset\": {\n    \"id\": \"{{assetId}}\",\n    \"kind\": \"image\",\n    \"name\": \"reference.png\",\n    \"size_bytes\": 184204,\n    \"duration_seconds\": null\n  }\n}"
        }
      ]
    },
    {
      "name": "POST /v1/media/generations",
      "event": [
        {
          "listen": "test",
          "script": {
            "type": "text/javascript",
            "exec": [
              "if (pm.response.code === 202) {",
              "  pm.collectionVariables.set('generationId', pm.response.json().generation.id);",
              "}"
            ]
          }
        }
      ],
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Authorization",
            "value": "Bearer {{apiKey}}"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}",
            "description": "برای هر عملیات منطقی یک شناسهٔ ثابت؛ در retry همان مقدار را بفرستید. {{$guid}} فقط برای تست دستی است."
          }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\n  \"model_slug\": \"{{modelSlug}}\",\n  \"prompt\": \"A calm cinematic scene at sunrise, soft light\",\n  \"params\": {\n    \"size\": \"1:1\",\n    \"quality\": \"low\"\n  },\n  \"max_credits\": 20\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        },
        "url": {
          "raw": "{{baseUrl}}/v1/media/generations",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "v1",
            "media",
            "generations"
          ]
        },
        "description": "ارسال تولید — درخواست را می‌پذیرد، هزینه را کسر می‌کند و شناسهٔ پیگیری برمی‌گرداند (202).\n\nScope: media:generate"
      },
      "response": [
        {
          "name": "202 example",
          "originalRequest": {
            "method": "POST",
            "header": [
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "برای هر عملیات منطقی یک شناسهٔ ثابت؛ در retry همان مقدار را بفرستید. {{$guid}} فقط برای تست دستی است."
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/v1/media/generations",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "media",
                "generations"
              ]
            }
          },
          "status": "202",
          "code": 202,
          "_postman_previewlanguage": "json",
          "header": [
            {
              "key": "Content-Type",
              "value": "application/json"
            }
          ],
          "body": "{\n  \"request_id\": \"req_9f1c2d3e4a5b6c7d8e9f0a1b2c3d4e5f\",\n  \"generation\": {\n    \"id\": \"{{generationId}}\",\n    \"request_id\": \"req_9f1c2d3e4a5b6c7d8e9f0a1b2c3d4e5f\",\n    \"api_key_id\": 51,\n    \"kind\": \"image\",\n    \"model_slug\": \"{{modelSlug}}\",\n    \"prompt\": \"A calm cinematic scene at sunrise, soft light\",\n    \"params\": {\n      \"size\": \"1:1\",\n      \"quality\": \"low\"\n    },\n    \"texts\": {},\n    \"status\": \"pending\",\n    \"created_at\": \"2026-09-05T10:00:00+00:00\",\n    \"completed_at\": null,\n    \"charged_credits\": 12,\n    \"refunded_credits\": 0,\n    \"net_credits\": 12,\n    \"billing_status\": \"charged\",\n    \"outputs\": [],\n    \"error\": null\n  },\n  \"replayed\": false,\n  \"poll_after_seconds\": 5\n}"
        }
      ]
    },
    {
      "name": "GET /v1/media/generations/{generation_id}",
      "request": {
        "method": "GET",
        "header": [
          {
            "key": "Authorization",
            "value": "Bearer {{apiKey}}"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/v1/media/generations/{{generationId}}",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "v1",
            "media",
            "generations",
            "{{generationId}}"
          ]
        },
        "description": "وضعیت و خروجی تولید — وضعیت، هزینه و لینک خروجی‌های یک تولید.\n\nScope: media:read"
      },
      "response": [
        {
          "name": "200 example",
          "originalRequest": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/media/generations/{{generationId}}",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "media",
                "generations",
                "{{generationId}}"
              ]
            }
          },
          "status": "200",
          "code": 200,
          "_postman_previewlanguage": "json",
          "header": [
            {
              "key": "Content-Type",
              "value": "application/json"
            }
          ],
          "body": "{\n  \"generation\": {\n    \"id\": \"{{generationId}}\",\n    \"request_id\": \"req_9f1c2d3e4a5b6c7d8e9f0a1b2c3d4e5f\",\n    \"api_key_id\": 51,\n    \"kind\": \"image\",\n    \"model_slug\": \"{{modelSlug}}\",\n    \"prompt\": \"A calm cinematic scene at sunrise, soft light\",\n    \"params\": {\n      \"size\": \"1:1\",\n      \"quality\": \"low\"\n    },\n    \"texts\": {},\n    \"status\": \"completed\",\n    \"created_at\": \"2026-09-05T10:00:00+00:00\",\n    \"completed_at\": \"2026-09-05T10:00:41+00:00\",\n    \"charged_credits\": 12,\n    \"refunded_credits\": 0,\n    \"net_credits\": 12,\n    \"billing_status\": \"charged\",\n    \"outputs\": [\n      {\n        \"id\": \"{{generationId}}:0\",\n        \"url\": \"https://api.noqte.ai/v1/media/outputs/{{generationId}}/api-output.png?sig=…&exp=…\",\n        \"kind\": \"image\",\n        \"mime_type\": \"image/png\",\n        \"title\": null,\n        \"duration_seconds\": null,\n        \"cover_url\": null\n      }\n    ],\n    \"error\": null\n  },\n  \"poll_after_seconds\": null\n}"
        }
      ]
    },
    {
      "name": "GET /v1/media/generations",
      "request": {
        "method": "GET",
        "header": [
          {
            "key": "Authorization",
            "value": "Bearer {{apiKey}}"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/v1/media/generations?status=completed&limit=20",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "v1",
            "media",
            "generations"
          ],
          "query": [
            {
              "key": "status",
              "value": "completed"
            },
            {
              "key": "limit",
              "value": "20"
            }
          ]
        },
        "description": "تاریخچهٔ تولیدها — فهرست صفحه‌بندی‌شدهٔ تولیدهای همین کلید، از جدید به قدیم.\n\nScope: media:read"
      },
      "response": [
        {
          "name": "200 example",
          "originalRequest": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/media/generations?status=completed&limit=20",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "media",
                "generations"
              ],
              "query": [
                {
                  "key": "status",
                  "value": "completed"
                },
                {
                  "key": "limit",
                  "value": "20"
                }
              ]
            }
          },
          "status": "200",
          "code": 200,
          "_postman_previewlanguage": "json",
          "header": [
            {
              "key": "Content-Type",
              "value": "application/json"
            }
          ],
          "body": "{\n  \"generations\": [\n    {\n      \"id\": \"{{generationId}}\",\n      \"request_id\": \"req_9f1c2d3e4a5b6c7d8e9f0a1b2c3d4e5f\",\n      \"api_key_id\": 51,\n      \"kind\": \"image\",\n      \"model_slug\": \"{{modelSlug}}\",\n      \"prompt\": \"A calm cinematic scene at sunrise, soft light\",\n      \"params\": {\n        \"size\": \"1:1\",\n        \"quality\": \"low\"\n      },\n      \"texts\": {},\n      \"status\": \"completed\",\n      \"created_at\": \"2026-09-05T10:00:00+00:00\",\n      \"completed_at\": \"2026-09-05T10:00:41+00:00\",\n      \"charged_credits\": 12,\n      \"refunded_credits\": 0,\n      \"net_credits\": 12,\n      \"billing_status\": \"charged\",\n      \"outputs\": [\n        {\n          \"id\": \"{{generationId}}:0\",\n          \"url\": \"https://api.noqte.ai/v1/media/outputs/{{generationId}}/api-output.png?sig=…&exp=…\",\n          \"kind\": \"image\",\n          \"mime_type\": \"image/png\",\n          \"title\": null,\n          \"duration_seconds\": null,\n          \"cover_url\": null\n        }\n      ],\n      \"error\": null\n    }\n  ],\n  \"next_cursor\": \"WyIyMDI2LTA5LTA1VDEwOjAwOjAwKzAwOjAwIiwgIi4uLiJd\"\n}"
        }
      ]
    },
    {
      "name": "GET /v1/media/usage",
      "request": {
        "method": "GET",
        "header": [
          {
            "key": "Authorization",
            "value": "Bearer {{apiKey}}"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/v1/media/usage",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "v1",
            "media",
            "usage"
          ]
        },
        "description": "مصرف و سقف‌ها — مصرف خالص این کلید، موجودی کیف پول و محدودیت‌های حساب.\n\nScope: usage:read"
      },
      "response": [
        {
          "name": "200 example",
          "originalRequest": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/media/usage",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "media",
                "usage"
              ]
            }
          },
          "status": "200",
          "code": 200,
          "_postman_previewlanguage": "json",
          "header": [
            {
              "key": "Content-Type",
              "value": "application/json"
            }
          ],
          "body": "{\n  \"generations\": 18,\n  \"charged_credits\": 240,\n  \"refunded_credits\": 12,\n  \"net_credits\": 228,\n  \"daily_used\": 36,\n  \"inflight\": 1,\n  \"daily_reset_at\": \"2026-09-05T20:30:00+00:00\",\n  \"wallet_balance\": 480,\n  \"billing_source\": \"wallet\",\n  \"daily_free_credits_eligible\": false,\n  \"limits\": {\n    \"max_api_keys\": 2,\n    \"account_rpm_limit\": 10,\n    \"max_inflight\": 2,\n    \"daily_credit_limit\": null,\n    \"key_daily_credit_limit\": 50,\n    \"key_total_credit_limit\": null\n  }\n}"
        }
      ]
    }
  ]
}