ProvidersInstagram

Instagram

Instagram professional (Business and Creator) accounts through your Meta app, discovered and connected through the Facebook Page each account is linked to.

The permissions each capability needs are in App Review: Instagram.

  • feed and reel are publish variants of instagram.media.items; stories are their own surface because Instagram serves them from their own edge.
  • A DM reply is addressed to a person, not to a message: set recipientExternalId to the sender's id.
  • Instagram's comment webhook reports new comments only — no edits, deletions, or hides — so instagram.media.comments emits created alone.
Content typeOperationsEventsBackfill
instagram.media.itemslist, get, publishcreatedyes
instagram.media.commentslist, get, publish, moderatecreatedno
instagram.media.mentionsnonecreatedno
instagram.stories.itemslist, get, publishcreatedyes
instagram.dm.threadslistnoneno
instagram.dm.messageslist, publishcreatedno

instagram.media.items

The account's feed posts and reels.

list

List Instagram profile media items.

FieldTypeRequiredDescription
connectedProfileIdstringyesKoil Connected Profile associated with the operation.
cursorstringnoOpaque cursor for fetching the next result page.
limitnumbernoMaximum number of items to return.
includeProviderRawbooleannoWhether to include transient provider-native payloads.
JSON Schema
{
  "additionalProperties": false,
  "type": "object",
  "properties": {
    "connectedProfileId": {
      "description": "Koil Connected Profile associated with the operation.",
      "minLength": 1,
      "type": "string"
    },
    "cursor": {
      "description": "Opaque cursor for fetching the next result page.",
      "minLength": 1,
      "type": "string"
    },
    "limit": {
      "description": "Maximum number of items to return.",
      "minimum": 1,
      "type": "number"
    },
    "includeProviderRaw": {
      "description": "Whether to include transient provider-native payloads.",
      "type": "boolean"
    }
  },
  "required": [
    "connectedProfileId"
  ]
}

get

Get one Instagram media item by provider id.

FieldTypeRequiredDescription
connectedProfileIdstringyesKoil Connected Profile associated with the operation.
externalIdstringyes
includeProviderRawbooleannoWhether to include transient provider-native payloads.
JSON Schema
{
  "additionalProperties": false,
  "type": "object",
  "properties": {
    "connectedProfileId": {
      "description": "Koil Connected Profile associated with the operation.",
      "minLength": 1,
      "type": "string"
    },
    "externalId": {
      "minLength": 1,
      "type": "string"
    },
    "includeProviderRaw": {
      "description": "Whether to include transient provider-native payloads.",
      "type": "boolean"
    }
  },
  "required": [
    "connectedProfileId",
    "externalId"
  ]
}

publish

Publish Instagram feed or reel media.

Submit through POST /v1/publish-requests with contentType: "instagram.media.items". These fields go in the item's args; connectedProfileId and variant are item fields.

variant: "feed"

FieldTypeRequiredDescription
textstringnoCaption/body text for content.
mediaobject | object[]yes
schedulingobjectnoFuture operation time and optional wall-clock timezone.
JSON Schema
{
  "additionalProperties": false,
  "type": "object",
  "properties": {
    "text": {
      "description": "Caption/body text for content.",
      "type": "string"
    },
    "media": {
      "minItems": 1,
      "maxItems": 10,
      "type": "array",
      "items": {
        "anyOf": [
          {
            "additionalProperties": false,
            "type": "object",
            "properties": {
              "mediaId": {
                "minLength": 1,
                "type": "string"
              },
              "contentType": {
                "minLength": 1,
                "type": "string"
              },
              "altText": {
                "minLength": 1,
                "type": "string"
              }
            },
            "required": [
              "mediaId"
            ]
          },
          {
            "additionalProperties": false,
            "type": "object",
            "properties": {
              "sourceUrl": {
                "minLength": 1,
                "type": "string"
              },
              "contentType": {
                "minLength": 1,
                "type": "string"
              },
              "altText": {
                "minLength": 1,
                "type": "string"
              }
            },
            "required": [
              "sourceUrl"
            ]
          }
        ]
      }
    },
    "scheduling": {
      "additionalProperties": false,
      "description": "Future operation time and optional wall-clock timezone.",
      "type": "object",
      "properties": {
        "at": {
          "format": "date-time",
          "description": "Future execution time as an ISO-8601 string.",
          "type": "string"
        },
        "timezone": {
          "minLength": 1,
          "type": "string"
        }
      },
      "required": [
        "at"
      ]
    }
  },
  "required": [
    "media"
  ]
}

