Portal Community
Prerequisite: You must call media/createContainer first to obtain a creationId. Connect the success port of that node into this node's creationId field.

When to Use

Configuration

Connection

FieldRequiredDescription
accessTokenRequiredLong-lived Instagram access token stored in BizFirst Credentials Manager.
igUserIdRequiredYour Instagram Business/Creator account ID (numeric string).

Operation

FieldRequiredDescription
resourceRequiredMust be media.
operationRequiredMust be publish.
creationIdRequiredContainer ID returned by media/createContainer. Use {{ $output.instagram.creationId }} to reference the previous node's output.
Container expiry: Containers expire 24 hours after creation. If you attempt to publish an expired container, the operation fails with a Graph API error. Re-run media/createContainer to create a fresh container.

Sample Configuration JSON

{
  "resource": "media",
  "operation": "publish",
  "accessToken": "{{ $credential.instagram.accessToken }}",
  "igUserId": "17841400000000000",
  "creationId": "{{ $output.createContainer.instagram.creationId }}"
}

Validation Errors

ErrorCause
accessToken is requiredaccessToken field is missing or empty.
igUserId is requiredigUserId field is missing or empty.
creationId is requiredcreationId field is missing or empty.
Graph API error 9007Container is still being processed (video). Retry after a short delay.
Graph API error 190Access token expired or invalid.

Output

Success Port

FieldTypeDescription
statusstring"success"
mediaIdstringPublished Instagram media object ID. Use with media/get to retrieve post details.
payloadstringRaw JSON response from the Graph API.

Error Port

FieldTypeDescription
statusstring"error"
errorCodestringGraph API error code.
errorMessagestringError description.
payloadstringRaw error response.

Sample Output JSON

{
  "status": "success",
  "mediaId": "17855590000000099",
  "payload": "{\"id\":\"17855590000000099\"}"
}

Expression Reference

ExpressionValue
{{ $output.instagram.mediaId }}Published media object ID

Node Policies & GuardRails

Examples

Standard image publish (two-step flow)

// Node 1: media/createContainer
{
  "resource": "media",
  "operation": "create-container",
  "accessToken": "{{ $credential.instagram.accessToken }}",
  "igUserId": "17841400000000000",
  "mediaType": "IMAGE",
  "imageUrl": "https://cdn.yourbrand.com/campaigns/spring2025.jpg",
  "caption": "Spring has arrived! New arrivals are here. #spring2025"
}

// Node 2: media/publish (receives creationId from Node 1)
{
  "resource": "media",
  "operation": "publish",
  "accessToken": "{{ $credential.instagram.accessToken }}",
  "igUserId": "17841400000000000",
  "creationId": "{{ $output.node1.instagram.creationId }}"
}

Scheduled publish — retrieve stored creationId

{
  "resource": "media",
  "operation": "publish",
  "accessToken": "{{ $credential.instagram.accessToken }}",
  "igUserId": "{{ $env.IG_USER_ID }}",
  "creationId": "{{ $db.scheduledPosts.where(id=$input.postId).creationId }}"
}

Triggered by a scheduled workflow. The creationId was stored in the database when the post was created earlier in the day, and is now retrieved at publish time.