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

# FAQ

> Quick answers to common questions about documents, pipelines, the API, and billing.

If you don't find your question here, follow the link inside each answer to the page that goes deeper, or [contact support](mailto:support@ingestly.ai).

## Documents and processing

<AccordionGroup>
  <Accordion title="Which file formats does Ingestly support?">
    PDF, JPEG, PNG, TIFF, and HEIC. Multi-page TIFFs are supported. PDF is preferred for multi-page documents. See [supported formats](/files/introduction#supported-formats).
  </Accordion>

  <Accordion title="Can Ingestly handle multi-page documents?">
    Yes. Multi-page PDFs and multi-page TIFFs run through the pipeline as a single document. When the pipeline splits the document into chunks, Ingestly creates a [child run](/runs/introduction#document-chunking) for each chunk and the parent run waits in **Awaiting Children** until they all finish.
  </Accordion>

  <Accordion title="What happens when a step fails mid-run?">
    The run moves to **Failed** status and downstream nodes do not execute. Open the run detail to inspect the failed [step execution](/runs/introduction#step-executions) for the input it received and the error it produced.
  </Accordion>

  <Accordion title="How do I add human review to a pipeline?">
    Drop a [review](/nodes/review) node after the step you want to gate. Choose **Always** to pause every run, **LowConfidence** to pause when confidence drops below a threshold, or **Unverified Fields** to pause whenever the upstream extract node returns unverified fields. See the [human review guide](/guides/human-review).
  </Accordion>

  <Accordion title="How long are documents and run data kept?">
    Each pipeline has its own **retention** setting in days. After that window the document file and run history are removed. Configure retention on the pipeline detail page.
  </Accordion>
</AccordionGroup>

## Pipelines and runs

<AccordionGroup>
  <Accordion title="Why won't my pipeline accept documents?">
    The pipeline is probably not [activated](/pipelines/introduction#activation). A pipeline must be active and have valid configuration (at least one trigger, all nodes connected, validation passing) before it accepts documents.
  </Accordion>

  <Accordion title="Can I run different processing for different document types?">
    Yes. Branch upstream with a [classify](/nodes/classify) node (rules or AI similarity) and route each document type to its own subgraph. Classify is what picks the processing path; [split](/nodes/split) only finds where one upload's sub-documents start and end, so a bundle holding several document types goes split then classify, with classify choosing the path for each sub-document. See [conditional routing](/guides/conditional-routing).
  </Accordion>

  <Accordion title="What does Awaiting Children mean?">
    The parent run paused while [child runs](/runs/introduction#document-chunking) finish. This happens when Ingestly splits a multi-page document into chunks and processes each chunk independently. The parent resumes once every child run completes.
  </Accordion>

  <Accordion title="Can I re-run a document without re-uploading it?">
    Yes. Open the document on the pipeline detail page and re-run it. Each re-run creates a new run and consumes credits.
  </Accordion>

  <Accordion title="How do I get notified when something is going wrong?">
    Create an [alert rule](/admin/alert-rules) on a metric like **Failure Rate**, **Callback Failure Rate**, or **Credit Balance**. Pick **In-App** or **Email** as the channel.
  </Accordion>
</AccordionGroup>

## API and integration

<AccordionGroup>
  <Accordion title="How do I trigger a pipeline from my own code?">
    `POST` the document as `multipart/form-data` to `https://api.ingestly.ai/pipelines/{pipelineId}/trigger` with your API key in the `X-Api-Key` header. The pipeline must have a [webhook trigger](/nodes/webhook-trigger). See the [webhook trigger guide](/guides/webhook-trigger) for code samples.
  </Accordion>

  <Accordion title="How do I scope an API request to a specific workspace?">
    Add the `X-Workspace-Id` header. If you omit it, the request targets your default workspace. See [API overview](/api-reference/introduction#workspace-scoping).
  </Accordion>

  <Accordion title="What are the API rate limits?">
    Limits scale with your plan: 10 requests per minute on Free, 60 on Basic, 300 on Standard, 1,000 on Advanced. Every response includes `RateLimit-Limit`, `RateLimit-Remaining`, and `RateLimit-Reset` headers. See [rate limits](/api-reference/rate-limits).
  </Accordion>

  <Accordion title="How do I receive results in my own system?">
    Add a [callback output](/nodes/callback) node to your pipeline. When the run completes, Ingestly posts the results to the URL you configure. See [webhooks and callbacks](/guides/webhooks-and-callbacks).
  </Accordion>

  <Accordion title="How do I verify that a callback came from Ingestly?">
    Generate a [webhook signing key](/admin/webhook-signing-keys) and verify the HMAC-SHA256 signature on the `X-Ingestly-Signature` header against the raw request body. The same guide covers zero-downtime key rotation.
  </Accordion>

  <Accordion title="What happens when I rotate or revoke a signing key?">
    Rotation keeps both the old and new key active and signs callbacks with both, so your integration keeps working while you cut over. Revoking removes the signature header entirely; update your application to stop verifying signatures before you revoke.
  </Accordion>
</AccordionGroup>

## Billing and credits

<AccordionGroup>
  <Accordion title="How are credits calculated for a run?">
    Ingestly reserves credits upfront at run start, based on the most expensive branch your pipeline could take multiplied by the number of pages. The actual deduction matches that worst-case path, not just the steps that ended up running. See [credits](/admin/credits) for the per-node breakdown and worked examples.
  </Accordion>

  <Accordion title="Do I get credits back when a run fails?">
    No. Ingestly reserves credits at run start based on the most expensive branch your pipeline could take. That reservation isn't refunded if a later step fails, so the deduction matches the worst-case path regardless of how far the run actually got.
  </Accordion>

  <Accordion title="What does it cost to try Ingestly?">
    New organizations get **200 welcome credits** so you can build and test pipelines before subscribing.
  </Accordion>

  <Accordion title="How do I avoid running out of credits unexpectedly?">
    Create an [alert rule](/admin/alert-rules) on the **Credit Balance** metric with the **Less Than** operator so you get notified when your balance dips below a threshold.
  </Accordion>

  <Accordion title="Which steps cost credits?">
    Ingress triggers ([upload](/nodes/upload-trigger), [email](/nodes/email-trigger), and [webhook](/nodes/webhook-trigger)) each charge 1 credit per page. The internal [forward trigger](/nodes/forward-trigger) is free. Outputs ([callback](/nodes/callback), [email output](/nodes/email-output), [forward output](/nodes/forward-output)) are free, as are [review](/nodes/review), [transform](/nodes/transform), [merge](/nodes/merge), [HTTP action](/nodes/http-action), and non-AI [validation](/nodes/validation). Action cost comes from [parse](/nodes/parse), [extract](/nodes/extract), [classify](/nodes/classify) (both modes), AI [validation](/nodes/validation), and [filter](/nodes/filter) or [split](/nodes/split) when they read text to decide. See [credits](/admin/credits).
  </Accordion>
</AccordionGroup>

## Related

<CardGroup cols={2}>
  <Card title="Glossary" icon="book" href="/reference/glossary">
    Definitions for every term used in Ingestly
  </Card>

  <Card title="Credits" icon="coin" href="/admin/credits">
    Per-node credit costs and worked examples
  </Card>

  <Card title="API overview" icon="code" href="/api-reference/introduction">
    Authentication, headers, and the public endpoint
  </Card>

  <Card title="Quickstart" icon="rocket" href="/quickstart">
    Build your first pipeline in 5 minutes
  </Card>
</CardGroup>
