agentsclimarketplace

Apertis quickstart

Skill apertis-ai/apertis-skills/skills/apertis-quickstart

Agent skills for Apertis AI — use 500+ models in Claude Code, Cursor, Copilot, and 45+ AI tools

Install
npx -y skills add apertis-ai/apertis-skills --skill apertis-quickstart

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
  • 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Get from zero to your first verified Apertis API call. Guides obtaining a key, setting base_url, making a first chat completion, and confirming web search (:web) works — with step-by-step verification and troubleshooting for common first-call failures (401, wrong base_url, empty web_sources). Use when starting with Apertis, setting it up, making the first call, or when the first call is not working.

SKILL.md

8.4 KB, ~2.2k tokens by cl100k_base, as published. Nobody here has run it

Apertis Quickstart

Get from zero to your first verified Apertis call — including web search — in about two minutes. This is a guided, verify-as-you-go runbook: each step has an expected result and a fix branch, so you confirm it actually works instead of guessing.

Already calling Apertis and just need reference docs or model picks? Use the apertis-api skill (full reference) or apertis-model-picker (which model for which task). This skill is only for getting the first call working.

When to use this skill

  • "How do I get started with Apertis?" / "Set up Apertis."
  • "Make my first Apertis API call."
  • "My Apertis call returns 401 / isn't working / web_sources is empty."

What this skill does (and its limits)

When run by an AI coding agent, this skill makes two real API calls using the user's own key against https://api.apertis.ai (the Apertis gateway) to prove the setup works. Both calls are tiny (short prompt, low max_tokens) and cost a negligible amount of the user's quota.

Boundaries the agent must respect:

  • Use only the user's own API key. Never substitute another key.
  • Verification is read-only from the user's side (stateless chat completions). Do not write to any database, repo, or production system.
  • Never echo the full API key back to the user or into logs — mask it (sk-…last4).
  • The agent cannot sign up or fetch a key for the user. If there is no key, direct them to get one (Step 0).

Step 0 — Have an API key

Check for the key in the environment first:

echo "${APERTIS_API_KEY:+key present}"   # prints "key present" if set, nothing if not

Expected: a key beginning with sk- (pay-as-you-go) or sk-sub_ (subscription plan). If the key looks different → you likely copied a partial value; recreate it in the dashboard.

Step 1 — First chat completion

The base URL is https://api.apertis.ai/v1 and the API is OpenAI-compatible. Make one minimal call.

curl (works anywhere, no install):

curl -s https://api.apertis.ai/v1/chat/completions \
  -H "Authorization: Bearer ${APERTIS_API_KEY}" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-4o-mini",
    "max_tokens": 32,
    "messages": [{"role": "user", "content": "Reply with exactly: Apertis is working"}]
  }'

Python (pip install openai):

import os
from openai import OpenAI

client = OpenAI(base_url="https://api.apertis.ai/v1", api_key=os.environ["APERTIS_API_KEY"])

resp = client.chat.completions.create(
    model="gpt-4o-mini",
    max_tokens=32,
    messages=[{"role": "user", "content": "Reply with exactly: Apertis is working"}],
)
print(resp.choices[0].message.content)

TypeScript (npm install openai):

import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://api.apertis.ai/v1",
  apiKey: process.env.APERTIS_API_KEY,
});

const resp = await client.chat.completions.create({
  model: "gpt-4o-mini",
  max_tokens: 32,
  messages: [{ role: "user", content: "Reply with exactly: Apertis is working" }],
});
console.log(resp.choices[0].message.content);

Expected: HTTP 200 and a non-empty choices[0].message.content (the model's reply). If it fails → see Troubleshooting — most first-call failures are a 401 (key) or a wrong base URL.

Step 2 — Confirm web search (:web)

Add :web to any model id to enable real-time web search. The response carries a top-level web_sources array (on the response body, not inside choices[].message). Ask something only answerable with fresh information so search actually triggers.

curl (with a presence check on web_sources):

curl -s https://api.apertis.ai/v1/chat/completions \
  -H "Authorization: Bearer ${APERTIS_API_KEY}" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-4o-mini:web",
    "max_tokens": 256,
    "messages": [{"role": "user", "content": "What is one notable AI news item from this week? Cite a source."}]
  }' | python3 -c 'import sys,json; b=json.load(sys.stdin); s=b.get("web_sources") or []; print(f"web_sources: {len(s)} source(s)"); [print(" -", x.get("title"), x.get("url")) for x in s[:3]]'

Python:

resp = client.chat.completions.create(
    model="gpt-4o-mini:web",
    max_tokens=256,
    messages=[{"role": "user", "content": "What is one notable AI news item from this week? Cite a source."}],
)
sources = getattr(resp, "web_sources", None) or []   # top-level on the response
print(f"web_sources: {len(sources)} source(s)")
for s in sources[:3]:
    print(" -", s["title"], s["url"])

TypeScript:

const resp = await client.chat.completions.create({
  model: "gpt-4o-mini:web",
  max_tokens: 256,
  messages: [{ role: "user", content: "What is one notable AI news item from this week? Cite a source." }],
});
const sources = (resp as any).web_sources ?? [];   // top-level on the response
console.log(`web_sources: ${sources.length} source(s)`);
sources.slice(0, 3).forEach((s: any) => console.log(" -", s.title, s.url));

Expected: a non-empty web_sources array, each item with title, url, and snippet. If web_sources is empty or missing → see Troubleshooting. Note: :free models cannot use :web.

Step 3 — You're set up ✅

If Steps 1 and 2 both passed, Apertis is working end to end. To make the base URL permanent, set it once in your client config or keep APERTIS_API_KEY in your environment.

Next:


Troubleshooting

SymptomLikely causeFix
401 / "Invalid API Key"Key missing, truncated, or wrong env varRecheck APERTIS_API_KEY; recreate the key at https://apertis.ai?utm_source=apertis-skills&utm_medium=skill-doc&utm_campaign=ecosystem → API Keys. Confirm the header is Authorization: Bearer <key>.
Connection error / 404 on the URLWrong base URLMust be exactly https://api.apertis.ai/v1 (note api. and the /v1 suffix).
model_not_found / unknown modelModel id changed or not enabledRun curl -s https://api.apertis.ai/v1/models -H "Authorization: Bearer ${APERTIS_API_KEY}" to list available ids, or check https://apertis.ai/pricing?utm_source=apertis-skills&utm_medium=skill-doc&utm_campaign=ecosystem, then swap the model value.
web_sources empty or missing:web suffix dropped, a :free model used, or the prompt didn't need fresh infoConfirm the model id ends in :web; use a non-:free model; ask a question that requires current information.
429 / rate limitedPer-key request rate exceededWait briefly and retry; heavy usage may need a higher plan (https://apertis.ai/pricing?utm_source=apertis-skills&utm_medium=skill-doc&utm_campaign=ecosystem).
Insufficient quota / payment errorAccount has no remaining quotaTop up or choose a plan at https://apertis.ai?utm_source=apertis-skills&utm_medium=skill-doc&utm_campaign=ecosystem.

Resources

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.