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

# Embeddings and rerank

> POST /v1/embeddings and POST /v1/rerank, with the embedding model list.

`POST https://api.pre.dev/v1/embeddings` takes the OpenAI-compatible embeddings request and returns the embeddings response. `GET /v1/embeddings/models` lists embedding models with credit prices; it is free and not rate-limited.

<CodeGroup>
  ```bash curl theme={null}
  MODEL=$(curl -s https://api.pre.dev/v1/embeddings/models \
    -H "Authorization: Bearer $PREDEV_API_KEY" | jq -r '.data[0].id')

  curl --fail-with-body https://api.pre.dev/v1/embeddings \
    -H "Authorization: Bearer $PREDEV_API_KEY" \
    -H "Content-Type: application/json" \
    -d "{\"model\": \"$MODEL\", \"input\": [\"pre.dev builds software from a spec\", \"credits pay for model calls\"]}"
  ```

  ```typescript Node.js theme={null}
  import OpenAI from 'openai';

  const client = new OpenAI({ baseURL: 'https://api.pre.dev/v1', apiKey: process.env.PREDEV_API_KEY! });

  const { data: models } = await client.models.list(); // /v1/models also lists embedding models
  const embeddingModel = models.find((m: any) => m.architecture?.output_modalities?.includes('embeddings'))?.id;

  const result = await client.embeddings.create({
    model: embeddingModel!,
    input: ['pre.dev builds software from a spec', 'credits pay for model calls'],
  });
  console.log(result.data[0].embedding.length, result.usage);
  ```

  ```python Python theme={null}
  import os
  import requests
  from openai import OpenAI

  client = OpenAI(base_url="https://api.pre.dev/v1", api_key=os.environ["PREDEV_API_KEY"])

  catalog = requests.get(
      "https://api.pre.dev/v1/embeddings/models",
      headers={"Authorization": f"Bearer {os.environ['PREDEV_API_KEY']}"},
  ).json()["data"]

  result = client.embeddings.create(
      model=catalog[0]["id"],
      input=["pre.dev builds software from a spec", "credits pay for model calls"],
  )
  print(len(result.data[0].embedding), result.usage)
  ```
</CodeGroup>

The response is the standard embeddings response: `data[].embedding`, `model`, and `usage`. Credits are computed from `usage.cost` and reported in `x-predev-credits-charged`.

## Rerank

`POST /v1/rerank` ranks documents against a query. Send a `model`, a `query`, and `documents`; the response returns the documents ordered by relevance with a score for each.

```bash theme={null}
curl --fail-with-body https://api.pre.dev/v1/rerank \
  -H "Authorization: Bearer $PREDEV_API_KEY" \
  -H "Content-Type: application/json" \
  -d "{
    \"model\": \"$RERANK_MODEL\",
    \"query\": \"how are gateway calls billed\",
    \"documents\": [
      \"Credits are computed from the model's metered cost per call.\",
      \"Browser tasks have a 0.1-credit floor.\",
      \"Catalog reads are free.\"
    ]
  }"
```

Set `RERANK_MODEL` to a rerank-capable id from the catalog. Rerank calls are billed like any other inference call.
