Material Link Re-signing
Download links returned by the search APIs carry a 24-hour expiring signature. After expiry, no paid re-search is needed — use this API to batch re-sign fresh download links for materials you have already obtained. Free, unlimited, synchronous.
💡 Grant model: once a material appears in the results of any of your search calls, it is permanently granted to you — you can re-sign its download link with this API at any time, free of charge and without limit. Re-signing creates no task record and consumes no quota.
Use together with General Material Search and Video Clip Search: search "finds and grants", this API "re-fetches after expiry".
Re-signing API
Basic Information
| Item | Value |
|---|---|
| Method | POST |
| Path | /task/material_resign |
| Content-Type | application/json |
| Authentication | Authorization header (raw API Key) |
| Response mode | Synchronous (not an async task) |
| Billing | Free, no task record, no usage cap |
⚠️ Note: currently only video materials (clip source mp4) can be re-signed. For expired image / audio links, simply run the search again to get fresh links (grants for these are recorded as well; once re-signing is extended to them the same free flow applies).
Request Parameters (Body)
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
clip_ids | array<string> | Yes | — | Material id list, up to 500 per call; strings are recommended (ids are big integers that lose precision as JavaScript numbers; numeric values are also accepted) |
Request Example
curl -X POST https://api.ai-mcn.tv:10000/task/material_resign \
-H "Authorization: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"clip_ids": ["537489015178247", "537489015178248"]
}'
Success Response Example
{
"code": 200,
"msg": "success",
"data": {
"clips": [
{
"clip_id": "537489015178247",
"url": "https://api.ai-mcn.tv:9000/nmcn/material/video_clip/raw/537489015178247.mp4?expires=1787414400&sign=..."
}
],
"missing": [
{ "clip_id": "537489015178248", "reason": "not granted" }
]
}
}
Response Parameters
| Field | Type | Description |
|---|---|---|
clips | array | Successfully re-signed materials, each with a freshly signed source download link (valid 24h, re-sign again after expiry) |
clips[].clip_id | string | Material id |
clips[].url | string | Source download link (mp4, freshly signed) |
missing | array | Rejected materials with per-item reasons; other materials in the batch are unaffected |
missing[].clip_id | string | Material id |
missing[].reason | string | Rejection reason: not granted (the material never appeared in your search results) / invalid clip_id / material removed from library |
Error Codes
| HTTP / code | Meaning |
|---|---|
400 | Invalid parameters (clip_ids missing, empty, or over 500 items) |
401 | Authentication failed (API Key missing or invalid) |
6401 / 6402 | Upstream search service error / timeout, retry later |
ℹ️ Info: a "not granted" entry in
missingusually means either — (1) the material never appeared in your search results (run a search once to obtain the grant); or (2) it was searched before the grant ledger existed — re-run the same search once to backfill the grant.