يمكنك استخدام API نشر المحتوى لنشر صور أو مقاطع فيديو أو مقاطع ريلز فردية (على سبيل المثال، منشورات الوسائط الفردية) أو منشورات تحتوي على صور ومقاطع فيديو متعددة (منشورات الإعلانات الدوّارة) على الحسابات الاحترافية في Instagram.
بدءًا من 1 يوليو 2023، ستتم مشاركة كل مقاطع فيديو الموجز الفردية المنشورة عبر API نشر المحتوى على Instagram كمقاطع ريلز.
يجب أن تتضمن جميع الطلبات رمز وصول المستخدم الخاص بمستخدم التطبيق.
يعتمد النشر على مجموعة الأذونات التالية. وتعتمد هذه المجموعة تحديدًا على نقاط النهاية التي يستخدمها تطبيقك. يمكنك الرجوع إلى مراجع نقطة النهاية التي نوفرها لتحديد الأذونات التي تتطلبها كل نقطة نهاية.
إذا كان سيتم استخدام تطبيقك من قِبل مستخدمي التطبيق الذين ليس لديهم دور في تطبيقك أو دور في نشاط تجاري طالب بتطبيقك، فيجب طلب اعتماد كل إذن عبر عملية مراجعة التطبيقات قبل أن يتمكّن مستخدمو التطبيق الذين ليس لديهم دور من منح هذه الأذونات إلى تطبيقك.
يتم إجراء طلبات cURL للوسائط المستخدمة في محاولات النشر، لذا يجب استضافة الوسائط على خادم يمكن الوصول إليه بشكل عام في وقت المحاولة.
لا يمكن النشر على الحسابات الاحترافية في Instagram المرتبطة بصفحة تتطلب توفير تصريح بالنشر على الصفحة (PPA) حتى يتم إكمال تصريح PPA.
يمكن لمستخدم التطبيق تنفيذ مهام على صفحة لا تتطلب في البداية توفير تصريح PPA، ولكنها تتطلب توفيره لاحقًا. في هذا السيناريو، لن يتمكّن مستخدم التطبيق من نشر المحتوى على الحساب الاحترافي في Instagram حتى يتم إكمال تصريح PPA. نظرًا إلى عدم وجود طريقة تساعدك في تحديد ما إذا كانت صفحة مستخدم التطبيق تتطلب تصريح PPA أم لا، فإننا نوصيك بإبلاغ مستخدمي التطبيق بإكمال تصريح PPA مسبقًا.
لمزيد من التقييدات، ارجع إلى كل مرجع نقطة نهاية.
يتم تقييد حسابات Instagram عند 50 منشورًا يتم نشرها بواسطة API خلال فترة تستغرق 24 ساعة متعاقبة. تُعد الإعلانات الدوّارة منشورًا فرديًا. يتم فرض هذا التقييد على نقطة النهاية POST /{ig-user-id}/media_publish
عند محاولة نشر حاوية وسائط. نوصي بأن يفرض تطبيقك أيضًا تقييدًا لمعدلات استدعاء النشر، خاصةً إذا كان تطبيقك يتيح لمستخدمي التطبيق جدولة المنشورات المطلوب نشرها في المستقبل.
للتحقق من استخدام تقييد معدلات الاستدعاء الحالي للحساب الاحترافي في Instagram، يمكنك الاستعلام عن نقطة النهاية GET /{ig-user-id}/content_publishing_limit
.
تتكون API من نقاط النهاية التالية: ويمكنك الرجوع إلى المستند المرجعي لكل نقطة نهاية للحصول على متطلبات الاستخدام.
POST /{ig-user-id}/media
— تحميل الوسائط وإنشاء حاويات الوسائط.POST /{ig-user-id}/media_publish
— نشر الوسائط التي تم تحميلها باستخدام حاويات الوسائط.GET /{ig-container-id}?fields=status_code
— التحقق من أهلية وحالة النشر في حاوية الوسائط.GET /{ig-user-id}/content_publishing_limit
— التحقق من استخدام تقييد معدلات استدعاء النشر الحالي لدى مستخدم التطبيق.تتكون عملية نشر صورة أو فيديو أو قصة أو مقطع ريلز فردي من خطوتين:
POST /{ig-user-id}/media
لإنشاء حاوية من الصورة أو الفيديو الذي تتم استضافته على الخادم العام.POST /{ig-user-id}/media_publish
لنشر هذه الحاوية.الخطوة 1 من 2: إنشاء حاوية
لنفترض أنه لديك صورة في...
https://www.example.com/images/bronz-fonz.jpg
... وتريد نشرها مع تضمين الهاشتاج "#BronzFonz" في الشرح التوضيحي. أرسل طلبًا إلى نقطة النهاية POST /{ig-user-id}/media
:
POST https://graph.facebook.com/v21.0
/17841400008460056/media
?image_url=https://www.example.com/images/bronz-fonz.jpg
&caption=#BronzFonz
يؤدي هذا الطلب إلى إرجاع معرف حاوية الصورة.
{ "id": "17889455560051444" // IG Container ID }
الخطوة 2 من 2: نشر حاوية
استخدم نقطة النهاية POST /{ig-user-id}/media_publish
لنشر معرف الحاوية الذي تم إرجاعه في الخطوة السابقة.
POST https://graph.facebook.com/v21.0
/17841400008460056/media_publish ?creation_id=17889455560051444
{ "id": "17920238422030506" // IG Media ID }
يمكنك نشر ما يصل إلى 10 صور أو مقاطع فيديو أو مزيج من الاثنين في منشور فردي (منشور إعلان دوّار). تتكون عملية نشر الإعلانات الدوّارة من ثلاث خطوات:
POST /{ig-user-id}/media
لإنشاء حاويات عنصر فردي لكل صورة وفيديو سيظهر في الإعلان الدوّار.POST /{ig-user-id}/media
مرة أخرى لإنشاء حاوية إعلان دوّار فردية للعناصر.POST /{ig-user-id}/media_publish
لنشر حاوية الإعلان الدوّار.تُعد منشورات الإعلان الدوّار منشورًا فرديًا ضمن نطاق تقييد معدلات الاستدعاء للحساب.
التقييدات
الخطوة 1 من 3: إنشاء حاوية العنصر
استخدم نقطة النهاية POST /{ig-user-id}/media
لإنشاء حاوية عنصر للصورة أو الفيديو الذي سيظهر في الإعلان الدوّار. يمكن أن تتضمن الإعلانات الدوّارة حتى 10 صور أو مقاطع فيديو أو مزيجًا من الاثنين.
POST /{ig-user-id}/media
المعلمات التالية مطلوبة. يمكنك الرجوع إلى مرجع نقطة النهاية POST /{ig-user-id}/media
لمعرفة المعلمات الإضافية المدعومة.
is_carousel_item
— يتم التعيين إلى true
. ويشير إلى أن الصورة أو الفيديو سيظهر في الإعلان الدوّار.image_url
— (صور فقط) تمثل مسار الصورة. وسيتم إجراء طلبات cURL للصورة لديك باستخدام عنوان URL الذي تم إدخاله، لذا يجب أن تتوفر هذه الصورة على خادم عام.media_type
— (مقاطع الفيديو فقط) يتم التعيين إلى VIDEO
. ويشير إلى أن الوسائط عبارة عن مقطع فيديو.video_url
— (مقاطع الفيديو فقط) تمثل مسار الفيديو. وسيتم إجراء طلبات cURL للفيديو لديك باستخدام عنوان URL الذي تم إدخاله، لذا يجب أن يتوفر هذا الفيديو على خادم عام.إذا كانت العملية ناجحة، فستُرجع API معرف حاوية العنصر الذي يمكن استخدامه عند إنشاء حاوية إعلان دوّار.
كرّر هذه العملية لكل صورة أو فيديو يجب أن يظهر في الإعلان الدوّار.
curl -i -X POST \
"https://graph.facebook.com/v21.0
/90010177253934/media?image_url=https%3A%2F%2Fsol...&is_carousel_item=true&access_token=EAAOc..."
{ "id": "17899506308402767" }
الخطوة 2 من 3: إنشاء حاوية إعلان دوّار
استخدم نقطة النهاية POST /{ig-user-id}/media
لإنشاء حاوية إعلان دوّار.
POST /{ig-user-id}/media
المعلمات التالية مطلوبة. يمكنك الرجوع إلى مرجع نقطة النهاية POST /{ig-user-id}/media
لمعرفة المعلمات الإضافية المدعومة.
media_type
— يتم التعيين إلى CAROUSEL
. ويشير إلى أن الحاوية مخصصة لإعلان دوّار.children
— تمثل مصفوفة تضم حتى 10 معرفات حاوية لكل صورة أو فيديو يجب أن يظهر في الإعلان الدوّار المنشور. يمكن أن تتضمن الإعلانات الدوّارة حتى 10 صور أو مقاطع فيديو أو مزيجًا من الاثنين.
curl -i -X POST \
"https://graph.facebook.com/v21.0
/90010177253934/media?caption=Fruit%20candies&media_type=CAROUSEL&children=17899506308402767%2C18193870522147812%2C17853844403701904&access_token=EAAOc..."
{ "id": "18000748627392977" }
الخطوة 3 من 3: نشر حاوية إعلان دوّار
استخدم نقطة النهاية POST /{ig-user-id}/media_publish
لنشر حاوية إعلان دوّار (منشور إعلان دوّار). يتم تقييد الحسابات عند 50 منشورًا يتم نشرها خلال فترة 24 ساعة. يُعد نشر إعلان دوّار منشورًا فرديًا.
POST /{ig-user-id}/media_publish
يلزم توفير المعلمات التالية.
creation_id
— تمثل معرف حاوية الإعلان الدوّار.إذا كانت العملية ناجحة، فستُرجع API معرف وسائط IG لألبوم الإعلان الدوّار.
curl -i -X POST \
"https://graph.facebook.com/v21.0
/90010177253934/media_publish?creation_id=18000748627392977&access_token=EAAOc..."
{ "id": "90010778390276" }
مقاطع ريلز هي مقاطع فيديو قصيرة مؤهلة للظهور في علامة التبويب مقاطع ريلز ضمن تطبيق Instagram إذا كانت تفي بمواصفات معينة وتم تحديدها بواسطة الخوارزمية لدينا. لنشر مقطع ريلز، اتبع الخطوات المطلوبة لنشر منشور وسائط فردي وقم بتضمين المعلمة media_type=REELS
إلى جانب مسار الفيديو باستخدام المعلمة video_url
.
لاحظ أن ريلز ليست نوع وسائط جديد، على الرغم من تعيين المعلمة media_type=REELS
عند نشر مقطع ريلز. إذا نشرت مقطع ريلز ثم طلبت الحقل media_type
المرتبط به، فسيتم إرجاع القيمة VIDEO
. لاكتشاف ما إذا كان قد تم تحديد فيديو تم نشره كمقطع ريلز، اطلب الحقل media_product_type
المرتبط به بدلاً من ذلك.
يمكنك استخدام عينة الرمز المتوفرة على GitHub (insta_reels_publishing_api_sample) للتعرف على كيفية نشر مقاطع ريلز على Instagram.
لجعل الأمر أكثر ملاءمة للمطوّرين، نشرت Meta المجموعة الكاملة من استدعاءات Graph API في ريلز من Instagram على منصة Postman API. لمزيد من المعلومات، راجع تشكيلات Postman في ريلز من فيسبوك وريلز من Instagram.
لمزيد من المعلومات حول ريلز، راجع وثائق مطوّر ريلز.
يمكن لحسابات الأعمال فقط نشر القصص باستخدام API نشر المحتوى في الوقت الحالي.
القصص هي مقاطع فيديو وصور يتم نشرها كقصص IG على Instagram. لنشر قصة ما، اتبع الخطوات ذاتها المطلوبة لنشر منشور وسائط فردي وقم بتضمين المعلمة media_type=STORIES
إلى جانب مسار الصورة/الفيديو باستخدام المعلمة image_url
أو video_url
.
ملاحظة: القصص لا تُعد نوع وسائط جديد، على الرغم من إعداد المعلمة media_type=STORIES
عند نشر قصة. إذا نشرت قصة ثم طلبت الحقل media_type
، فسيتم إرجاع القيمة كـ IMAGE/VIDEO
. لاكتشاف ما إذا كان قد تم تحديد الصورة/الفيديو الذي تم نشره كقصة، اطلب الحقل media_product_type
المرتبط به بدلاً من ذلك.
بروتوكول التحميل القابل للاستئناف هو دفق جديد للعلامة التجارية لنشر محتوى Instagram الذي يدعم تحميلات الفيديو لمقاطع ريلز وقصص الفيديو وعناصر إعلان الفيديو الدوّار media_types
.
يدعم هذا البرتوكول الجديد إنشاء وسائط Instagram لكل من مقاطع الفيديو المحلية ومقاطع فيديو عنوان url المستضافة للعامة. يتيح لك البرتوكول استئناف عملية تحميل الملف المحلي بعد انقطاع الشبكة أو عمليات فشل النقل الأخرى، ما يوفر الوقت والنطاق الترددي في حالة فشل الشبكة. كما يحتفظ بمواصفات الوسائط ذاتها.
POST https://graph.facebook.com/{api-version}/{ig-user-id}/media
— تهيئة حاويات إنشاء الفيديو عن طريق تعيين upload_type=resumable.POST https://rupload.facebook.com/ig-api-upload/{api-version}/{ig-container-id}
— تحميل الفيديو من ملف فيديو محلي أو عنوان URL مستضاف بشكل أكثر موثوقية باستخدام بروتوكول التحميل القابل للاستئناف. POST https://graph.facebook.com/{api-version}/{ig-user-id}/media_publish
— نشر الوسائط التي تم تحميلها باستخدام حاويات الوسائط.GET /{ig-container-id}?fields=status_code
— التحقق من الأهلية وحالة النشر في حاوية الوسائط.user_tags=[{username:’ig_user_name’}]
إلى user_tags=%5B%7Busername:ig_user_name%7D%5D
حيث يتم ترميز [
إلى %5B
وترميز {
إلى %7B
. لمزيد من التحويلات، يُرجى الرجوع إلى معيار تشفير HTML لعنوان URL.curl -X POST "https://graph.facebook.com/{api-version}/{ig-user-id}/media" \ -d "media_type=REELS" \ -d "upload_type=resumable" \ -d "caption={caption}"\ -d "collaborators={collaborators-username}" -d "cover_url={cover-url}" \ -d "audio_name={audio-name}" \ -d "user_tags={user-tags}" \ -d "location_id={location-id}" \ -d "thumb_offset={thumb-offset}" \ -H "Authorization: OAuth {access-token}"
curl -X POST "https://graph.facebook.com/{api-version}/{ig-user-id}/media" \ -d "media_type=STORIES" \ -d "upload_type=resumable" \ -H "Authorization: OAuth {access-token}"
curl -X POST "https://graph.facebook.com/{api-version}/{ig-user-id}/media" \ -d "media_type=VIDEO" \ -d "is_carousel_item=true" \ -d "upload_type=resumable" \ -H "Authorization: OAuth {access-token}"
{ "id": "{ig-container-id}", "uri": "https://rupload.facebook.com/ig-api-upload/{api-version}/{ig-container-id}" }
تستخدم معظم استدعاءات Graph API المضيف graph.facebook.com
، إلا أن الاستدعاءات لتحميل مقاطع الفيديو لريلز تستخدم rupload.facebook.com
.
مصادر الملفات التالية مدعومة لملفات الفيديو التي تم تحميلها:
من خلال ig-container-id
الذي يتم إرجاعه من استدعاء جلسة تحميل قابل للاستئناف، قم بتحميل الفيديو.
rupload.facebook.com
.media_type
الدفق ذاته لتحميل الفيديو.ig-container-id
هو المعرف الذي تم إرجاعه من استدعاءات جلسة التحميل القابل للاستئناف. access-token
هو ذاته المستخدم في الخطوات السابقة.offset
على أول بايت يتم تحميله، عادةً ما يكون 0
.file_size
على حجم الملف بالبايت.Your_file_local_path
على مسار الملف للملف المحلي، على سبيل المثال، إذا قمت بتحميل ملف من مجلد التنزيلات في macOS، فسيكون المسار @Downloads/example.mov.curl -X POST "https://rupload.facebook.com/ig-api-upload/{api-version}/{ig-container-id}" \ -H "Authorization: OAuth {access-token}" \ -H "offset: 0" \ -H "file_size: Your_file_size_in_bytes" \ --data-binary "@my_video_file.mp4"
curl -X POST "https://rupload.facebook.com/ig-api-upload/{api-version}/{ig-container-id}" \ -H "Authorization: OAuth {access-token}" \ -H "file_url: https://example_hosted_video.com"
// Success Response Message { "success":true, "message":"Upload successful." } // Failure Response Message { "debug_info":{ "retriable":false, "type":"ProcessingFailedError", "message":"{\"success\":false,\"error\":{\"message\":\"unauthorized user request\"}}" } }
يمكنك إعادة استخدام الخطوتين الأولى والثانية لإنشاء ig-container-ids
متعددة مع تعيين المعلمة is_carousel_item
على true
. بعد ذلك، يمكنك إنشاء حاوية الإعلان الدوّار لتضمين كل عناصر الإعلان الدوّار ويمكن مزج عناصر الإعلانات الدوّارة مع الصور ومقاطع الفيديو.
curl -X POST "https://graph.facebook.com/{api-version}/{ig-user-id}/media" \ -d "media_type=CAROUSEL" \ -d "caption={caption}"\ -d "collaborators={collaborator-usernames}" \ -d "location_id={location-id}" \ -d "product_tags={product-tags}" \ -d "children=[{ig-container-id},{ig-container-id}...]" \ -H "Authorization: OAuth {access-token}"
بالنسبة إلى ريلز وقصص الفيديو، يمكن استخدام {ig-container-id}
الذي تم إنشاؤه في الخطوة الأولى لنشر الفيديو وبالنسبة إلى حاوية الإعلان الدوّار، يتم استخدام {ig-container-id}
الذي تم إنشاؤه في الخطوة الثالثة لنشر حاوية الإعلان الدوّار.
curl -X POST "https://graph.facebook.com/{api-version}/{ig-user-id}/media_publish" \ -d "creation_id={ig-container-id}" \ -H "Authorization: OAuth {access-token}"
يوفر graph.facebook.com
نقطة نهاية GET
لقراءة حالة التحميل، ويحتوي الحقل video_status
على تفاصيل حول عملية التحميل المحلي.
uploading_phase
ما إذا تم تحميل الملف بنجاح وعدد وحدات البايت التي تم نقلها. processing_phase
على تفاصيل حول حالة معالجة الفيديو بعد تحميل ملف الفيديو.// GET status from graph.facebook.com curl -X GET "https://graph.facebook.com/v19.0/{ig-container-id}?fields=id,status,status_code,video_status" \ -H "Authorization: OAuth {access-token}"
graph.facebook.com
// A successfully created ig container { "id": "{ig-container-id}", "status": "Published: Media has been successfully published.", "status_code": "PUBLISHED", "video_status": { "uploading_phase": { "status": "complete", "bytes_transferred": 37006904 }, "processing_phase": { "status": "complete" } } } // An interrupted ig container creation, from here you can resume your upload in step 2 with offset=50002. { "id": "{ig-container-id}", "status": "Published: Media has been successfully published.", "status_code": "PUBLISHED", "video_status": { "uploading_phase": { "status": "in_progress", "bytes_transferred": 50002 }, "processing_phase": { "status": "not_started" } } }
يمكنك إضافة مستخدمي Instagram العاميين في صورة أو إعلان دوّار أو مقطع ريلز كمساهمين وسيتلقون دعوة ليصبحوا مساهمين لتلك الوسائط المحددة. للإشارة إلى المستخدمين في صورة، اتبع خطوات منشورات الوسائط الفردية أعلاه، ولكن عند إنشاء حاوية الوسائط، قم بتضمين معلمة المساهمين ومصفوفة سلاسل تشير إلى أسماء مستخدمي Instagram للمستخدمين الذين تود دعوتهم كمساهمين في الوسائط.
POST graph.facebook.com/17841400008460056/media ?image_url=https://www.example.com/images/bronzed-fonzes.jpg &caption=#BronzedFonzes! &collaborators= [‘username1’,’username2’]
يمكنك استخدام API البحث في الصفحات ، تأكد من تضمين الحقل `location` في الاستعلام، للبحث عن الصفحات التي تتطابق أسماؤها مع سلسلة البحث. ثم قم بتحليل النتائج لتحديد أي صفحات تم إنشاؤها لموقع فعلي. إذا تم تضمين معرف الصفحة عند نشر صورة أو فيديو، فستتم الإشارة إليه مع الموقع المرتبط بهذه الصفحة.
من أجل أن تكون مؤهلاً للإشارة، يجب أن تحتوي الصفحة على بيانات موقع تتضمن خطوط العرض وخطوط الطول.
تحقق من أن الصفحة التي تريد استخدامها تحتوي على بيانات خطوط الطول والعرض في الاستجابة. وستفشل محاولة إنشاء حاوية باستخدام صفحة لا تحتوي على بيانات موقع مع إرجاع الاستثناء INSTAGRAM_PLATFORM_API__INVALID_LOCATION_ID
الذي يحتوي على رمز.
بمجرد الحصول على معرف الصفحة، قم بتعيينه إلى المعلمة location_id
عند نشر حاويات عنصر الوسائط الفردية أو الإعلان الدوّار.
يمكنك نشر منشورات الوسائط الفردية ومنشورات الإعلانات الدوَّارة التي تتضمن إشارات منتجات التسوق على Instagram. يمكنك الرجوع إلى الدليل الإشارة إلى المنتجات للتعرف على كيفية القيام بذلك.
يمكنك الإشارة إلى مستخدمي حسابات Instagram العامة في صورة، وسيتلقون إشعارًا بأنه تمت الإشارة إليهم.
للإشارة إلى مستخدمين في صورة، اتبع خطوات منشورات الوسائط الفردية أعلاه، ولكن عند إنشاء حاوية الوسائط، احرص على تضمين المعلمة user_tags
ومصفوفة من الكائنات تشير إلى مستخدمي Instagram الذين تمت الإشارة إليهم في الصورة بالإضافة إلى إحداثيات x/y ضمن الصورة ذاتها.
ملاحظة: لا يتم دعم إشارات المستخدم في وسائط الفيديو الموجودة في الإعلانات الدوّارة.
POST graph.facebook.com/17841400008460056/media ?image_url=https://www.example.com/images/bronzed-fonzes.jpg &caption=#BronzedFonzes! &user_tags= [ { username:'kevinhart4real', x: 0.5, y: 0.8 }, { username:'therock', x: 0.3, y: 0.2 } ]
يُرجع هذا الطلب معرف الحاوية الذي تنشره بعد ذلك باستخدام نقطة نهاية نشر وسائط مستخدم IG.
user_tags
عبارة عن مصفوفة من كائنات بتنسيق بلغة JSON.username
وx
وy
) لكل مستخدم.x
وy
عبارة عن أرقام float
تنشأ من أعلى يمين الصورة بنطاق يتراوح من 0.0
إلى 1.0
.إذا كان بإمكانك إنشاء حاوية لفيديو ولكن لا تقوم نقطة النهاية POST /{ig-user-id}/media_publish
بإرجاع معرف الوسائط المنشورة، فيمكنك الحصول على حالة نشر الحاوية من خلال الاستعلام عن نقطة النهاية GET /{ig-container-id}?fields=status_code
. وستعمل نقطة النهاية هذه على إرجاع أحد العناصر التالية:
EXPIRED
— لم يتم نشر الحاوية في غضون 24 ساعة وانتهت صلاحيتها.ERROR
— فشلت الحاوية في إكمال عملية النشر.FINISHED
— تكون الحاوية وكائن الوسائط التابع لها جاهزين للنشر.IN_PROGRESS
— لا تزال الحاوية قيد عملية النشر.PUBLISHED
— تم نشر كائن وسائط الحاوية.نوصي بالاستعلام عن حالة الحاوية مرة واحدة في الدقيقة ولمدة لا تزيد عن 5 دقائق.
يمكنك الاطّلاع على مرجع رموز الخطأ.