Machine-readable companion: /docs-for-robots

Arc/docs

Getting Started

Quickstart

The fastest way to get Arc in the loop is to swap the base URL, use an Arc key, and optionally tag traffic with a route.

Three Steps

1. Create an Arc key

Get an Arc key from the dashboard. Arc keys authenticate the caller to your workspace.

2. Keep provider keys in Arc

Store upstream provider keys in the dashboard so Arc can forward requests on your behalf.

3. Point your client at Arc

Use the Arc base URL and optionally pass X-Arc-Route to bind route policy.

diff
- https://api.openai.com/v1
+ https://api-arc.cornerstone.sh/v1

- api_key="sk-..."
+ api_key="arc_live_..."

Examples

curl
curl https://api-arc.cornerstone.sh/v1/chat/completions \
  -H "Authorization: Bearer arc_live_<your-key>" \
  -H "Content-Type: application/json" \
  -H "X-Arc-Route: customer-support" \
  -d '{
    "model": "gpt-4o-mini",
    "messages": [{ "role": "user", "content": "Hello" }]
  }'
python
from openai import OpenAI

client = OpenAI(
    api_key="arc_live_<your-key>",
    base_url="https://api-arc.cornerstone.sh/v1",
)

resp = client.chat.completions.create(
    model="gpt-4o-mini",
    extra_headers={"X-Arc-Route": "customer-support"},
    messages=[{"role": "user", "content": "Hello"}],
)
typescript
import OpenAI from "openai";

const client = new OpenAI({
  apiKey: "arc_live_<your-key>",
  baseURL: "https://api-arc.cornerstone.sh/v1",
});

const resp = await client.chat.completions.create({
  model: "gpt-4o-mini",
  messages: [{ role: "user", content: "Hello" }],
}, {
  headers: { "X-Arc-Route": "customer-support" },
});

Next Steps

If you want the integration to stay almost identical to your existing code, stop here. If you want Arc to shape traffic, start with Routes and System Prompts.

Direct traffic still works

Requests without X-Arc-Route still proxy successfully. They are logged as Direct and skip route-level policy.