مرجع API

ابنِ باستخدام ذكاء الفيديو.

يدعم API المنشور من Seeknetic تضمينات النصوص، وتضمينات الفيديو غير المتزامنة، ورفع الموترات، ووسوم اللقطات الاحترافية.

المصادقة

قدّم مفتاح API في ترويسة X-API-Key. أنشئ مفتاحك أو أدِره من حساب Seeknetic.

تدعم API المنشورة أيضًا Authorization: Bearer <API_KEY> بدلًا من X-API-Key. استخدم طريقة مصادقة واحدة لكل طلب.

عنوان URL الأساسي: https://api.seeknetic.com

تحتفظ الشيفرة ومعرّفات API وقيم الطلبات بلغتها التقنية الأصلية.

تضمين النص

شفّر الاستعلام النصي إلى متجه تضمين للمقارنة الدلالية مع الوسائط المفهرسة.

POST /video_embedding/encode_text
cURL
curl -X POST "https://api.seeknetic.com/video_embedding/encode_text" \
  -H "X-API-Key: {your_api_key}" \
  -H "Content-Type: application/json" \
  -d '{"text":"A dog playing in the park"}'
Python / مثال
Python
import requests

response = requests.post(
    "https://api.seeknetic.com/video_embedding/encode_text",
    headers={
        "X-API-Key": "{your_api_key}",
        "Content-Type": "application/json"
    },
    json={"text": "A dog playing in the park"}
)

result = response.json()
print(f"Text embedding dimension: {len(result['embedding'])}")

تضمين الفيديو

أرسل فيديو مستضافاً للتشفير غير المتزامن. احفظ request_id المُعاد واستعلم عن الحالة للحصول على النتيجة.

للمدخلات المُعالجة مسبقًا، استخدم tensor.video_input_key وtensor.audio_input_key المُعادَين من نقطة رفع الموترات.

POST /video_embedding/encode_video/async
cURL
curl -X POST "https://api.seeknetic.com/video_embedding/encode_video/async" \
  -H "X-API-Key: {your_api_key}" \
  -H "Content-Type: application/json" \
  -d '{"video_url":"https://example.com/video.mp4"}'
Python / مثال
Python
import requests
import time

# 1. Submit async task
response = requests.post(
    "https://api.seeknetic.com/video_embedding/encode_video/async",
    headers={
        "X-API-Key": "{your_api_key}",
        "Content-Type": "application/json"
    },
    json={"video_url": "https://example.com/video.mp4"}
)

request_id = response.json()["request_id"]
print(f"Task submitted, Request ID: {request_id}")

# 2. Poll status until completion
while True:
    status_response = requests.get(
        f"https://api.seeknetic.com/async_status/{request_id}",
        headers={"X-API-Key": "{your_api_key}"}
    )

    status_data = status_response.json()
    status = status_data['status']

    if status == 'completed':
        embedding = status_data['embedding']
        print(f"Complete! Dimension: {len(embedding)}")
        break
    elif status == 'failed':
        print(f"Failed: {status_data['error_message']}")
        break

    time.sleep(2)

رفع الموترات

ارفع موترات الفيديو والصوت المعالجة مسبقاً، ثم استخدم مفاتيح الإدخال المُعادة في طلب النموذج غير المتزامن.

POST /files/upload/tensors
cURL
curl -X POST "https://api.seeknetic.com/files/upload/tensors" \
  -H "X-API-Key: {your_api_key}" \
  -H "Content-Type: application/json" \
  -d '{
    "service":"embedding",
    "request_id":"emb-task-0001",
    "video_input":{"data":"AAAB...","shape":[1,12,3,224,224],"dtype":"uint8"},
    "audio_input":{"data":"AAAB...","shape":[1,1,220500],"dtype":"float32"}
  }'
Python / مثال
Python
import requests

