Autoposting.ai Carousels API

Create, manage, and AI-generate carousel posts for LinkedIn and other platforms.

Operations 10

POST /carousels Create a carousel #
GET /carousels List carousels #
GET /carousels/{id} Get a carousel #
PATCH /carousels/{id} Update a carousel #
DELETE /carousels/{id} Delete a carousel #
POST /carousels/generate AI-generate carousel content #
POST /carousels/{id}/generate-design Generate carousel design #
POST /carousels/{id}/refine-design Refine carousel design with AI #
POST /carousels/{carouselId}/assets Upload carousel assets #
POST /carousels/{carouselId}/create-draft Create a post draft from carousel #

Work with this as data

Every API 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 apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • 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 API
curl "https://apis.io/api/v1/apis/autoposting-ai:autoposting-ai-carousels-api"
All apis
curl "https://apis.io/api/v1/apis?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.

OpenAPI Specification

autoposting-ai-carousels-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Autoposting Carousels API
  description: 'Schedule, publish, and AI-enhance social content across X, LinkedIn, Instagram, Threads, and YouTube. All responses use the `{ "success": boolean, "data": ... }` envelope. Authenticate with an API key (`Authorization: Bearer sk-social-...` or `x-api-key: sk-social-...`).'
  version: 1.0.0
servers:
- url: https://app.autoposting.ai/api-proxy
  description: Production
security:
- bearerAuth: []
- apiKeyHeader: []
tags:
- name: Carousels
  description: Create, manage, and AI-generate carousel posts for LinkedIn and other platforms.