variant: "reel"

FieldTypeRequiredDescription
textstringnoCaption/body text for content.
mediaobject | object[]yes
schedulingobjectnoFuture operation time and optional wall-clock timezone.
JSON Schema
{
  "additionalProperties": false,
  "type": "object",
  "properties": {
    "text": {
      "description": "Caption/body text for content.",
      "type": "string"
    },
    "media": {
      "minItems": 1,
      "maxItems": 1,
      "type": "array",
      "items": {
        "anyOf": [
          {
            "additionalProperties": false,
            "type": "object",
            "properties": {
              "mediaId": {
                "minLength": 1,
                "type": "string"
              },
              "contentType": {
                "minLength": 1,
                "pattern": "^video/",
                "type": "string"
              },
              "altText": {
                "minLength": 1,
                "type": "string"
              }
            },
            "required": [
              "mediaId"
            ]
          },
          {
            "additionalProperties": false,
            "type": "object",
            "properties": {
              "sourceUrl": {
                "minLength": 1,
                "type": "string"
              },
              "contentType": {
                "minLength": 1,
                "pattern": "^video/",
                "type": "string"
              },
              "altText": {
                "minLength": 1,
                "type": "string"
              }
            },
            "required": [
              "sourceUrl"
            ]
          }
        ]
      }
    },
    "scheduling": {
      "additionalProperties": false,
      "description": "Future operation time and optional wall-clock timezone.",
      "type": "object",
      "properties": {
        "at": {
          "format": "date-time",
          "description": "Future execution time as an ISO-8601 string.",
          "type": "string"
        },
        "timezone": {
          "minLength": 1,
          "type": "string"
        }
      },
      "required": [
        "at"
      ]
    }
  },
  "required": [
    "media"
  ]
}

Not offered

  • update: provider not supported
  • moderate: provider not supported
  • delete: provider not supported

Events

Backfill: supported (bounded coverage); see Backfill history.

Item schema

What list and get return and what events carry as data.

FieldTypeRequiredDescription
externalIdstringyesProvider-owned content identifier.
variant"feed" | "reel"yes
textstringnoCaption/body text for content.
mediaobject[]no
providerPermalinkstring (uri)noCanonical provider URL for content.
publishedAtstring (date-time)noProvider publish timestamp as an ISO-8601 string.
providerRawunknownnoOptional provider-native payload included only for transient delivery/debug use.
contentType"instagram.media.items"yes

instagram.media.comments

Comments on the account's media, and replies to them.

list

List Instagram comments on one media item.

FieldTypeRequiredDescription
connectedProfileIdstringyesKoil Connected Profile associated with the operation.
mediaExternalIdstringyes
cursorstringnoOpaque cursor for fetching the next result page.
limitnumbernoMaximum number of items to return.
includeProviderRawbooleannoWhether to include transient provider-native payloads.
JSON Schema
{
  "additionalProperties": false,
  "type": "object",
  "properties": {
    "connectedProfileId": {
      "description": "Koil Connected Profile associated with the operation.",
      "minLength": 1,
      "type": "string"
    },
    "mediaExternalId": {
      "minLength": 1,
      "type": "string"
    },
    "cursor": {
      "description": "Opaque cursor for fetching the next result page.",
      "minLength": 1,
      "type": "string"
    },
    "limit": {
      "description": "Maximum number of items to return.",
      "minimum": 1,
      "type": "number"
    },
    "includeProviderRaw": {
      "description": "Whether to include transient provider-native payloads.",
      "type": "boolean"
    }
  },
  "required": [
    "connectedProfileId",
    "mediaExternalId"
  ]
}

get

Get one Instagram media comment by provider id.