response = requests.post(
    "https://api.seeknetic.com/files/upload/tensors",
    headers={
        "X-API-Key": "{your_api_key}",
        "Content-Type": "application/json"
    },
    json={
        "service": "embedding",
        "request_id": "emb-task-0001",
        "video_input": {
            "data": "AAAB...",
            "shape": [1, 12, 3, 224, 224],
            "dtype": "uint8"
        },
        "audio_input": {
            "data": "AAAB...",
            "shape": [1, 1, 220500],
            "dtype": "float32"
        }
    }
)

print(response.json())

وسوم اللقطات

أرسل فيديو لتوليد بيانات وصفية احترافية للقطات بشكل غير متزامن.

لمدخلات الوسم المُعالجة مسبقًا، استخدم tensor.video_input_key وtensor.video_kwargs_key المُعادَين من نقطة رفع الموترات.

POST /video_tagging/async
cURL
curl -X POST "https://api.seeknetic.com/video_tagging/async" \
  -H "X-API-Key: {your_api_key}" \
  -H "Content-Type: application/json" \
  -d '{"video_url":"https://example.com/video.mp4"}'
Python / مثال
Python
import requests

# Submit async tagging task
response = requests.post(
    "https://api.seeknetic.com/video_tagging/async",
    headers={
        "X-API-Key": "{your_api_key}",
        "Content-Type": "application/json"
    },
    json={"video_url": "https://example.com/video.mp4"}
)

request_id = response.json()["request_id"]
print(f"Tagging task submitted, Request ID: {request_id}")

حالة المهمة غير المتزامنة

تحقّق من الطلب المرسل. تابع الاستعلام أثناء الانتظار أو المعالجة، وراجع النتيجة عند اكتمال المهمة.

حالات المهمة: pending → processing → completed. تتضمن المهمة الفاشلة الحقل error_message.

GET /async_status/{request_id}
cURL
curl -X GET "https://api.seeknetic.com/async_status/{request_id}" \
  -H "X-API-Key: {your_api_key}"
Python / مثال
Python
import requests

request_id = "your_request_id_from_async_call"

response = requests.get(
    f"https://api.seeknetic.com/async_status/{request_id}",
    headers={"X-API-Key": "{your_api_key}"}
)

status_data = response.json()
print(f"Status: {status_data['status']}")

if status_data['status'] == 'completed':
    print(f"Result: {status_data['embedding']}")

الأخطاء وإعادة المحاولة

تحقّق من المدخلات عند الرد 400 ومن بيانات المصادقة عند 401. خفّض وتيرة الطلبات بعد 429. أعد محاولة أخطاء الخادم المؤقتة بعدد محدود من المحاولات.

حالة HTTPالمعنىالإجراء
400طلب غير صالحتحقّق من JSON والحقول المطلوبة.
401فشل المصادقةتحقّق من مفتاح API ولا تكشفه في كود الواجهة.
402تجاوز الحصةتحقّق من الاستخدام والفوترة قبل إعادة المحاولة.
413حجم الطلب كبير جدًاقلّل حجم الطلب أو ارفع مجموعات أصغر من الموترات.
422فشل التحققتحقّق من أنواع الحقول ومخطط الطلب.
429تجاوز حد معدل الطلباتقلّل تواتر الطلبات واستخدم تأخيرًا متزايدًا للمحاولات.
500خطأ داخلي في الخدمةحدّد عدد المحاولات واتصل بالدعم إذا استمر الخطأ.
502خطأ في خدمة خارجيةانتظر ثم أعد المحاولة بعدد محاولات محدود.
504انتهت مهلة الطلباستخدم سير العمل غير المتزامن أو مدخلًا أصغر، وتحقّق من حالة المهمة قبل إعادة إرسالها.
[email protected]

حدود معدل الطلبات

لكل مفتاح API حد مستقل للطلبات في الثانية يُحدّد عند إنشائه. يؤدي تجاوزه إلى HTTP 429.