paths:
  /carousels:
    post:
      tags:
      - Carousels
      summary: Create a carousel
      operationId: createCarousel
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - brandSlug
              - title
              properties:
                brandSlug:
                  type: string
                  description: Slug of the brand this carousel belongs to.
                  example: acme-corp
                title:
                  type: string
                  description: Internal title for the carousel.
                  example: 5 Growth Hacks for 2025
                slides:
                  type: array
                  items:
                    $ref: '#/components/schemas/SlideInput'
      responses:
        '200':
          description: Carousel created
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
                  data:
                    $ref: '#/components/schemas/Carousel'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    get:
      tags:
      - Carousels
      summary: List carousels
      operationId: listCarousels
      parameters:
      - name: brandSlug
        in: query
        required: false
        description: Filter by brand slug.
        schema:
          type: string
          example: acme-corp
      - name: limit
        in: query
        required: false
        description: 'Items per page. Default: 50, max: 100.'
        schema:
          type: number
          default: 50
          maximum: 100
          example: 20
      - name: offset
        in: query
        required: false
        description: 'Items to skip. Default: 0.'
        schema:
          type: number
          default: 0
          example: 0
      responses:
        '200':
          description: List of carousels
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
                  data:
                    type: object
                    properties:
                      carousels:
                        type: array
                        items:
                          $ref: '#/components/schemas/CarouselSummary'
                      total:
                        type: integer
                        example: 1
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /carousels/{id}:
    get:
      tags:
      - Carousels
      summary: Get a carousel
      operationId: getCarousel
      parameters:
      - name: id
        in: path
        required: true
        description: Carousel ID.
        schema:
          type: string
          example: car_01HXYZ
      responses:
        '200':
          description: Carousel detail
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
                  data:
                    $ref: '#/components/schemas/Carousel'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    patch:
      tags:
      - Carousels
      summary: Update a carousel
      operationId: updateCarousel
      parameters:
      - name: id
        in: path
        required: true
        description: Carousel ID.
        schema:
          type: string
          example: car_01HXYZ
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                title:
                  type: string
                  description: Updated title.
                  example: 5 Growth Hacks for 2025
                slides:
                  type: array
                  description: Full replacement of slides array. Order is determined by array index.
                  items:
                    $ref: '#/components/schemas/SlideInput'
      responses:
        '200':
          description: Carousel updated
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
                  data:
                    $ref: '#/components/schemas/Carousel'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    delete:
      tags:
      - Carousels
      summary: Delete a carousel
      operationId: deleteCarousel
      parameters:
      - name: id
        in: path
        required: true
        description: Carousel ID.
        schema:
          type: string
          example: car_01HXYZ
      responses:
        '200':
          description: Carousel deleted
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                        example: car_01HXYZ
                      deleted:
                        type: boolean
                        example: true
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /carousels/generate:
    post:
      tags:
      - Carousels
      summary: AI-generate carousel content
      description: Generate a full carousel (slides, structure, copy) from a prompt using AI. This operation consumes AI credits.
      operationId: generateCarousel
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - brandSlug
              - topic
              properties:
                brandSlug:
                  type: string
                  description: Brand to generate the carousel for.
                  example: acme-corp
                topic:
                  type: string
                  description: Topic or prompt for the carousel.
                  example: How to grow a LinkedIn audience from 0 to 10k
                slideCount:
                  type: number
                  description: 'Number of slides to generate. Default: 6.'
                  default: 6
                  example: 8
                tone:
                  type: string
                  description: Writing tone.
                  enum:
                  - professional
                  - casual
                  - educational
                  - inspirational
                  example: professional
      responses:
        '200':
          description: Carousel generated
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
                  data:
                    $ref: '#/components/schemas/Carousel'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /carousels/{id}/generate-design:
    post:
      tags:
      - Carousels
      summary: Generate carousel design
      description: Generate a visual design for the carousel based on the slides content and brand settings.
      operationId: generateCarouselDesign
      parameters:
      - name: id
        in: path
        required: true
        description: Carousel ID.
        schema:
          type: string
          example: car_01HXYZ
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                template:
                  type: string
                  description: Design template to use.
                colorScheme:
                  type: string
                  description: Color scheme override (e.g., dark, light, brand).
      responses:
        '200':
          description: Design generated
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
                  data:
                    $ref: '#/components/schemas/Carousel'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /carousels/{id}/refine-design:
    post:
      tags:
      - Carousels
      summary: Refine carousel design with AI
      description: Use AI to iteratively refine an existing carousel design.
      operationId: refineCarouselDesign
      parameters:
      - name: id
        in: path
        required: true
        description: Carousel ID.
        schema:
          type: string
          example: car_01HXYZ
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - instructions
              properties:
                instructions:
                  type: string
                  description: Natural language instructions for refinement (e.g., "make the fonts larger and use a darker background").
                  example: make the fonts larger and use a darker background
      responses:
        '200':
          description: Design refined
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
                  data:
                    $ref: '#/components/schemas/Carousel'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /carousels/{carouselId}/assets:
    post:
      tags:
      - Carousels
      summary: Upload carousel assets
      description: Upload images or other media to attach to carousel slides. Use multipart/form-data encoding.
      operationId: uploadCarouselAssets
      parameters:
      - name: carouselId
        in: path
        required: true
        description: Carousel ID.
        schema:
          type: string
          example: car_01HXYZ
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              required:
              - file
              properties:
                file:
                  type: string
                  format: binary
                  description: 'File to upload (image formats: JPEG, PNG, WebP).'
                slideId:
                  type: string
                  description: Associate the asset with a specific slide ID.
      responses:
        '200':
          description: Asset uploaded
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
                  data:
                    type: object
                    properties:
                      assetId:
                        type: string
                        example: asset_01HXYZ
                      url:
                        type: string
                        example: https://cdn.autoposting.ai/assets/asset_01HXYZ.png
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /carousels/{carouselId}/create-draft:
    post:
      tags:
      - Carousels
      summary: Create a post draft from carousel
      description: Renders the carousel as a PDF/image set and creates a post draft pre-populated with the media.
      operationId: createCarouselDraft
      parameters:
      - name: carouselId
        in: path
        required: true
        description: Carousel ID.
        schema:
          type: string
          example: car_01HXYZ
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - brandSlug
              properties:
                brandSlug:
                  type: string
                  description: Brand to create the draft under.
                  example: acme-corp
                platforms:
                  type: array
                  description: 'Target platforms for the draft post. Default: ["linkedin"].'
                  items:
                    type: string
                  default:
                  - linkedin
                caption:
                  type: string
                  description: Caption text for the post draft.
      responses:
        '200':
          description: Post draft created
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
                  data:
                    type: object
                    properties:
                      postId:
                        type: string
                        example: post_01HXYZ
                      status:
                        type: string
                        example: draft
                      mediaUrls:
                        type: array
                        items:
                          type: string
                        example:
                        - https://cdn.autoposting.ai/carousels/car_01HXYZ_slide_01.png
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    Error:
      type: object
      required:
      - success
      - error
      properties:
        success:
          type: boolean
          example: false
        error:
          type: string
          example: Unauthorized
        message:
          type: string
          example: Authentication required.
    Carousel:
      type: object
      properties:
        id:
          type: string
          example: car_01HXYZ
        brandSlug:
          type: string
          example: acme-corp
        title:
          type: string
          example: 5 Growth Hacks for 2025
        slides:
          type: array
          items:
            $ref: '#/components/schemas/Slide'
        design:
          type:
          - object
          - 'null'
          example: null
        status:
          type: string
          example: draft
        createdAt:
          type: string
          format: date-time
          example: '2024-01-01T00:00:00Z'
        updatedAt:
          type: string
          format: date-time
          example: '2024-01-01T00:00:00Z'
    SlideInput:
      type: object
      properties:
        title:
          type: string
          description: Slide headline text.
          example: Hook
        body:
          type: string
          description: Slide body text.
          example: Most founders ignore this...
        imageUrl:
          type: string
          description: Background or inline image URL.
    CarouselSummary:
      type: object
      properties:
        id:
          type: string
          example: car_01HXYZ
        title:
          type: string
          example: 5 Growth Hacks for 2025
        brandSlug:
          type: string
          example: acme-corp
        slideCount:
          type: integer
          example: 6
        status:
          type: string
          example: draft
        createdAt:
          type: string
          format: date-time
          example: '2024-01-01T00:00:00Z'
    Slide:
      type: object
      properties:
        id:
          type: string
          example: slide_01
        title:
          type: string
          example: Hook
        body:
          type: string
          example: Most founders ignore this...
        imageUrl:
          type:
          - string
          - 'null'
          example: null
        order:
          type: integer
          example: 0
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: 'API key as `Authorization: Bearer sk-social-...`'
    apiKeyHeader:
      type: apiKey
      in: header
      name: x-api-key
      description: 'API key as `x-api-key: sk-social-...`'