Everything Deckup does,
end to end.

Conversion is one feature. The rest of the product is the surface around it — multi-key billing, signed webhooks, audit log, dashboard, test mode. The stuff Aspose makes you fight for or build yourself.

app.deckup.io/usage
live mode
This period
4,128 /10K
Success rate
99.7%
Avg latency
6.1s p50
API keys2 live · 1 test
prod-fabric-editorsk_live_01HXR…••••8f2alivelast used 3m ago
prod-ingest-workersk_live_01HXR…••••c014liverotating in 22h
stagingsk_test_01HXR…••••a91dtestfree, no quota
Pep the pangolin juggling — Deckup handles the busy parts
Available at launch

Everything in v1, at a glance.

Six surfaces of one product. Click into the deep sections below for what each actually does, or skim the tag rows for the specifics.

PPTX → SVG conversion

One SVG per slide. Text-as-text, shapes-as-shapes, z-order preserved. Images embedded inline. ~80% fidelity target with everything that didn't render listed in the sidecar.

v120+ shape typestableschartsimages

Sync & async modes

Block the connection for ~5–10s on small decks. Hand off to a webhook for anything larger. Both are first-class — one endpoint, one query param toggle.

?mode=sync?mode=asyncidempotent

Webhooks that don't disappear

HMAC-SHA256 signed payloads. Retry schedule 30s → 5m → 30m → 2h → 12h → 24h. Dead-letter queue with one-click replay. Every attempt observable in the dashboard.

HMAC-SHA2566 retriesDLQ replay

Multi-key tenancy

Multiple keys per account. Live / test mode separation (sk_live_ vs sk_test_). Per-key rate-limit overrides. One-click rotation with 24-hour overlap.

test mode freerate-limit overrideskey rotation

Audit log built in

Every security, billing, and member event recorded per account. Filter by actor, event type, or time range. Expand for raw payloads. Export for SOC 2.

filter & export7d–365d retention

Live API playground

Upload a deck, pick sync or async, see the response, copy the curl. No code required to validate a conversion against your real slides before you wire it up.

no-code testingcurl export
Conversion

Clean structured SVG, not a flattened image.

Each slide becomes one self-contained SVG file with text as <text>, shapes as native primitives, and groups preserved. The coordinate system maps cleanly to standard slide dimensions so it drops straight into Fabric.js, Konva, or any custom canvas.

  • Full text formatting: fonts, sizes, colors, bold / italic / underline, alignment, mixed runs within paragraphs.
  • 20+ shape types: rectangles, ellipses, triangles, callouts, arrows, polygons.
  • Tables with cell merging, borders, backgrounds, text content.
  • Charts: bar, column, line, pie, doughnut, scatter, area — including stacked variants.
  • Element grouping preserved with original z-order — your editor can hit-test by layer.
slide_03.svg
<!-- slide_03.svg -->
<svg viewBox="0 0 1280 720">
  <g id="title">
    <text x="96" y="140">Q4 results</text>
  </g>
  <g id="callout" data-deckup-kind="callout">
    <rect x="96" y="240" width="480"
      height="180" rx="8" fill="#C2522D" />
    <text x="336" y="350"
      fill="#FAECE7">+18.4% YoY</text>
  </g>
  <g id="chart_revenue" data-deckup-kind="chart">
    /* 6 series, preserved structure */
  </g>
</svg>
Sidecar JSON

What rendered. What didn't. No surprises.