FieldTypeRequiredDescription
connectedProfileIdstringyesKoil Connected Profile associated with the operation.
externalIdstringyes
includeProviderRawbooleannoWhether to include transient provider-native payloads.
JSON Schema
{
  "additionalProperties": false,
  "type": "object",
  "properties": {
    "connectedProfileId": {
      "description": "Koil Connected Profile associated with the operation.",
      "minLength": 1,
      "type": "string"
    },
    "externalId": {
      "minLength": 1,
      "type": "string"
    },
    "includeProviderRaw": {
      "description": "Whether to include transient provider-native payloads.",
      "type": "boolean"
    }
  },
  "required": [
    "connectedProfileId",
    "externalId"
  ]
}

publish

Publish an Instagram comment: a reply to a comment or a top-level comment on a media item.

Submit through POST /v1/publish-requests with contentType: "instagram.media.comments". These fields go in the item's args; connectedProfileId and variant are item fields.

FieldTypeRequiredDescription
targetobjectyesThe provider content this publish targets, identified as events identify it.
textstringyesCaption/body text for content.
JSON Schema
{
  "additionalProperties": false,
  "type": "object",
  "properties": {
    "target": {
      "additionalProperties": false,
      "description": "The provider content this publish targets, identified as events identify it.",
      "type": "object",
      "properties": {
        "contentType": {
          "anyOf": [
            {
              "const": "instagram.media.comments",
              "type": "string"
            },
            {
              "const": "instagram.media.items",
              "type": "string"
            }
          ]
        },
        "externalId": {
          "description": "Provider-owned content identifier.",
          "minLength": 1,
          "type": "string"
        }
      },
      "required": [
        "contentType",
        "externalId"
      ]
    },
    "text": {
      "description": "Caption/body text for content.",
      "type": "string"
    }
  },
  "required": [
    "target",
    "text"
  ]
}

moderate

Hide or unhide an Instagram media comment.

FieldTypeRequiredDescription
connectedProfileIdstringyesKoil Connected Profile associated with the operation.
externalIdstringyes
hiddenbooleanyes
JSON Schema
{
  "additionalProperties": false,
  "type": "object",
  "properties": {
    "connectedProfileId": {
      "description": "Koil Connected Profile associated with the operation.",
      "minLength": 1,
      "type": "string"
    },
    "externalId": {
      "minLength": 1,
      "type": "string"
    },
    "hidden": {
      "type": "boolean"
    }
  },
  "required": [
    "connectedProfileId",
    "externalId",
    "hidden"
  ]
}

Not offered

  • update: provider not supported
  • delete: provider not supported

Events

Backfill: not offered — provider no endpoint.

Item schema

What list and get return and what events carry as data.

FieldTypeRequiredDescription
externalIdstringyesProvider-owned content identifier.
mediaExternalIdstringyes
textstringyesCaption/body text for content.
authorobjectnoProvider actor reference for observed content.
threadobjectnoParent/root identifiers for threaded contexts.
publishedAtstring (date-time)noProvider publish timestamp as an ISO-8601 string.
providerRawunknownnoOptional provider-native payload included only for transient delivery/debug use.
contentType"instagram.media.comments"yes

instagram.media.mentions

Mentions of the account in other users' posts and comments. Delivered as events only: Meta offers no endpoint that lists them.

Not offered

  • list: provider no endpoint
  • get: not applicable
  • publish: provider not supported
  • update: provider not supported
  • moderate: provider not supported
  • delete: provider not supported

Events

Backfill: not offered — provider no endpoint.

Item schema

What list and get return and what events carry as data.

FieldTypeRequiredDescription
externalIdstringyesProvider-owned content identifier.
variant"comment" | "caption"yes
mediaExternalIdstringno
commentExternalIdstringno
textstringnoCaption/body text for content.
authorobjectnoProvider actor reference for observed content.
threadobjectnoParent/root identifiers for threaded contexts.
providerPermalinkstring (uri)noCanonical provider URL for content.
publishedAtstring (date-time)noProvider publish timestamp as an ISO-8601 string.
providerRawunknownnoOptional provider-native payload included only for transient delivery/debug use.
contentType"instagram.media.mentions"yes

instagram.stories.items

The account's live stories.

list

List the Instagram profile's live stories.

