One function. Pass in a URL, PDF, image, audio, or text. Define the shape you want. Get clean data back — every time.
Get Started →npm install structure1import structure from 'structure'23const orwell = await structure({4 input: 'It was a bright cold day in' +5 ' April, and the clocks were' +6 ' striking thirteen. Winston' +7 ' Smith slipped quickly' +8 ' through the glass doors of' +9 ' Victory Mansions.',10 output: {11 month: 'string',12 hour: 'number',13 character: 'string',14 building: 'string',15 weather_pleasant: 'boolean',16 clocks_normal: 'boolean'17 }18})
“About 1 in every 5 JSON outputs comes out broken.”
— r/LLMDevs“I felt like I was spending more time fighting my tools than getting actual work done.”
— u/PanicIntelligent1204“Constantly babysitting prompts and parsers is a nightmare.”
— r/automation“So much time is wasted on all the middleware crap.”
— u/No-Consequence-1779A URL, file, buffer, or raw text. The input type is detected automatically.
Pass a schema object, a Zod type, or a format string like 'markdown'. You control the shape.
Receive typed, validated data that matches your schema. Consistent output, every call.
Any-to-any conversion means agents can call Structure to normalize messy inputs into a schema, convert between internal formats, or extract typed fields mid-pipeline — without custom parsing code.
Your data is processed and immediately discarded. Nothing is stored.
We do not log your inputs, outputs, or schemas. Ever.
Data exists only for the duration of the API call. Gone the moment we respond.
Your data is never used to train models or improve our systems.
We process your data to complete the conversion. That's it. We don't store it, log it, sell it, or train on it. What you send stays yours — and stays nowhere.
25 free credits to start. No credit card required.
Credits never expire