Every conversion ships a sidecar telling you per-slide title, speaker notes, dimensions, and the explicit list of elements that couldn't be rendered. SmartArt on slide 4? You'll know — and so will your customer, with a real explanation instead of a silently-broken slide.

  • Per-slide title and speaker notes — pre-extracted, no follow-up call needed.
  • Skipped elements listed with kind, slide index, and reason.
  • Aggregate processing metadata: wall time, render version, source dimensions.
  • Stable schema — versioned sidecar_version field so you can pin against breakage.
{ "id": "conv_01HXR3K4P7T1G2Y9", "status": "succeeded", "slides": [ { "index": 0, "title": "Q4 Business Review", "notes": "Open with revenue, then segment break…", "dimensions": { "w": 1280, "h": 720 }, "svg_url": "https://cdn.deckup.io/…/slide_01.svg" }, // … slides 2 through 23 … { "index": 3, "title": "Org chart", "skipped": [ { "kind": "smartart", "reason": "unsupported in v1" } ] } ], "metadata": { "wall_time_ms": 6412, "sidecar_version": "1.0", "render_version": "2026.05.13" } }
Webhook delivery

Async conversion that survives your downtime.

Hand off to a webhook URL and Deckup takes responsibility for getting the result to you. HMAC-signed, retried six times across 24 hours, dead-lettered if you stay down — and replayable in one click from the dashboard.

  • HMAC-SHA256 signature in Deckup-Signature header — industry-standard verification.
  • Retry schedule: 30s → 5m → 30m → 2h → 12h → 24h.
  • Full delivery history per conversion: headers, body, response code, latency.
  • Dead-letter queue with one-click replay — once your endpoint is back, fire the whole backlog.
app.deckup.io/webhooks/conv_01HXR3
Delivery attempts
200 OK attempt 1 +0s · 142ms
503 attempt 1 (prior) −0s · timeout
503 attempt 2 −30s · timeout
retrying attempt 3 scheduled −5m
POST /webhooks/conv_01HXR3
Deckup-Signature: t=1747736102,v1=8a2c…
Content-Type: application/json
Developer dashboard

Operational visibility, not just metrics.

A real working surface — not a marketing screenshot. Conversion history with filters and search. Per-conversion detail view with slide thumbnails, errors, webhook history, raw response. Audit log of every account action. Playground for testing without writing code.

  • Conversion list — filter by status, mode, key, date range.
  • Detail view — slide thumbnails, sidecar JSON, webhook timeline, raw request body.
  • Multi-user accounts — owner / admin / member roles, invite via email or shareable link with domain restriction.
  • Self-serve billing — Stripe checkout, invoices, plan change, opt-in overages.
app.deckup.io/conversions
ID Status Mode Wall
conv_01HXR3K4P7T1succeededsync6.4s
conv_01HXR3J9C2K6partialasync42.1s
conv_test_01HXR2…runningasync
conv_01HXR2X1A8D9failedsync1.2s
conv_01HXR2V0Z4M3succeededsync4.8s
Honest about scope

What v1 doesn't do — yet.

We list deferred features explicitly so you can decide whether Deckup fits today. Anything in the right column lands in the sidecar JSON with a kind and reason — it's never silently broken output.

Renders cleanly in v1

  • Text with full formatting, including mixed runs within a paragraph
  • 20+ shape types: rectangles, ellipses, triangles, callouts, arrows, polygons
  • Images: PNG, JPEG, GIF (embedded as base64)
  • Tables with cell merging, borders, backgrounds
  • Charts: bar, column, line, pie, doughnut, scatter, area + stacked variants
  • Lines, connectors, element grouping with z-order
  • Slide masters and theme inheritance

Skipped (listed in sidecar)

  • SmartArt — multi-month engineering project on its own
  • Slide transitions and on-slide animations
  • Embedded video and audio
  • 3D effects (extrusions, bevels, lighting)
  • OLE-embedded objects (Excel sheets, Visio diagrams)
  • Macros, VBA, ActiveX
  • Round-trip back to PPTX coming
Roadmap

What lands next — and what we won't build.

Priority shifts based on customer pull. If you're paying for Pro or Scale and you need something specific, your voice counts most. Everything below is grounded in real conversations, not speculation.

Now · v1.0 launch

Available today

  • PPTX → SVG, sync & async
  • JSON sidecar with skipped-element list
  • HMAC-signed webhooks with retry queue
  • Multi-key, test/live separation
  • Dashboard, playground, audit log
  • Self-serve billing (Stripe)
Later · months 6–12

Subject to customer demand

  • PPTX → JSON-AST output
  • Annual pricing plans
  • EU region (Frankfurt or Ireland)
  • Per-key permission scoping
  • Webhook event subscriptions
Won't build
AI slide generation (different product). In-browser editor (that's your job — we're infrastructure). Self-hosted version (the hosted model is what lets us offer this pricing). Microsoft 365 add-in (different audience).

Try it on your worst deck.

The fastest way to find out whether Deckup handles your slides is to run it on the ugliest deck in your library. 25 free conversions a month, no card. Test keys infinite. Upgrade later and we'll add a one-time +100 bonus credit on top.

supported20+ shape types · tables · charts
throughput30-slide deck in ~6s
webhooks30s · 5m · 30m · 2h · 12h · 24h
sla99.9% (Scale)