गाइड · posts:write
मीडिया के साथ पोस्ट
एक फ़ोटो अपलोड करें, उसका इस्तेमाल करने वाली एक पोस्ट पब्लिश करें, फिर उसे एडिट या डिलीट करें। पब्लिश करना दो स्टेप का flow है: पहले मीडिया, फिर पोस्ट।
Scopes: posts:write (और स्टोरीज़ के लिए stories:write, पोस्ट वापस पढ़ने के लिए posts:read)।
1. मीडिया अपलोड करें#
फ़ाइल को multipart/form-data के रूप में file नाम के फ़ील्ड में भेजें। Response में एक mediaId होता है जिसे अगले स्टेप में इस्तेमाल करना है।
curl https://api.linework.app/open/v1/media \
-H "Authorization: Bearer $LINEWORK_API_KEY" \
-F "file=@sunset.jpg"
import { readFile } from "node:fs/promises";
const form = new FormData();
form.append("file", new Blob([await readFile("sunset.jpg")], { type: "image/jpeg" }), "sunset.jpg");
const res = await fetch("https://api.linework.app/open/v1/media", {
method: "POST",
headers: { Authorization: `Bearer ${process.env.LINEWORK_API_KEY}` },
body: form, // do not set Content-Type: fetch adds the multipart boundary
});
const { mediaId } = await res.json();
import os, requests
API = "https://api.linework.app/open/v1"
s = requests.Session()
s.headers["Authorization"] = f"Bearer {os.environ['LINEWORK_API_KEY']}"
with open("sunset.jpg", "rb") as f:
r = s.post(API + "/media", files={"file": ("sunset.jpg", f, "image/jpeg")}, timeout=120)
r.raise_for_status()
media_id = r.json()["mediaId"]
{ "mediaId": "m_8f2c1a" }
मीडिया की सीमाएँ
| Type | फ़ॉर्मैट | अधिकतम साइज़ |
|---|---|---|
| इमेज | JPEG, PNG, WebP, GIF | 50 MB |
| वीडियो | MP4, MOV (QuickTime), WebM | 500 MB |
इससे बड़ी फ़ाइलें 413 PAYLOAD_TOO_LARGE के साथ fail होती हैं; दूसरे फ़ॉर्मैट 400 VALIDATION_ERROR के साथ। अपलोड किया गया जो मीडिया कभी किसी पोस्ट में इस्तेमाल नहीं होता, उसे कुछ समय बाद डिलीट किया जा सकता है।
2. पोस्ट पब्लिश करें#
curl https://api.linework.app/open/v1/posts \
-H "Authorization: Bearer $LINEWORK_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "text": "Golden hour on the lake 🌅", "mediaIds": ["m_8f2c1a"] }'
const res = await fetch("https://api.linework.app/open/v1/posts", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.LINEWORK_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ text: "Golden hour on the lake 🌅", mediaIds: [mediaId] }),
});
const post = await res.json();
console.log(post.id);
r = s.post(API + "/posts", json={"text": "Golden hour on the lake 🌅", "mediaIds": [media_id]}, timeout=30)
r.raise_for_status()
post = r.json()
print(post["id"])
एक पोस्ट में सिर्फ़ टेक्स्ट, सिर्फ़ मीडिया या दोनों हो सकते हैं। हर पोस्ट हर अकाउंट के 50 पोस्ट के दैनिक quota में गिनी जाती है (quotas)।
3. एडिट या डिलीट करें#
# change the text
curl -X PATCH https://api.linework.app/open/v1/posts/1043 \
-H "Authorization: Bearer $LINEWORK_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "text": "Golden hour on Lake Como 🌅" }'
# delete the post
curl -X DELETE https://api.linework.app/open/v1/posts/1043 \
-H "Authorization: Bearer $LINEWORK_API_KEY"
आप सिर्फ़ अपनी पोस्ट एडिट और डिलीट कर सकते हैं। उन्हें GET /posts/{id} से वापस पढ़ें या GET /me/posts (posts:read) से उनकी सूची देखें।
एक स्टोरी पब्लिश करें#
स्टोरीज़ भी अपलोड का वही flow इस्तेमाल करती हैं: POST /media से अपलोड करें, फिर mediaId के साथ स्टोरी बनाएँ। Scope stories:write, दैनिक quota 20 स्टोरीज़।
curl https://api.linework.app/open/v1/stories \
-H "Authorization: Bearer $LINEWORK_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "mediaId": "m_8f2c1a" }'
अच्छे तरीके#
- ऐसा कंटेंट पोस्ट करें जो लोग देखना चाहते हैं। API की शर्तों के अनुसार दोहराव वाला या ऑटोमेटेड भराऊ कंटेंट स्पैम है।
- अगर
POST /postsका time out हो जाए, तो duplicates से बचने के लिए retry करने से पहलेGET /me/postsजाँचें। - सिर्फ़ वही मीडिया पब्लिश करें जिसके अधिकार आपके पास हैं।