---
title: "Create a scientific figure"
method: POST
path: "/api/v1/create_figure"
tags: ["general"]
---

# Create a scientific figure

`POST /api/v1/create_figure`

## Request

- Base URL: `https://scholarmuse.ai`
- URL: `https://scholarmuse.ai/api/v1/create_figure`
- Auth: HTTP bearer

Generate a publication-ready scientific figure (mechanism or pathway diagram, workflow, study design, graphical abstract, schematic) from a description. Returns an image URL, or a figure_id to fetch with get_figure if it is still rendering. Not for plots of numeric data — write plotting code for those.

Discipline pack: general. Cost: 100 credits per finished figure (paid accounts only).

## Request body

- object
  - `description` string, required: What the figure shows: the entities, their relationships and the order of events. Be specific and scientifically precise.
  - `kind` 'mechanism' | 'workflow' | 'graphical_abstract' | 'schematic' | 'poster_panel': Figure type. Default: schematic.
  - `style` 'nature' | 'cell' | 'minimal_line' | 'flat_color' | 'textbook': Visual style. Default: nature.
  - `labels` string[]: Exact text labels to appear in the figure.
  - `aspect_ratio` '16:9' | '4:3' | '1:1' | '3:4' | '9:16': Default 16:9 for graphical abstracts and workflows, otherwise 4:3.

## Response `200`

The tool result.

- ToolResult
  - `summary` string, required
  - `billing` CreditStatus
    - `creditsRemaining` integer, nullable, required: Spendable, unexpired balance at checkedAt; null if refresh failed. Credits reserved by pending figures are excluded.
    - `status` 'ok' | 'low' | 'empty' | 'unavailable', required
    - `lowBalanceThreshold` integer, required
    - `topUpUrl` string, uri, required
    - `pricingUrl` string, uri, required
    - `checkedAt` string, date-time, required
    - `notice` string
  - `records` Record[]
    - `id` string, required
    - `type` string, required
    - `source` string, required
    - `title` string
    - `url` string
    - `license` string
    - `attribution` string
    - `retrievedAt` string, date-time, required
    - `data` object, required
  - `partial` boolean
  - `failedSources` object[]
    - `source` string
    - `error` string
  - `files` object[]
    - `name` string
    - `url` string
    - `mimeType` string
  - `extra` object
  - `credits_used` number, required
  - `call_id` string, required

## Other responses

- `400`: The call failed and was not charged.
- `401`: The call failed and was not charged.
- `402`: The call failed and was not charged.
- `429`: The call failed and was not charged.
- `502`: The call failed and was not charged.

---

[API](https://skmtc.dev/scholarmuse/apis/scholarmuse-rest-api.md) · [All operations](https://skmtc.dev/scholarmuse/apis/scholarmuse-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/scholarmuse/apis/scholarmuse-rest-api/revisions/beafd92e4bfb?raw)
