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

# Yungle developer docs

> Send files, build client collections and collect uploads from your own code, a terminal or an AI assistant, over one EU-hosted API.

export const apiPricePerGb = "€0.02";

export const apiFreeCalls = "50,000";

export const apiFreeUsage = "10 GB";

export const treeQuota = "1 TB";

export const treePrice = "€15";

export const leafQuota = "250 GB";

export const leafPrice = "€5";

export const freeDays = "7";

export const freeTransfer = "10 GB";

Yungle is a private, EU-hosted file transfer service. These docs show you how to drive it from your own code, from a terminal or CI job, or from an AI assistant.

<Columns cols={3}>
  <Card title="Build with the API" icon="code" href="/quickstart">
    Send your first transfer with curl, JavaScript or Python, and read its download receipt.
  </Card>

  <Card title="Send from a terminal or CI" icon="terminal" href="/cli">
    Install `yungle-cli` and run `yungle send ./dist`. Resumable, scriptable, with `--json` output.
  </Card>

  <Card title="Connect an AI assistant" icon="robot" href="/mcp-server">
    Add `https://yungle.co/mcp` to Claude, ChatGPT, Cursor or another MCP client and sign in. No key needed.
  </Card>
</Columns>

## What you can do

| You want to | Use | Guide |
| - | - | - |
| Send files to someone as a link that expires | a **transfer** | [Send a transfer](/guides/send-a-transfer) |
| Keep files for a client in folders, with invited guests | a **collection** | [Client collections](/guides/client-collections) |
| Let someone else upload files to you | an **upload request** | [Receive files](/guides/receive-files) |
| Know when a transfer is downloaded or a file arrives | a **webhook** | [Webhooks](/guides/webhooks) |
| Keep an address book in sync | **contacts** | [Contacts](/guides/contacts) |

Each of these words means one thing everywhere in these docs. [Concepts](/concepts) defines them.

## Free plan and paid plans

Every account can use the API, the CLI and the MCP server. What a workspace can reach depends on its plan.

| | Free | Leaf | Tree |
| - | - | - | - |
| Price | €0 | {leafPrice} a month | {treePrice} a month |
| Transfers and contacts | Yes | Yes | Yes |
| Webhooks | 1 endpoint, transfer events | 10 endpoints, all events | 10 endpoints, all events |
| Largest transfer | {freeTransfer} | {leafQuota} | {treeQuota} |
| Transfer lifetime | {freeDays} days | You choose | You choose |
| Collections and upload requests | No | Yes, {leafQuota} of storage | Yes, {treeQuota} of storage |

Uploads made through the API are metered apart from the plans, the same way on every tier: the first {apiFreeUsage} each month are free, then {apiPricePerGb} per GB from prepaid credit. Downloads are never metered. [Pricing](https://yungle.co/pricing) has the full plan details.

## The base URL

Every endpoint lives under one base URL, takes JSON and returns JSON:

```text theme={null}
https://yungle.co/api/v1
```

You authenticate with an API key sent as a bearer token. [Authentication](/authentication) covers keys and scopes. The full list of endpoints is in the [API reference](/api-reference), generated from the [OpenAPI 3.1 document](https://yungle.co/api/v1/openapi.json).

`/api/v1` changes only by adding things. New endpoints and new response fields can appear; existing fields keep their meaning, and no new required request field is added. A breaking change would get `/api/v2`, and v1 would keep working.

The CLI, the MCP server and the JavaScript and Python SDKs are open source (MIT) on [GitHub](https://github.com/heindewilde/yungle-clients).

## What we promise, and what we don't

Yungle is small and self-hosted in the EU. There is **no SLA and no uptime guarantee**: it runs on a single server with no failover, so a hardware fault or a bad deploy means downtime. It has happened, and it will happen again.

What you do get: your files are always encrypted, nothing is sent to a US cloud, and every byte is served from the EU under a data processing agreement. If your integration needs a contractual uptime guarantee, Yungle is not the right choice today, and it is better that you find that out here than during an incident.

Free usage is free: {apiFreeUsage} of API uploads each month, {apiFreeCalls} calls, and {freeTransfer} per transfer, with no card and no trial clock. Beyond the upload allowance, you pay {apiPricePerGb} per GB from credit you top up in advance.

Credit is prepaid on purpose. No invoice can arrive for traffic you did not expect, and a runaway script cannot spend money you have not put in. When the balance runs out, your next upload is refused before any bytes move, so the failure lands on you, where you can see it, and never on a recipient waiting for a file. The call allowance is an abuse guard rather than a price, set far above what a working integration uses.

<Note>
  The vault and end-to-end encrypted transfers are encrypted in the client with keys Yungle never receives, so the API can never read them. [What the API cannot do](/unsupported) explains where that boundary is.
</Note>

## Next steps

<Columns cols={2}>
  <Card title="Quickstart" icon="rocket" href="/quickstart">
    Send a transfer and read its receipt in about five minutes.
  </Card>

  <Card title="Concepts" icon="book-open" href="/concepts">
    Workspaces, transfers, collections and the rest, in one page.
  </Card>
</Columns>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.