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

# How it works

> The resolution model, providers and tiers, credits, and synchronous vs asynchronous resolution.

## Resolution model

When you submit a shortener URL, Link Skipper opens it in an isolated server-side
environment, follows the redirect chain the shortener itself defines, and returns the final
destination URL. It never modifies the destination and never asks the visitor to interact
with an ad wall.

Results are cached: once a link has been resolved, subsequent requests for the same link
return the stored destination instantly.

## Providers and tiers

Each supported shortener belongs to a **provider**, and every provider has a **tier** that
reflects how expensive it is to resolve:

<CardGroup cols={2}>
  <Card title="Standard" icon="circle-check">
    Resolved directly. Fast and inexpensive. Costs **1 credit** per resolve.
  </Card>

  <Card title="Premium" icon="star">
    Harder targets that require extra processing to get through. Costs **more credits** per
    resolve. Best-effort and slower.
  </Card>
</CardGroup>

The `tier` and `resolve_cost` of every provider are returned by the providers endpoint, so
you always know the cost before you call.

## Credits

Resolving a link spends credits from your balance. The amount depends on the provider's
tier — standard links cost less than premium ones. A request is only charged when it
results in a resolved destination; unsupported links and errors are not charged.

If your balance is too low to cover a resolve, the request fails with an
`out_of_credits` error and nothing is charged. You can top up credits in the
[developer dashboard](https://linkskipper.app/developers/billing).

## Synchronous vs asynchronous

<Steps>
  <Step title="Cached links resolve synchronously">
    If the link has been resolved before, the destination is returned in the same response.
  </Step>

  <Step title="New links are queued">
    A link we have not seen is queued for background resolution and the response returns a
    job you can track.
  </Step>

  <Step title="Collect the result">
    Poll the job until it is done, or register a webhook to have the result delivered to your
    endpoint automatically.
  </Step>
</Steps>

## Scope and responsibility

Link Skipper only follows the redirect a shortener has already configured — it shows you the
same destination a human would reach by clicking through, without the ad wall. You are
responsible for ensuring you are entitled to access the destinations you resolve. See the
[Terms](https://linkskipper.app/terms) for details.
