# SDVM > Audit, fix and refine LLM training data. Python SDK and HTTP API documentation for the Synthetic Data Vending Machine. - [SDVM SDK](https://docs.sdvm.ai/introduction.md): Audit your training data, fix what is broken, and never make a sample worse. - [Quickstart](https://docs.sdvm.ai/quickstart.md): Install the SDK, get an API key, and fix your first samples in under five minutes. - [Core concepts](https://docs.sdvm.ai/core-concepts.md): Samples, the three clients, the audit, fix and reaudit blocks, and the never-worse contract. - [Text](https://docs.sdvm.ai/sample-types/text.md): TextSample: one piece of free text, its shape on the wire, and extra columns. - [Multiple choice](https://docs.sdvm.ai/sample-types/multiple-choice.md): MultipleChoiceCompletionSample and MultipleChoiceQuestionAnswerSample: a context, choices and an answer index, in two styles. - [Question and answer](https://docs.sdvm.ai/sample-types/question-answer.md): QuestionAnswerSample: a question and the answer a dataset publishes for it, with no choices to pick from. - [Conversation](https://docs.sdvm.ai/sample-types/conversation.md): ConversationSample: a chat transcript in the OpenAI messages shape, its roles and rules, and extra columns. - [sdvm-audit-1](https://docs.sdvm.ai/models/audit.md) - [sdvm-fix-1](https://docs.sdvm.ai/models/fix.md) - [Refine](https://docs.sdvm.ai/models/refine.md): sdvm-audit-1, then sdvm-fix-1, then sdvm-audit-1 again, in one call. - [Dataset conventions](https://docs.sdvm.ai/guides/conventions.md): Declare formatting that is a convention, not a defect, so the audit does not flag it. - [Denoising with votes](https://docs.sdvm.ai/guides/votes.md): Majority-vote the audit verdicts so a flaky flip does not sway the result. - [Async](https://docs.sdvm.ai/guides/async.md): AsyncAuditor, AsyncFixer and AsyncRefinery expose the same run method for asyncio code. - [Error handling](https://docs.sdvm.ai/guides/errors.md): The exception hierarchy and what each status code means. - [SDK reference](https://docs.sdvm.ai/sdk/api-reference.md): Every public class and function in the sdvm package. - [Examples](https://docs.sdvm.ai/sdk/examples.md): The example scripts that ship with the SDK, from a first text fix to a full audit and fix of HellaSwag and MMLU. - [HTTP API](https://docs.sdvm.ai/api-reference/introduction.md): Call sdvm-audit-1 and sdvm-fix-1 from any language. Base URL, authentication, the sample shape, and limits. - [Audit](https://docs.sdvm.ai/api-reference/audit/audit.md): Run ``sdvm-audit-1`` over an array of samples. Each sample comes back unchanged plus an ``audit`` block with one verdict per check: ``true`` is healthy, ``false`` is a defect, ``null`` means the check does not apply to that sample. - [Fix](https://docs.sdvm.ai/api-reference/fix/fix.md): Run ``sdvm-fix-1`` over an array of samples. Each returned sample carries a ``fix`` block ``{"changes": [...], "flagged": bool, "attempts": n}`` naming what changed; ``flagged`` is true only for what the fix could not resolve, ``attempts`` how many tries it got. A sample already carrying an ``audit`… - [Refine](https://docs.sdvm.ai/api-reference/refine/refine.md): Run ``sdvm-audit-1``, then ``sdvm-fix-1``, then ``sdvm-audit-1`` again, in one call: ``audit -> fix -> reaudit``. Only the samples the fix changed are re-audited. Each returned sample carries one block per stage: ``audit`` (the verdict before the fix, the one the fix was routed from — the same block… - [OpenAI-compatible endpoint](https://docs.sdvm.ai/api-reference/openai-compatible.md): Call audit, fix and refine through any OpenAI chat-completions client, with your sdvm_ key. - [Pricing and limits](https://docs.sdvm.ai/pricing.md): Token-based pricing per model role, the per-request minimum, and the rate and size limits. - [HTTP API](https://docs.sdvm.ai/api-reference/introduction.md): Call sdvm-audit-1 and sdvm-fix-1 from any language. Base URL, authentication, the sample shape, and limits. - [Fix](https://docs.sdvm.ai/api-reference/fix/fix.md): Run ``sdvm-fix-1`` over an array of samples. Each returned sample carries a ``fix`` block ``{"changes": [...], "flagged": bool, "attempts": n}`` naming what changed; ``flagged`` is true only for what the fix could not resolve, ``attempts`` how many tries it got. A sample already carrying an ``audit`… - [Audit](https://docs.sdvm.ai/api-reference/audit/audit.md): Run ``sdvm-audit-1`` over an array of samples. Each sample comes back unchanged plus an ``audit`` block with one verdict per check: ``true`` is healthy, ``false`` is a defect, ``null`` means the check does not apply to that sample. - [Refine](https://docs.sdvm.ai/api-reference/refine/refine.md): Run ``sdvm-audit-1``, then ``sdvm-fix-1``, then ``sdvm-audit-1`` again, in one call: ``audit -> fix -> reaudit``. Only the samples the fix changed are re-audited. Each returned sample carries one block per stage: ``audit`` (the verdict before the fix, the one the fix was routed from — the same block… - [Current rates and limits](https://docs.sdvm.ai/api-reference/pricing/current-rates-and-limits.md): The rates and limits every request is held to, live. ## OpenAPI Specs - [openapi](https://api.sdvm.ai/openapi.json) ## Optional - [Logbook](https://sdvm.ai/logbook)