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

# Quiver Integration for AI Agents & Workflows

> Generate SVG images from text prompts or vectorize raster images into SVGs using QuiverAI. Supports reference images, style instructions, and multiple output generation.

{/* Self-hosted logo — build-time vendored from modulex.json / Iconify (see scripts/lib/logo.js). */}

<img src="https://mintcdn.com/modulexaillc/df8MOr-hXotYLTh5/logos/placeholder.svg?fit=max&auto=format&n=df8MOr-hXotYLTh5&q=85&s=a4046f9cd6d738c81259050e9833913c" alt="Quiver logo" width="72" height="72" data-path="logos/placeholder.svg" />

## Overview

Add **Quiver** to any ModuleX agent or workflow. AI-powered SVG generation and raster vectorization against the QuiverAI REST API (`api.quiver.ai/v1`). Generate clean, scalable vector graphics from text prompts or convert raster images into editable SVGs.

<Info>
  **Categories**: AI & Machine Learning · Image Generation · Design · **Auth**: API Key · **Actions**: 3
</Info>

## Authentication

### API Key Authentication

Authenticate using your QuiverAI API key

<Steps>
  <Step title="Step 1">
    Go to [https://quiver.ai](https://quiver.ai) and sign up or log in
  </Step>

  <Step title="Step 2">
    Open your account dashboard and navigate to API keys
  </Step>

  <Step title="Step 3">
    Create a new API key or copy your existing one
  </Step>

  <Step title="Step 4">
    Paste the API key below
  </Step>
</Steps>

#### Required Credentials

| Field            | Description                          | Required | Format |
| ---------------- | ------------------------------------ | -------- | ------ |
| QuiverAI API Key | Your QuiverAI API key from quiver.ai | Yes      | `-`    |

## Available Actions

<AccordionGroup>
  <Accordion title="text_to_svg — Generate SVG images from text prompts using QuiverAI.">
    ### Parameters

    <ResponseField name="prompt" type="string" required>
      A text description of the desired SVG
    </ResponseField>

    <ResponseField name="model" type="string">
      The model to use for SVG generation (e.g. "arrow-1.1") (Default: `arrow-1.1`)
    </ResponseField>

    <ResponseField name="instructions" type="string">
      Style or formatting guidance for the SVG output
    </ResponseField>

    <ResponseField name="references" type="array">
      Reference image URLs to guide SVG generation (up to 4 for arrow-1.1, 16 for arrow-1.1-max)
    </ResponseField>

    <ResponseField name="n" type="integer">
      Number of SVGs to generate (1-16, default 1)
    </ResponseField>

    <ResponseField name="temperature" type="number">
      Sampling temperature (0-2, default 1)
    </ResponseField>

    <ResponseField name="top_p" type="number">
      Nucleus sampling probability (0-1, default 1)
    </ResponseField>

    <ResponseField name="max_output_tokens" type="integer">
      Maximum output tokens (1-65536)
    </ResponseField>

    <ResponseField name="presence_penalty" type="number">
      Token penalty for prior output (-2 to 2, default 0)
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "SvgArtifact": {
          "additionalProperties": false,
          "description": "A single generated SVG returned in the response ``data`` array.",
          "properties": {
            "svg": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Svg"
            },
            "mime_type": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Mime Type"
            }
          },
          "title": "SvgArtifact",
          "type": "object"
        },
        "UsageInfo": {
          "additionalProperties": false,
          "description": "Token usage statistics returned alongside an SVG response.\n\nQuiver retains these fields for compatibility; they may be zeroed.\nBilling is reported via ``credits`` on the parent output.",
          "properties": {
            "input_tokens": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Input Tokens"
            },
            "output_tokens": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Output Tokens"
            },
            "total_tokens": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Total Tokens"
            }
          },
          "title": "UsageInfo",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Id"
        },
        "created": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Created"
        },
        "svg_content": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Svg Content"
        },
        "artifacts": {
          "items": {
            "$ref": "#/$defs/SvgArtifact"
          },
          "title": "Artifacts",
          "type": "array"
        },
        "credits": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Credits"
        },
        "usage": {
          "anyOf": [
            {
              "$ref": "#/$defs/UsageInfo"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        }
      },
      "required": [
        "success"
      ],
      "title": "TextToSvgOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="image_to_svg — Convert raster images into vector SVG format using QuiverAI.">
    ### Parameters

    <ResponseField name="image" type="string" required>
      URL of the raster image to vectorize into SVG
    </ResponseField>

    <ResponseField name="model" type="string">
      The model to use for vectorization (e.g. "arrow-1.1") (Default: `arrow-1.1`)
    </ResponseField>

    <ResponseField name="auto_crop" type="boolean">
      Automatically crop the image to its dominant subject
    </ResponseField>

    <ResponseField name="target_size" type="integer">
      Square resize target in pixels (128-4096)
    </ResponseField>

    <ResponseField name="temperature" type="number">
      Sampling temperature (0-2, default 1)
    </ResponseField>

    <ResponseField name="top_p" type="number">
      Nucleus sampling probability (0-1, default 1)
    </ResponseField>

    <ResponseField name="max_output_tokens" type="integer">
      Maximum output tokens (1-65536)
    </ResponseField>

    <ResponseField name="presence_penalty" type="number">
      Token penalty for prior output (-2 to 2, default 0)
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "SvgArtifact": {
          "additionalProperties": false,
          "description": "A single generated SVG returned in the response ``data`` array.",
          "properties": {
            "svg": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Svg"
            },
            "mime_type": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Mime Type"
            }
          },
          "title": "SvgArtifact",
          "type": "object"
        },
        "UsageInfo": {
          "additionalProperties": false,
          "description": "Token usage statistics returned alongside an SVG response.\n\nQuiver retains these fields for compatibility; they may be zeroed.\nBilling is reported via ``credits`` on the parent output.",
          "properties": {
            "input_tokens": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Input Tokens"
            },
            "output_tokens": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Output Tokens"
            },
            "total_tokens": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Total Tokens"
            }
          },
          "title": "UsageInfo",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Id"
        },
        "created": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Created"
        },
        "svg_content": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Svg Content"
        },
        "artifacts": {
          "items": {
            "$ref": "#/$defs/SvgArtifact"
          },
          "title": "Artifacts",
          "type": "array"
        },
        "credits": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Credits"
        },
        "usage": {
          "anyOf": [
            {
              "$ref": "#/$defs/UsageInfo"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        }
      },
      "required": [
        "success"
      ],
      "title": "ImageToSvgOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="list_models — List all available QuiverAI models.">
    ### Response

    ```json theme={null}
    {
      "$defs": {
        "ModelInfo": {
          "additionalProperties": false,
          "description": "A single available model row in ``list_models``.",
          "properties": {
            "id": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Id"
            },
            "name": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Name"
            },
            "description": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Description"
            },
            "created": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Created"
            },
            "owned_by": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Owned By"
            },
            "input_modalities": {
              "items": {
                "type": "string"
              },
              "title": "Input Modalities",
              "type": "array"
            },
            "output_modalities": {
              "items": {
                "type": "string"
              },
              "title": "Output Modalities",
              "type": "array"
            },
            "context_length": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Context Length"
            },
            "max_output_length": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Max Output Length"
            },
            "supported_operations": {
              "items": {
                "type": "string"
              },
              "title": "Supported Operations",
              "type": "array"
            },
            "supported_sampling_parameters": {
              "items": {
                "type": "string"
              },
              "title": "Supported Sampling Parameters",
              "type": "array"
            }
          },
          "title": "ModelInfo",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "models": {
          "items": {
            "$ref": "#/$defs/ModelInfo"
          },
          "title": "Models",
          "type": "array"
        },
        "total_models": {
          "default": 0,
          "title": "Total Models",
          "type": "integer"
        },
        "raw": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Raw"
        }
      },
      "required": [
        "success"
      ],
      "title": "ListModelsOutput",
      "type": "object"
    }
    ```
  </Accordion>
</AccordionGroup>

## Limits & Quotas

* **Models**: `arrow-1.1` is the default; `arrow-1.1-max` offers higher
  fidelity for detailed images and supports more reference images.
* **Generation**: `n` of 1-16 outputs per request; `temperature` 0-2,
  `top_p` 0-1, `presence_penalty` -2 to 2, `max_output_tokens` up to
  65536\.
* **Vectorization**: decoded images cannot exceed 4096 x 4096 px;
  `target_size` accepts 128-4096 px.
* **Billing**: each request reports a `credits` debit; `usage` token
  fields are retained for compatibility and may be zeroed.
* **Error model**: non-2xx responses and timeouts are caught and
  returned as `success=False` + `error` rather than raising. Plan for
  retries on the agent side based on the error string.

## Related integrations

<CardGroup cols={3}>
  <Card title="Amazon Alexa" href="/integrations/tools/amazon-alexa" />

  <Card title="Browser Use" href="/integrations/tools/browser-use" />

  <Card title="ElevenLabs" href="/integrations/tools/elevenlabs" />
</CardGroup>

## Links

* [Quiver](https://quiver.ai)
