🚀 Socket Launch Week Day 5:Introducing Repository Access Permissions and Custom Roles.Learn more
Sign In

@robinpath/instagram

Package Overview
Dependencies
Maintainers
4
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@robinpath/instagram - npm Package Compare versions

Comparing version
0.1.0
to
0.1.1
+36
-7
package.json
{
"name": "@robinpath/instagram",
"version": "0.1.0",
"publishConfig": { "access": "public" },
"version": "0.1.1",
"publishConfig": {
"access": "public"
},
"type": "module",
"main": "dist/index.js",
"types": "dist/index.d.ts",
"exports": { ".": { "import": "./dist/index.js", "types": "./dist/index.d.ts" } },
"files": ["dist"],
"scripts": { "build": "tsc" },
"peerDependencies": { "@wiredwp/robinpath": ">=0.20.0" },
"devDependencies": { "@wiredwp/robinpath": "^0.30.1", "typescript": "^5.6.0" }
"exports": {
".": {
"import": "./dist/index.js",
"types": "./dist/index.d.ts"
}
},
"files": [
"dist"
],
"scripts": {
"build": "tsc"
},
"peerDependencies": {
"@robinpath/core": ">=0.20.0"
},
"devDependencies": {
"@robinpath/core": "^0.30.1",
"typescript": "^5.6.0"
},
"description": "Instagram module for RobinPath.",
"keywords": [
"instagram",
"social media"
],
"license": "MIT",
"robinpath": {
"category": "social-media",
"type": "integration",
"auth": "bearer-token",
"functionCount": 21,
"baseUrl": "https://graph.facebook.com/v22.0"
}
}
-6
import type { ModuleAdapter } from "@wiredwp/robinpath";
declare const InstagramModule: ModuleAdapter;
export default InstagramModule;
export { InstagramModule };
export { InstagramFunctions, InstagramFunctionMetadata, InstagramModuleMetadata } from "./instagram.js";
//# sourceMappingURL=index.d.ts.map
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGxD,QAAA,MAAM,eAAe,EAAE,aAMtB,CAAC;AAEF,eAAe,eAAe,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,CAAC;AAC3B,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC"}
import { InstagramFunctions, InstagramFunctionMetadata, InstagramModuleMetadata } from "./instagram.js";
const InstagramModule = {
name: "instagram",
functions: InstagramFunctions,
functionMetadata: InstagramFunctionMetadata,
moduleMetadata: InstagramModuleMetadata,
global: false,
}; // as ModuleAdapter
export default InstagramModule;
export { InstagramModule };
export { InstagramFunctions, InstagramFunctionMetadata, InstagramModuleMetadata } from "./instagram.js";
//# sourceMappingURL=index.js.map
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAExG,MAAM,eAAe,GAAkB;IACrC,IAAI,EAAE,WAAW;IACjB,SAAS,EAAE,kBAAkB;IAC7B,gBAAgB,EAAE,yBAAgC;IAClD,cAAc,EAAE,uBAA8B;IAC9C,MAAM,EAAE,KAAK;CACd,CAAC,CAAC,mBAAmB;AAEtB,eAAe,eAAe,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,CAAC;AAC3B,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC"}
import type { BuiltinHandler } from "@wiredwp/robinpath";
export declare const InstagramFunctions: Record<string, BuiltinHandler>;
export declare const InstagramFunctionMetadata: {
setToken: {
description: string;
parameters: {
name: string;
dataType: string;
description: string;
formInputType: string;
required: boolean;
}[];
returnType: string;
returnDescription: string;
example: string;
};
setBusinessAccount: {
description: string;
parameters: {
name: string;
dataType: string;
description: string;
formInputType: string;
required: boolean;
}[];
returnType: string;
returnDescription: string;
example: string;
};
getProfile: {
description: string;
parameters: {
name: string;
dataType: string;
description: string;
formInputType: string;
required: boolean;
}[];
returnType: string;
returnDescription: string;
example: string;
};
getMedia: {
description: string;
parameters: {
name: string;
dataType: string;
description: string;
formInputType: string;
required: boolean;
}[];
returnType: string;
returnDescription: string;
example: string;
};
listMedia: {
description: string;
parameters: {
name: string;
dataType: string;
description: string;
formInputType: string;
required: boolean;
}[];
returnType: string;
returnDescription: string;
example: string;
};
createMediaContainer: {
description: string;
parameters: {
name: string;
dataType: string;
description: string;
formInputType: string;
required: boolean;
}[];
returnType: string;
returnDescription: string;
example: string;
};
createVideoContainer: {
description: string;
parameters: {
name: string;
dataType: string;
description: string;
formInputType: string;
required: boolean;
}[];
returnType: string;
returnDescription: string;
example: string;
};
createCarouselContainer: {
description: string;
parameters: {
name: string;
dataType: string;
description: string;
formInputType: string;
required: boolean;
}[];
returnType: string;
returnDescription: string;
example: string;
};
publishMedia: {
description: string;
parameters: {
name: string;
dataType: string;
description: string;
formInputType: string;
required: boolean;
}[];
returnType: string;
returnDescription: string;
example: string;
};
getMediaInsights: {
description: string;
parameters: {
name: string;
dataType: string;
description: string;
formInputType: string;
required: boolean;
}[];
returnType: string;
returnDescription: string;
example: string;
};
getAccountInsights: {
description: string;
parameters: {
name: string;
dataType: string;
description: string;
formInputType: string;
required: boolean;
}[];
returnType: string;
returnDescription: string;
example: string;
};
getComments: {
description: string;
parameters: {
name: string;
dataType: string;
description: string;
formInputType: string;
required: boolean;
}[];
returnType: string;
returnDescription: string;
example: string;
};
replyToComment: {
description: string;
parameters: {
name: string;
dataType: string;
description: string;
formInputType: string;
required: boolean;
}[];
returnType: string;
returnDescription: string;
example: string;
};
deleteComment: {
description: string;
parameters: {
name: string;
dataType: string;
description: string;
formInputType: string;
required: boolean;
}[];
returnType: string;
returnDescription: string;
example: string;
};
getStories: {
description: string;
parameters: {
name: string;
dataType: string;
description: string;
formInputType: string;
required: boolean;
}[];
returnType: string;
returnDescription: string;
example: string;
};
getHashtag: {
description: string;
parameters: {
name: string;
dataType: string;
description: string;
formInputType: string;
required: boolean;
}[];
returnType: string;
returnDescription: string;
example: string;
};
getHashtagMedia: {
description: string;
parameters: {
name: string;
dataType: string;
description: string;
formInputType: string;
required: boolean;
}[];
returnType: string;
returnDescription: string;
example: string;
};
getMentions: {
description: string;
parameters: {
name: string;
dataType: string;
description: string;
formInputType: string;
required: boolean;
}[];
returnType: string;
returnDescription: string;
example: string;
};
sendMessage: {
description: string;
parameters: {
name: string;
dataType: string;
description: string;
formInputType: string;
required: boolean;
}[];
returnType: string;
returnDescription: string;
example: string;
};
getConversations: {
description: string;
parameters: {
name: string;
dataType: string;
description: string;
formInputType: string;
required: boolean;
}[];
returnType: string;
returnDescription: string;
example: string;
};
getMessages: {
description: string;
parameters: {
name: string;
dataType: string;
description: string;
formInputType: string;
required: boolean;
}[];
returnType: string;
returnDescription: string;
example: string;
};
};
export declare const InstagramModuleMetadata: {
description: string;
methods: string[];
category: string;
};
//# sourceMappingURL=instagram.d.ts.map
{"version":3,"file":"instagram.d.ts","sourceRoot":"","sources":["../src/instagram.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAA2C,MAAM,oBAAoB,CAAC;AA8hBlG,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAsB7D,CAAC;AAEF,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8MrC,CAAC;AAEF,eAAO,MAAM,uBAAuB;;;;CAInC,CAAC"}
const accounts = new Map();
const API_BASE = "https://graph.facebook.com/v22.0";
// ── Helper ──────────────────────────────────────────────────────────
function getConfig(accountId = "default") {
const config = accounts.get(accountId);
if (!config) {
throw new Error(`Instagram account "${accountId}" not configured. Call instagram.setToken or instagram.setBusinessAccount first.`);
}
return config;
}
async function callApi(endpoint, accessToken, method = "GET", body) {
const url = new URL(`${API_BASE}/${endpoint}`);
const headers = {
Authorization: `Bearer ${accessToken}`,
};
const fetchOptions = { method, headers };
if (body && (method === "POST" || method === "DELETE")) {
headers["Content-Type"] = "application/json";
fetchOptions.body = JSON.stringify(body);
}
const response = await fetch(url.toString(), fetchOptions);
const result = (await response.json());
if (result.error) {
const err = result.error;
throw new Error(`Instagram API error: ${String(err.message ?? err.type ?? "unknown_error")} (code ${err.code ?? "?"})`);
}
return result;
}
async function callApiGet(endpoint, accessToken, params) {
const url = new URL(`${API_BASE}/${endpoint}`);
url.searchParams.set("access_token", accessToken);
if (params) {
for (const [key, value] of Object.entries(params)) {
url.searchParams.set(key, value);
}
}
const response = await fetch(url.toString());
const result = (await response.json());
if (result.error) {
const err = result.error;
throw new Error(`Instagram API error: ${String(err.message ?? err.type ?? "unknown_error")} (code ${err.code ?? "?"})`);
}
return result;
}
async function callApiPost(endpoint, accessToken, body) {
const url = new URL(`${API_BASE}/${endpoint}`);
const response = await fetch(url.toString(), {
method: "POST",
headers: {
Authorization: `Bearer ${accessToken}`,
"Content-Type": "application/json",
},
body: JSON.stringify(body),
});
const result = (await response.json());
if (result.error) {
const err = result.error;
throw new Error(`Instagram API error: ${String(err.message ?? err.type ?? "unknown_error")} (code ${err.code ?? "?"})`);
}
return result;
}
async function callApiDelete(endpoint, accessToken) {
const url = new URL(`${API_BASE}/${endpoint}`);
const response = await fetch(url.toString(), {
method: "DELETE",
headers: {
Authorization: `Bearer ${accessToken}`,
},
});
const result = (await response.json());
if (result.error) {
const err = result.error;
throw new Error(`Instagram API error: ${String(err.message ?? err.type ?? "unknown_error")} (code ${err.code ?? "?"})`);
}
return result;
}
// ── Function Handlers ───────────────────────────────────────────────
const setToken = (args) => {
const accessToken = String(args[0] ?? "");
if (!accessToken)
throw new Error("Access token is required.");
accounts.set("default", {
accessToken,
igBusinessAccountId: "",
});
return { ok: true, accountId: "default" };
};
const setBusinessAccount = (args) => {
const accessToken = String(args[0] ?? "");
const igBusinessAccountId = String(args[1] ?? "");
if (!accessToken)
throw new Error("Access token is required.");
if (!igBusinessAccountId)
throw new Error("IG Business Account ID is required.");
accounts.set("default", {
accessToken,
igBusinessAccountId,
});
return { ok: true, accountId: "default", igBusinessAccountId };
};
const getProfile = async (args) => {
const opts = (typeof args[0] === "object" && args[0] !== null ? args[0] : {});
const config = getConfig("default");
if (!config.igBusinessAccountId) {
throw new Error("IG Business Account ID is required. Call instagram.setBusinessAccount first.");
}
const fields = String(opts.fields ?? "id,name,username,biography,followers_count,follows_count,media_count,profile_picture_url,website");
const result = await callApiGet(`${config.igBusinessAccountId}`, config.accessToken, { fields });
return result;
};
const getMedia = async (args) => {
const mediaId = String(args[0] ?? "");
const fields = String(args[1] ?? "id,caption,media_type,media_url,timestamp,permalink,like_count,comments_count,thumbnail_url");
if (!mediaId)
throw new Error("Media ID is required.");
const config = getConfig("default");
const result = await callApiGet(mediaId, config.accessToken, { fields });
return result;
};
const listMedia = async (args) => {
const opts = (typeof args[0] === "object" && args[0] !== null ? args[0] : {});
const config = getConfig("default");
if (!config.igBusinessAccountId) {
throw new Error("IG Business Account ID is required. Call instagram.setBusinessAccount first.");
}
const params = {
fields: String(opts.fields ?? "id,caption,media_type,media_url,timestamp,permalink,like_count,comments_count"),
};
if (opts.limit)
params.limit = String(opts.limit);
if (opts.after)
params.after = String(opts.after);
if (opts.before)
params.before = String(opts.before);
const result = await callApiGet(`${config.igBusinessAccountId}/media`, config.accessToken, params);
return result;
};
const createMediaContainer = async (args) => {
const imageUrl = String(args[0] ?? "");
const caption = String(args[1] ?? "");
const opts = (typeof args[2] === "object" && args[2] !== null ? args[2] : {});
if (!imageUrl)
throw new Error("Image URL is required.");
const config = getConfig("default");
if (!config.igBusinessAccountId) {
throw new Error("IG Business Account ID is required. Call instagram.setBusinessAccount first.");
}
const body = {
image_url: imageUrl,
access_token: config.accessToken,
};
if (caption)
body.caption = caption;
if (opts.locationId)
body.location_id = String(opts.locationId);
if (opts.userTags)
body.user_tags = opts.userTags;
if (opts.isCarouselItem)
body.is_carousel_item = true;
const result = await callApiPost(`${config.igBusinessAccountId}/media`, config.accessToken, body);
return result;
};
const createVideoContainer = async (args) => {
const videoUrl = String(args[0] ?? "");
const caption = String(args[1] ?? "");
const opts = (typeof args[2] === "object" && args[2] !== null ? args[2] : {});
if (!videoUrl)
throw new Error("Video URL is required.");
const config = getConfig("default");
if (!config.igBusinessAccountId) {
throw new Error("IG Business Account ID is required. Call instagram.setBusinessAccount first.");
}
const mediaType = String(opts.mediaType ?? "REELS");
const body = {
video_url: videoUrl,
media_type: mediaType,
access_token: config.accessToken,
};
if (caption)
body.caption = caption;
if (opts.coverUrl)
body.cover_url = String(opts.coverUrl);
if (opts.thumbOffset)
body.thumb_offset = Number(opts.thumbOffset);
if (opts.locationId)
body.location_id = String(opts.locationId);
if (opts.isCarouselItem)
body.is_carousel_item = true;
if (opts.shareToFeed !== undefined)
body.share_to_feed = Boolean(opts.shareToFeed);
const result = await callApiPost(`${config.igBusinessAccountId}/media`, config.accessToken, body);
return result;
};
const createCarouselContainer = async (args) => {
const children = Array.isArray(args[0]) ? args[0].map(String) : [];
const caption = String(args[1] ?? "");
if (children.length < 2)
throw new Error("At least 2 child container IDs are required for a carousel.");
const config = getConfig("default");
if (!config.igBusinessAccountId) {
throw new Error("IG Business Account ID is required. Call instagram.setBusinessAccount first.");
}
const body = {
media_type: "CAROUSEL",
children: children.join(","),
access_token: config.accessToken,
};
if (caption)
body.caption = caption;
const result = await callApiPost(`${config.igBusinessAccountId}/media`, config.accessToken, body);
return result;
};
const publishMedia = async (args) => {
const containerId = String(args[0] ?? "");
if (!containerId)
throw new Error("Container ID is required.");
const config = getConfig("default");
if (!config.igBusinessAccountId) {
throw new Error("IG Business Account ID is required. Call instagram.setBusinessAccount first.");
}
const body = {
creation_id: containerId,
access_token: config.accessToken,
};
const result = await callApiPost(`${config.igBusinessAccountId}/media_publish`, config.accessToken, body);
return result;
};
const getMediaInsights = async (args) => {
const mediaId = String(args[0] ?? "");
const metrics = String(args[1] ?? "impressions,reach,engagement,saved");
if (!mediaId)
throw new Error("Media ID is required.");
const config = getConfig("default");
const result = await callApiGet(`${mediaId}/insights`, config.accessToken, { metric: metrics });
return result;
};
const getAccountInsights = async (args) => {
const metrics = String(args[0] ?? "impressions,reach,follower_count");
const period = String(args[1] ?? "day");
const opts = (typeof args[2] === "object" && args[2] !== null ? args[2] : {});
const config = getConfig("default");
if (!config.igBusinessAccountId) {
throw new Error("IG Business Account ID is required. Call instagram.setBusinessAccount first.");
}
const params = {
metric: metrics,
period,
};
if (opts.since)
params.since = String(opts.since);
if (opts.until)
params.until = String(opts.until);
const result = await callApiGet(`${config.igBusinessAccountId}/insights`, config.accessToken, params);
return result;
};
const getComments = async (args) => {
const mediaId = String(args[0] ?? "");
const opts = (typeof args[1] === "object" && args[1] !== null ? args[1] : {});
if (!mediaId)
throw new Error("Media ID is required.");
const config = getConfig("default");
const params = {
fields: String(opts.fields ?? "id,text,timestamp,username,like_count,replies"),
};
if (opts.limit)
params.limit = String(opts.limit);
if (opts.after)
params.after = String(opts.after);
const result = await callApiGet(`${mediaId}/comments`, config.accessToken, params);
return result;
};
const replyToComment = async (args) => {
const commentId = String(args[0] ?? "");
const message = String(args[1] ?? "");
if (!commentId)
throw new Error("Comment ID is required.");
if (!message)
throw new Error("Message is required.");
const config = getConfig("default");
const body = {
message,
access_token: config.accessToken,
};
const result = await callApiPost(`${commentId}/replies`, config.accessToken, body);
return result;
};
const deleteComment = async (args) => {
const commentId = String(args[0] ?? "");
if (!commentId)
throw new Error("Comment ID is required.");
const config = getConfig("default");
await callApiDelete(commentId, config.accessToken);
return { ok: true, commentId };
};
const getStories = async (args) => {
const opts = (typeof args[0] === "object" && args[0] !== null ? args[0] : {});
const config = getConfig("default");
if (!config.igBusinessAccountId) {
throw new Error("IG Business Account ID is required. Call instagram.setBusinessAccount first.");
}
const params = {
fields: String(opts.fields ?? "id,media_type,media_url,timestamp,permalink"),
};
const result = await callApiGet(`${config.igBusinessAccountId}/stories`, config.accessToken, params);
return result;
};
const getHashtag = async (args) => {
const hashtagName = String(args[0] ?? "");
if (!hashtagName)
throw new Error("Hashtag name is required.");
const config = getConfig("default");
if (!config.igBusinessAccountId) {
throw new Error("IG Business Account ID is required. Call instagram.setBusinessAccount first.");
}
const result = await callApiGet("ig_hashtag_search", config.accessToken, {
q: hashtagName,
user_id: config.igBusinessAccountId,
});
return result;
};
const getHashtagMedia = async (args) => {
const hashtagId = String(args[0] ?? "");
const type = String(args[1] ?? "top_media");
const opts = (typeof args[2] === "object" && args[2] !== null ? args[2] : {});
if (!hashtagId)
throw new Error("Hashtag ID is required.");
const config = getConfig("default");
if (!config.igBusinessAccountId) {
throw new Error("IG Business Account ID is required. Call instagram.setBusinessAccount first.");
}
const edgeType = type === "recent_media" ? "recent_media" : "top_media";
const params = {
user_id: config.igBusinessAccountId,
fields: String(opts.fields ?? "id,caption,media_type,media_url,permalink,timestamp,like_count,comments_count"),
};
if (opts.limit)
params.limit = String(opts.limit);
if (opts.after)
params.after = String(opts.after);
const result = await callApiGet(`${hashtagId}/${edgeType}`, config.accessToken, params);
return result;
};
const getMentions = async (args) => {
const opts = (typeof args[0] === "object" && args[0] !== null ? args[0] : {});
const config = getConfig("default");
if (!config.igBusinessAccountId) {
throw new Error("IG Business Account ID is required. Call instagram.setBusinessAccount first.");
}
const params = {
fields: String(opts.fields ?? "id,caption,media_type,media_url,permalink,timestamp"),
};
if (opts.limit)
params.limit = String(opts.limit);
if (opts.after)
params.after = String(opts.after);
const result = await callApiGet(`${config.igBusinessAccountId}/tags`, config.accessToken, params);
return result;
};
const sendMessage = async (args) => {
const recipientId = String(args[0] ?? "");
const message = String(args[1] ?? "");
if (!recipientId)
throw new Error("Recipient ID is required.");
if (!message)
throw new Error("Message is required.");
const config = getConfig("default");
if (!config.igBusinessAccountId) {
throw new Error("IG Business Account ID is required. Call instagram.setBusinessAccount first.");
}
const body = {
recipient: { id: recipientId },
message: { text: message },
access_token: config.accessToken,
};
const result = await callApiPost(`${config.igBusinessAccountId}/messages`, config.accessToken, body);
return result;
};
const getConversations = async (args) => {
const opts = (typeof args[0] === "object" && args[0] !== null ? args[0] : {});
const config = getConfig("default");
if (!config.igBusinessAccountId) {
throw new Error("IG Business Account ID is required. Call instagram.setBusinessAccount first.");
}
const params = {
platform: "instagram",
fields: String(opts.fields ?? "id,updated_time,participants,messages"),
};
if (opts.limit)
params.limit = String(opts.limit);
if (opts.after)
params.after = String(opts.after);
const result = await callApiGet(`${config.igBusinessAccountId}/conversations`, config.accessToken, params);
return result;
};
const getMessages = async (args) => {
const conversationId = String(args[0] ?? "");
const opts = (typeof args[1] === "object" && args[1] !== null ? args[1] : {});
if (!conversationId)
throw new Error("Conversation ID is required.");
const config = getConfig("default");
const params = {
fields: String(opts.fields ?? "id,message,from,to,created_time"),
};
if (opts.limit)
params.limit = String(opts.limit);
if (opts.after)
params.after = String(opts.after);
const result = await callApiGet(`${conversationId}/messages`, config.accessToken, params);
return result;
};
// ── Exports ─────────────────────────────────────────────────────────
export const InstagramFunctions = {
setToken,
setBusinessAccount,
getProfile,
getMedia,
listMedia,
createMediaContainer,
createVideoContainer,
createCarouselContainer,
publishMedia,
getMediaInsights,
getAccountInsights,
getComments,
replyToComment,
deleteComment,
getStories,
getHashtag,
getHashtagMedia,
getMentions,
sendMessage,
getConversations,
getMessages,
};
export const InstagramFunctionMetadata = {
setToken: {
description: "Store a long-lived Instagram access token for API calls",
parameters: [
{ name: "accessToken", dataType: "string", description: "Long-lived access token from Meta/Facebook", formInputType: "text", required: true },
],
returnType: "object",
returnDescription: "{ok, accountId}",
example: 'instagram.setToken "EAAG..."',
},
setBusinessAccount: {
description: "Store access token and IG Business Account ID for full API access",
parameters: [
{ name: "accessToken", dataType: "string", description: "Long-lived access token from Meta/Facebook", formInputType: "text", required: true },
{ name: "igBusinessAccountId", dataType: "string", description: "Instagram Business Account ID (numeric)", formInputType: "text", required: true },
],
returnType: "object",
returnDescription: "{ok, accountId, igBusinessAccountId}",
example: 'instagram.setBusinessAccount "EAAG..." "17841400123456"',
},
getProfile: {
description: "Get authenticated user's Instagram profile (id, username, biography, followers, media count, etc.)",
parameters: [
{ name: "options", dataType: "object", description: "{fields?: string} - comma-separated fields to retrieve", formInputType: "text", required: false },
],
returnType: "object",
returnDescription: "{id, name, username, biography, followers_count, follows_count, media_count, ...}",
example: 'instagram.getProfile',
},
getMedia: {
description: "Get details of a specific media item by ID",
parameters: [
{ name: "mediaId", dataType: "string", description: "Media ID to retrieve", formInputType: "text", required: true },
{ name: "fields", dataType: "string", description: "Comma-separated fields (default: id,caption,media_type,media_url,timestamp,permalink,like_count,comments_count)", formInputType: "text", required: false },
],
returnType: "object",
returnDescription: "{id, caption, media_type, media_url, timestamp, permalink, like_count, comments_count, ...}",
example: 'instagram.getMedia "17895695668004550"',
},
listMedia: {
description: "List the authenticated user's media posts with pagination",
parameters: [
{ name: "options", dataType: "object", description: "{limit?, after?, before?, fields?}", formInputType: "text", required: false },
],
returnType: "object",
returnDescription: "{data: [...media], paging: {cursors, next, previous}}",
example: 'instagram.listMedia {"limit": 10}',
},
createMediaContainer: {
description: "Create a media container for an image post (returns container ID for publishing)",
parameters: [
{ name: "imageUrl", dataType: "string", description: "Public URL of the image to post", formInputType: "text", required: true },
{ name: "caption", dataType: "string", description: "Post caption text", formInputType: "textarea", required: false },
{ name: "options", dataType: "object", description: "{locationId?, userTags?, isCarouselItem?}", formInputType: "text", required: false },
],
returnType: "object",
returnDescription: "{id} - container ID for use with publishMedia",
example: 'instagram.createMediaContainer "https://example.com/photo.jpg" "Beautiful sunset! #nature"',
},
createVideoContainer: {
description: "Create a media container for a video or Reel post",
parameters: [
{ name: "videoUrl", dataType: "string", description: "Public URL of the video", formInputType: "text", required: true },
{ name: "caption", dataType: "string", description: "Post caption text", formInputType: "textarea", required: false },
{ name: "options", dataType: "object", description: "{mediaType?: 'REELS'|'VIDEO', coverUrl?, thumbOffset?, locationId?, isCarouselItem?, shareToFeed?}", formInputType: "text", required: false },
],
returnType: "object",
returnDescription: "{id} - container ID for use with publishMedia",
example: 'instagram.createVideoContainer "https://example.com/video.mp4" "Check this out!" {"mediaType": "REELS"}',
},
createCarouselContainer: {
description: "Create a carousel container from multiple child container IDs",
parameters: [
{ name: "children", dataType: "array", description: "Array of child container IDs (minimum 2)", formInputType: "json", required: true },
{ name: "caption", dataType: "string", description: "Carousel caption text", formInputType: "textarea", required: false },
],
returnType: "object",
returnDescription: "{id} - carousel container ID for use with publishMedia",
example: 'instagram.createCarouselContainer ["17889615691123456", "17889615691123457"] "Photo dump!"',
},
publishMedia: {
description: "Publish a previously created media container (image, video, or carousel)",
parameters: [
{ name: "containerId", dataType: "string", description: "Container ID from createMediaContainer, createVideoContainer, or createCarouselContainer", formInputType: "text", required: true },
],
returnType: "object",
returnDescription: "{id} - published media ID",
example: 'instagram.publishMedia "17889615691123456"',
},
getMediaInsights: {
description: "Get insights/analytics for a specific media item",
parameters: [
{ name: "mediaId", dataType: "string", description: "Media ID to get insights for", formInputType: "text", required: true },
{ name: "metrics", dataType: "string", description: "Comma-separated metrics (default: impressions,reach,engagement,saved)", formInputType: "text", required: false },
],
returnType: "object",
returnDescription: "{data: [{name, period, values, title, description, id}]}",
example: 'instagram.getMediaInsights "17895695668004550" "impressions,reach,engagement,saved"',
},
getAccountInsights: {
description: "Get account-level insights (impressions, reach, follower_count, etc.)",
parameters: [
{ name: "metrics", dataType: "string", description: "Comma-separated metrics (e.g. impressions,reach,follower_count)", formInputType: "text", required: true },
{ name: "period", dataType: "string", description: "Time period: day, week, days_28, month, lifetime", formInputType: "select", required: true },
{ name: "options", dataType: "object", description: "{since?: unix_timestamp, until?: unix_timestamp}", formInputType: "text", required: false },
],
returnType: "object",
returnDescription: "{data: [{name, period, values, title, description}]}",
example: 'instagram.getAccountInsights "impressions,reach,follower_count" "day"',
},
getComments: {
description: "List comments on a media post",
parameters: [
{ name: "mediaId", dataType: "string", description: "Media ID to list comments for", formInputType: "text", required: true },
{ name: "options", dataType: "object", description: "{limit?, after?, fields?}", formInputType: "text", required: false },
],
returnType: "object",
returnDescription: "{data: [{id, text, timestamp, username, like_count}], paging}",
example: 'instagram.getComments "17895695668004550" {"limit": 25}',
},
replyToComment: {
description: "Reply to a specific comment on a media post",
parameters: [
{ name: "commentId", dataType: "string", description: "Comment ID to reply to", formInputType: "text", required: true },
{ name: "message", dataType: "string", description: "Reply text", formInputType: "text", required: true },
],
returnType: "object",
returnDescription: "{id} - reply comment ID",
example: 'instagram.replyToComment "17858893269123456" "Thank you!"',
},
deleteComment: {
description: "Delete or hide a comment by ID",
parameters: [
{ name: "commentId", dataType: "string", description: "Comment ID to delete", formInputType: "text", required: true },
],
returnType: "object",
returnDescription: "{ok, commentId}",
example: 'instagram.deleteComment "17858893269123456"',
},
getStories: {
description: "Get the authenticated user's currently active stories",
parameters: [
{ name: "options", dataType: "object", description: "{fields?: string}", formInputType: "text", required: false },
],
returnType: "object",
returnDescription: "{data: [{id, media_type, media_url, timestamp, permalink}]}",
example: 'instagram.getStories',
},
getHashtag: {
description: "Search for a hashtag ID by name",
parameters: [
{ name: "hashtagName", dataType: "string", description: "Hashtag name without # (e.g. 'travel')", formInputType: "text", required: true },
],
returnType: "object",
returnDescription: "{data: [{id}]}",
example: 'instagram.getHashtag "travel"',
},
getHashtagMedia: {
description: "Get top or recent media for a hashtag",
parameters: [
{ name: "hashtagId", dataType: "string", description: "Hashtag ID from getHashtag", formInputType: "text", required: true },
{ name: "type", dataType: "string", description: "'top_media' or 'recent_media' (default: top_media)", formInputType: "select", required: false },
{ name: "options", dataType: "object", description: "{limit?, after?, fields?}", formInputType: "text", required: false },
],
returnType: "object",
returnDescription: "{data: [...media], paging}",
example: 'instagram.getHashtagMedia "17843853986012965" "top_media" {"limit": 20}',
},
getMentions: {
description: "Get media posts where the authenticated user is tagged/mentioned",
parameters: [
{ name: "options", dataType: "object", description: "{limit?, after?, fields?}", formInputType: "text", required: false },
],
returnType: "object",
returnDescription: "{data: [...media], paging}",
example: 'instagram.getMentions {"limit": 10}',
},
sendMessage: {
description: "Send a direct message to a user via Instagram Messaging API",
parameters: [
{ name: "recipientId", dataType: "string", description: "Instagram-scoped ID of the recipient", formInputType: "text", required: true },
{ name: "message", dataType: "string", description: "Message text to send", formInputType: "text", required: true },
],
returnType: "object",
returnDescription: "{recipient_id, message_id}",
example: 'instagram.sendMessage "17841400123456" "Hello from RobinPath!"',
},
getConversations: {
description: "List DM conversations for the authenticated account",
parameters: [
{ name: "options", dataType: "object", description: "{limit?, after?, fields?}", formInputType: "text", required: false },
],
returnType: "object",
returnDescription: "{data: [{id, updated_time, participants, messages}], paging}",
example: 'instagram.getConversations {"limit": 10}',
},
getMessages: {
description: "Get messages within a specific DM conversation",
parameters: [
{ name: "conversationId", dataType: "string", description: "Conversation ID from getConversations", formInputType: "text", required: true },
{ name: "options", dataType: "object", description: "{limit?, after?, fields?}", formInputType: "text", required: false },
],
returnType: "object",
returnDescription: "{data: [{id, message, from, to, created_time}], paging}",
example: 'instagram.getMessages "t_1234567890" {"limit": 20}',
},
};
export const InstagramModuleMetadata = {
description: "Instagram Graph API client for managing posts, stories, comments, insights, hashtags, mentions, and direct messages via Meta/Facebook platform",
methods: Object.keys(InstagramFunctions),
category: "social",
};
//# sourceMappingURL=instagram.js.map
{"version":3,"file":"instagram.js","sourceRoot":"","sources":["../src/instagram.ts"],"names":[],"mappings":"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"}