FieldTypeRequiredDescription
connectedProfileIdstringyesKoil Connected Profile associated with the operation.
cursorstringnoOpaque cursor for fetching the next result page.
limitnumbernoMaximum number of items to return.
includeProviderRawbooleannoWhether to include transient provider-native payloads.
JSON Schema
{
  "additionalProperties": false,
  "type": "object",
  "properties": {
    "connectedProfileId": {
      "description": "Koil Connected Profile associated with the operation.",
      "minLength": 1,
      "type": "string"
    },
    "cursor": {
      "description": "Opaque cursor for fetching the next result page.",
      "minLength": 1,
      "type": "string"
    },
    "limit": {
      "description": "Maximum number of items to return.",
      "minimum": 1,
      "type": "number"
    },
    "includeProviderRaw": {
      "description": "Whether to include transient provider-native payloads.",
      "type": "boolean"
    }
  },
  "required": [
    "connectedProfileId"
  ]
}

get

Get one Instagram story by provider id.

FieldTypeRequiredDescription
connectedProfileIdstringyesKoil Connected Profile associated with the operation.
externalIdstringyes
includeProviderRawbooleannoWhether to include transient provider-native payloads.
JSON Schema
{
  "additionalProperties": false,
  "type": "object",
  "properties": {
    "connectedProfileId": {
      "description": "Koil Connected Profile associated with the operation.",
      "minLength": 1,
      "type": "string"
    },
    "externalId": {
      "minLength": 1,
      "type": "string"
    },
    "includeProviderRaw": {
      "description": "Whether to include transient provider-native payloads.",
      "type": "boolean"
    }
  },
  "required": [
    "connectedProfileId",
    "externalId"
  ]
}

publish

Publish an Instagram story from one image or video.

Submit through POST /v1/publish-requests with contentType: "instagram.stories.items". These fields go in the item's args; connectedProfileId and variant are item fields.

FieldTypeRequiredDescription
mediaobject | object[]yes
schedulingobjectnoFuture operation time and optional wall-clock timezone.
JSON Schema
{
  "additionalProperties": false,
  "type": "object",
  "properties": {
    "media": {
      "minItems": 1,
      "maxItems": 1,
      "type": "array",
      "items": {
        "anyOf": [
          {
            "additionalProperties": false,
            "type": "object",
            "properties": {
              "mediaId": {
                "minLength": 1,
                "type": "string"
              },
              "contentType": {
                "minLength": 1,
                "type": "string"
              },
              "altText": {
                "minLength": 1,
                "type": "string"
              }
            },
            "required": [
              "mediaId"
            ]
          },
          {
            "additionalProperties": false,
            "type": "object",
            "properties": {
              "sourceUrl": {
                "minLength": 1,
                "type": "string"
              },
              "contentType": {
                "minLength": 1,
                "type": "string"
              },
              "altText": {
                "minLength": 1,
                "type": "string"
              }
            },
            "required": [
              "sourceUrl"
            ]
          }
        ]
      }
    },
    "scheduling": {
      "additionalProperties": false,
      "description": "Future operation time and optional wall-clock timezone.",
      "type": "object",
      "properties": {
        "at": {
          "format": "date-time",
          "description": "Future execution time as an ISO-8601 string.",
          "type": "string"
        },
        "timezone": {
          "minLength": 1,
          "type": "string"
        }
      },
      "required": [
        "at"
      ]
    }
  },
  "required": [
    "media"
  ]
}

Not offered

  • update: provider not supported
  • moderate: provider not supported
  • delete: provider not supported

Events

Backfill: supported (bounded coverage); see Backfill history.

Item schema

What list and get return and what events carry as data.

FieldTypeRequiredDescription
externalIdstringyesProvider-owned content identifier.
textstringnoCaption/body text for content.
mediaobject[]no
providerPermalinkstring (uri)noCanonical provider URL for content.
publishedAtstring (date-time)noProvider publish timestamp as an ISO-8601 string.
providerRawunknownnoOptional provider-native payload included only for transient delivery/debug use.
contentType"instagram.stories.items"yes

instagram.dm.threads

The account's Instagram DM conversations.

list

List Instagram DM threads.

