LinkedIn · Arazzo Workflow

LinkedIn Upload an Image and Create a Post

Version 1.0.0

Register an image upload, confirm the image asset, then publish a post that references it.

1 workflow 2 source APIs 1 provider
View Spec View on GitHub BusinessCareersMarketingProfessional NetworkingRecruitingSocial-MediaFortune 1000ArazzoWorkflows

Provider

linkedin

Workflows

upload-image-and-create-post
Initialize an image upload, verify the asset, and publish a post with the image.
Registers an image upload for an organization owner to obtain an image URN, confirms the asset resolves, and creates a post that embeds the uploaded image.
3 steps inputs: authorization, commentary, imageUrn, linkedinVersion, ownerUrn outputs: postUrn
1
initializeImageUpload
Register the upcoming image upload for the owner to obtain the image URN and upload URL.
2
verifyImage
Retrieve the single image to confirm the asset resolved before referencing it in a post.
3
createPost
Create a published post authored by the owner that embeds the uploaded image as its media.

Source API Descriptions

Arazzo Workflow Specification

Raw ↑
arazzo: 1.0.1
info:
  title: LinkedIn Upload an Image and Create a Post
  summary: Register an image upload, confirm the image asset, then publish a post that references it.
  description: >-
    Creating a rich post with an image on LinkedIn is a register-then-publish
    pattern. This workflow initializes an image upload to obtain an image URN,
    verifies that the image asset resolves, and then creates a post that
    references the uploaded image as its media. Every step spells out its request
    inline, including the Authorization bearer token and the required
    LinkedIn-Version header, so the flow can be read and executed without opening
    the underlying OpenAPI description.
  version: 1.0.0
  x-realizes-capability-ids:
  - BC-400.60
  x-capability-derivation:
    method: 'deterministic join: sourceDescriptions -> per-tag OpenAPI -> tag/capability edge. No classification at this step.'
    min_confidence: 0.7
    sources:
    - capability_id: BC-400.60
      capability_name: Digital Marketing Management
      spec: linkedin-use-cases-image-ad-api-openapi.yml
      confidence: 0.7
    model: Turbo EA Capabilities by Vincent Verdet — Turbo EA, https://github.com/vincentmakes/turbo-ea-capabilities, CC BY 4.0
sourceDescriptions:
- name: useCasesDocumentAdApi
  url: ../openapi/linkedin-use-cases-document-ad-api-openapi.yml
  type: openapi
- name: useCasesImageAdApi
  url: ../openapi/linkedin-use-cases-image-ad-api-openapi.yml
  type: openapi
workflows:
- workflowId: upload-image-and-create-post
  summary: Initialize an image upload, verify the asset, and publish a post with the image.
  description: >-
    Registers an image upload for an organization owner to obtain an image URN,
    confirms the asset resolves, and creates a post that embeds the uploaded
    image.
  inputs:
    type: object
    required:
    - authorization
    - linkedinVersion
    - ownerUrn
    - imageUrn
    - commentary
    properties:
      authorization:
        type: string
        description: The OAuth 2.0 bearer credential, e.g. "Bearer <access-token>".
      linkedinVersion:
        type: string
        description: The LinkedIn-Version header in YYYYMM format (e.g. "202401").
      ownerUrn:
        type: string
        description: The owner URN that will own the image, e.g. "urn:li:organization:5583111".
      imageUrn:
        type: string
        description: The image URN to verify after upload registration, e.g. "urn:li:image:abc".
      commentary:
        type: string
        description: The commentary text for the post.
  steps:
  - stepId: initializeImageUpload
    description: >-
      Register the upcoming image upload for the owner to obtain the image URN
      and upload URL.
    operationId: postInitializeImageUpload
    parameters:
    - name: Authorization
      in: header
      value: $inputs.authorization
    - name: LinkedIn-Version
      in: header
      value: $inputs.linkedinVersion
    - name: X-Restli-Protocol-Version
      in: header
      value: "2.0.0"
    - name: action
      in: query
      value: initializeUpload
    requestBody:
      contentType: application/json
      payload:
        initializeUploadRequest:
          owner: $inputs.ownerUrn
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      uploadResult: $response.body
  - stepId: verifyImage
    description: >-
      Retrieve the single image to confirm the asset resolved before referencing
      it in a post.
    operationId: getGetASingleImage
    parameters:
    - name: Authorization
      in: header
      value: $inputs.authorization
    - name: LinkedIn-Version
      in: header
      value: $inputs.linkedinVersion
    - name: X-Restli-Protocol-Version
      in: header
      value: "2.0.0"
    - name: image_urn
      in: path
      value: $inputs.imageUrn
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      image: $response.body
  - stepId: createPost
    description: >-
      Create a published post authored by the owner that embeds the uploaded
      image as its media.
    operationId: postCreateDocumentContent
    parameters:
    - name: Authorization
      in: header
      value: $inputs.authorization
    requestBody:
      contentType: application/json
      payload:
        author: $inputs.ownerUrn
        commentary: $inputs.commentary
        visibility: PUBLIC
        distribution:
          feedDistribution: MAIN_FEED
          targetEntities: []
          thirdPartyDistributionChannels: []
        content:
          media:
            id: $inputs.imageUrn
        lifecycleState: PUBLISHED
        isReshareDisabledByAuthor: false
    successCriteria:
    - condition: $statusCode == 201
    outputs:
      postUrn: $response.body#/id
  outputs:
    postUrn: $steps.createPost.outputs.postUrn

Work with this as data

Every workflow here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for arazzo workflows

4 MCP tools reach this
  • find_arazzoBrowse and filter every workflow in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This workflow
curl "https://apis.io/api/v1/arazzo/linkedin-upload-image-and-create-post-workflow"
All arazzo workflows
curl "https://apis.io/api/v1/arazzo?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.