> ## Documentation Index
> Fetch the complete documentation index at: https://docs.reelevant.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Post contentsrendercomponent

> Render a single component, outside of any stored content, and
answer with the image the engine drew, so an editor can display a component
whose pixels only the engine knows how to produce (i.e `image-composition`)
as one image instead of reimplementing its mutations on its own canvas.

Generic on purpose: the type and the options are validated through the sdk
template codec, which is what decides whether a component type exists and
whether its options are well formed, so no component schema is duplicated
here.

Stateless: the options travel in the request with their dependencies
already resolved, which is also why nothing is cached server side. It draws
caller-provided urls on demand, so it is authenticated and every url goes
through the same SSRF guard as the other url-taking routes.



## OpenAPI

````yaml https://openapi.production.reelevant.io/v1/render/contents-api post /contents/render/component
openapi: 3.0.0
info:
  title: contents-api
  version: c365c8c18ab48aa9c6fe9a01a85e3912290b8f3b
  description: |-
    # Errors
    | Error code | Message | HTTP status code | Payload |
    | :--- | :--- | :--- | :--- |
    | number | string | 404 |  |
servers:
  - url: https://api.reelevant.com/v2/
    description: production
security: []
paths:
  /contents/render/component:
    post:
      tags:
        - Content
      description: >-
        Render a single component, outside of any stored content, and

        answer with the image the engine drew, so an editor can display a
        component

        whose pixels only the engine knows how to produce (i.e
        `image-composition`)

        as one image instead of reimplementing its mutations on its own canvas.


        Generic on purpose: the type and the options are validated through the
        sdk

        template codec, which is what decides whether a component type exists
        and

        whether its options are well formed, so no component schema is
        duplicated

        here.


        Stateless: the options travel in the request with their dependencies

        already resolved, which is also why nothing is cached server side. It
        draws

        caller-provided urls on demand, so it is authenticated and every url
        goes

        through the same SSRF guard as the other url-taking routes.
      operationId: render-component
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                type:
                  type: string
                  description: Component type, i.e `image-composition`
                width:
                  type: number
                  minimum: 1
                  maximum: 4000
                height:
                  type: number
                  minimum: 1
                  maximum: 4000
                options:
                  type: object
                  properties: {}
                  additionalProperties:
                    $ref: '#/components/schemas/AnyValue'
                  description: |-
                    Options of that component, as the sdk validates them, with
                    every dependency already resolved to a static value
              required:
                - type
                - width
                - height
                - options
              additionalProperties: false
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Readable'
      security:
        - password_auth: []
components:
  schemas:
    AnyValue:
      description: Can be any value
      nullable: true
    Readable:
      type: object
      properties:
        readableAborted:
          type: boolean
          readOnly: true
        readable:
          type: boolean
        readableDidRead:
          type: boolean
          readOnly: true
        readableEncoding:
          oneOf:
            - type: string
              enum:
                - ascii
            - type: string
              enum:
                - utf8
            - type: string
              enum:
                - utf-8
            - type: string
              enum:
                - utf16le
            - type: string
              enum:
                - utf-16le
            - type: string
              enum:
                - ucs2
            - type: string
              enum:
                - ucs-2
            - type: string
              enum:
                - base64
            - type: string
              enum:
                - base64url
            - type: string
              enum:
                - latin1
            - type: string
              enum:
                - binary
            - type: string
              enum:
                - hex
          nullable: true
          readOnly: true
        readableEnded:
          type: boolean
          readOnly: true
        readableFlowing:
          type: boolean
          nullable: true
          readOnly: true
        readableHighWaterMark:
          type: number
          readOnly: true
        readableLength:
          type: number
          readOnly: true
        readableObjectMode:
          type: boolean
          readOnly: true
        destroyed:
          type: boolean
        closed:
          type: boolean
          readOnly: true
        errored:
          allOf:
            - $ref: '#/components/schemas/Error'
          nullable: true
          readOnly: true
      required:
        - readableAborted
        - readable
        - readableDidRead
        - readableEncoding
        - readableEnded
        - readableFlowing
        - readableHighWaterMark
        - readableLength
        - readableObjectMode
        - destroyed
        - closed
        - errored
      additionalProperties: false
    Error:
      type: object
      properties:
        name:
          type: string
        message:
          type: string
        stack:
          type: string
        cause:
          $ref: '#/components/schemas/AnyValue'
      required:
        - name
        - message
      additionalProperties: false
  securitySchemes:
    password_auth:
      type: oauth2
      flows:
        password:
          tokenUrl: https://api.reelevant.com/v2/auth/token
          refreshUrl: https://api.reelevant.com/v2/auth/token
          scopes: {}

````