FieldTypeRequiredDescription
connectedProfileIdstringyesKoil Connected Profile associated with the operation.
cursorstringnoOpaque cursor for fetching the next result page.
limitnumbernoMaximum number of items to return.
includeProviderRawbooleannoWhether to include transient provider-native payloads.
JSON Schema
{
  "additionalProperties": false,
  "type": "object",
  "properties": {
    "connectedProfileId": {
      "description": "Koil Connected Profile associated with the operation.",
      "minLength": 1,
      "type": "string"
    },
    "cursor": {
      "description": "Opaque cursor for fetching the next result page.",
      "minLength": 1,
      "type": "string"
    },
    "limit": {
      "description": "Maximum number of items to return.",
      "minimum": 1,
      "type": "number"
    },
    "includeProviderRaw": {
      "description": "Whether to include transient provider-native payloads.",
      "type": "boolean"
    }
  },
  "required": [
    "connectedProfileId"
  ]
}

Not offered

  • get: provider not supported
  • publish: provider not supported
  • update: provider not supported
  • moderate: provider not supported
  • delete: provider not supported

Events

None: this content type is read-only.

Backfill: not offered — not implemented.

Item schema

What list and get return and what events carry as data.

FieldTypeRequiredDescription
externalIdstringyesProvider-owned content identifier.
participantExternalIdsstring[]yes
updatedAtstring (date-time)noProvider update timestamp as an ISO-8601 string.
providerRawunknownnoOptional provider-native payload included only for transient delivery/debug use.
contentType"instagram.dm.threads"yes

instagram.dm.messages

Messages in one Instagram DM conversation.

list

List Instagram DM messages in one thread.

FieldTypeRequiredDescription
connectedProfileIdstringyesKoil Connected Profile associated with the operation.
threadExternalIdstringyes
cursorstringnoOpaque cursor for fetching the next result page.
limitnumbernoMaximum number of items to return.
includeProviderRawbooleannoWhether to include transient provider-native payloads.
JSON Schema
{
  "additionalProperties": false,
  "type": "object",
  "properties": {
    "connectedProfileId": {
      "description": "Koil Connected Profile associated with the operation.",
      "minLength": 1,
      "type": "string"
    },
    "threadExternalId": {
      "minLength": 1,
      "type": "string"
    },
    "cursor": {
      "description": "Opaque cursor for fetching the next result page.",
      "minLength": 1,
      "type": "string"
    },
    "limit": {
      "description": "Maximum number of items to return.",
      "minimum": 1,
      "type": "number"
    },
    "includeProviderRaw": {
      "description": "Whether to include transient provider-native payloads.",
      "type": "boolean"
    }
  },
  "required": [
    "connectedProfileId",
    "threadExternalId"
  ]
}

publish

Send an Instagram DM to a recipient.

Submit through POST /v1/publish-requests with contentType: "instagram.dm.messages". These fields go in the item's args; connectedProfileId and variant are item fields.

FieldTypeRequiredDescription
recipientExternalIdstringyesProvider actor the message is addressed to, such as a DM event's author.id.
textstringyesCaption/body text for content.
JSON Schema
{
  "additionalProperties": false,
  "type": "object",
  "properties": {
    "recipientExternalId": {
      "minLength": 1,
      "description": "Provider actor the message is addressed to, such as a DM event's author.id.",
      "type": "string"
    },
    "text": {
      "description": "Caption/body text for content.",
      "type": "string"
    }
  },
  "required": [
    "recipientExternalId",
    "text"
  ]
}

Not offered

  • get: provider not supported
  • update: provider not supported
  • moderate: provider not supported
  • delete: provider not supported

Events

Backfill: not offered — not implemented.

Item schema

What list and get return and what events carry as data.

FieldTypeRequiredDescription
externalIdstringyesProvider-owned content identifier.
threadExternalIdstringnoOwning conversation id. Present on messages read through instagram.dm.threads; absent on webhook-observed messages because the provider's messaging webhooks do not identify the conversation.
textstringnoCaption/body text for content.
authorobjectnoProvider actor reference for observed content.
threadobjectnoParent/root identifiers for threaded contexts.
publishedAtstring (date-time)noProvider publish timestamp as an ISO-8601 string.
providerRawunknownnoOptional provider-native payload included only for transient delivery/debug use.
contentType"instagram.dm.messages"yes

On this page