Dokumentation
Från noll till levererat SMS
Plingit är en svensk enkelriktad SMS-gateway. Bas-URL för API:t är https://plingit.se/v1. Endast svenska mobilnummer.
Kom igång — välj din väg
Två vägar till samma kärna. Bygger du med en AI-agent? Lägg till MCP:n och slipp koda anrop. Klassisk integration? REST:et är ett litet HTTP-API.
Bygger du med en AI-agent?
Be agenten i talspråk, lägg till som plugin, eller ett kommando — den får verktyg direkt. Noll API-kod.
Väg B · RESTKlassisk integration?
Ett litet HTTP-API. curl eller din favoritklient — se kodexempel i åtta språk längre ner.
Gratis-nivån oavsett väg: 10 SMS till ditt eget verifierade nummer. Sen 50 öre/segment.
Väg A · MCP — ge din agent händer
Differentiatorn: en modern MCP-server (npm: plingit-mcp) som ger din agent händer. Inga API-anrop att koda — agenten anropar verktyg direkt, och nyckeln persisteras lokalt efter första verify (hanteras aldrig per anrop). Tre sätt att lägga till den, enklast först:
1 · Be din agent (talspråk)
Enklast av allt — skriv till Claude Code eller Codex i klartext, så sköter agenten installationen åt dig:
Klistra in i din agent
”Installera MCP-servern plingit-mcp och messa mig när nattbygget är klart. Verifiera mitt nummer 0701234567 först om det behövs.”
Agenten kör claude mcp add plingit -- npx plingit-mcp, ber dig starta om Claude Code (MCP-verktyg laddas vid start), och sköter sedan verifiering och sändning själv.
2 · Plugin (ingen omstart)
Som Claude Code-plugin aktiveras verktygen direkt med /reload-plugins — ingen omstart behövs:
/plugin marketplace add goodsys2/plingit-plugin
/plugin install plingit-mcp@plingit
/reload-plugins3 · Manuellt / andra klienter
Claude Code — ett kommando (starta om efteråt):
claude mcp add --scope user plingit -- npx plingit-mcp--scope user gör den tillgänglig i alla dina projekt. Verktygen syns efter omstart av Claude Code.
Codex — i ~/.codex/config.toml:
[mcp_servers.plingit]
command = "npx"
args = ["plingit-mcp"]Andra MCP-klienter (Cursor, Windsurf m.fl.) — JSON:
{
"mcpServers": {
"plingit": { "command": "npx", "args": ["plingit-mcp"] }
}
}Verktyg: register, verify, notify, send_sms, get_balance, top_up, message_status.
Väg B · REST på tre steg
Har du redan en nyckel?
Hämta en under Inställningar i webb-GUI:t (eller återanvänd en från en tidigare verifiering), lägg den i miljövariabeln PLINGIT_KEY och hoppa direkt till sändningen längre ner. Verify-stegen behövs bara för att skaffa den allra första nyckeln — och steg 1 skickar en kod via SMS som en människa måste läsa, så en agent kan inte köra dem åt dig. Bygger du en integration: skaffa nyckeln en gång, lägg den bland dina secrets och låt koden läsa PLINGIT_KEY.
Tre steg från noll till levererat SMS till ditt eget nummer:
# 1. Begär en kod (du får ett SMS)
curl -X POST https://plingit.se/v1/verify/start \
-H 'content-type: application/json' \
-d '{"number":"0701234567"}'
# 2. Bekräfta koden → du får en API-nyckel (visas EN gång)
curl -X POST https://plingit.se/v1/verify/confirm \
-H 'content-type: application/json' \
-d '{"number":"0701234567","code":"482913"}'
# → { "api_key": "sk_live_…", "scope": "free", "free_sends_remaining": 10 }
# 3. Messa dig själv
curl -X POST https://plingit.se/v1/notify \
-H 'authorization: Bearer sk_live_…' \
-H 'content-type: application/json' \
-d '{"text":"Hej från Plingit!"}'POST /v1/messages tar ett nummer eller en lista och svarar alltid synkront för ett nummer (200) med id och status:
curl -X POST https://plingit.se/v1/messages \
-H 'authorization: Bearer sk_live_…' \
-H 'content-type: application/json' \
-d '{"to":"+46701234567","text":"Din order är skickad","from":"BUTIKEN"}'Svaret (200):
{
"id": "9b2c1f0a-…",
"to_e164": "+46701234567",
"sender": "BUTIKEN",
"status": "sent",
"segments": 1,
"cost_ore": 50,
"balance_ore": 9950,
"scope": "paid"
}Flera nummer (broadcast) → 202 accepted med en lista av ids (köas och pacas). Skicka Idempotency-Key så dubbelskickar en retry aldrig. Saknas saldo returneras status: needs_credit + en payment_url — som HTTP 200, inte ett fel.
Få ett larm när X händer
Det vanligaste agent-fallet: pinga din människa när något händer. /v1/notify är helt enkelt /v1/messages till dig själv — destinationen är alltid ditt eget verifierade nummer, så du behöver ingen to. Det är också det som ryms i gratis-nivån.
# t.ex. i ett cron-jobb eller en CI-pipeline
if ! ./build.sh; then
curl -s -X POST https://plingit.se/v1/notify \
-H "authorization: Bearer $PLINGIT_KEY" \
-H 'content-type: application/json' \
-d '{"text":"⚠️ Bygget föll på main"}'
fiKodexempel — skicka ett SMS i ditt språk
Samma anrop som ovan (POST /v1/messages), i de vanligaste språken. Byt sk_live_… mot din nyckel. (Bygger du med en agent? Hoppa det här — använd MCP:n ovan.)
curl -X POST https://plingit.se/v1/messages \
-H 'authorization: Bearer sk_live_…' \
-H 'content-type: application/json' \
-d '{"to":"+46701234567","text":"Din order är skickad"}'Autentisering & API-nycklar
Alla skarpa endpoints kräver Authorization: Bearer <nyckel>. Nyckeln har formatet sk_live_… (skarp). Behöver du testa utan att skicka något? Skapa en sk_test_…-nyckel under Inställningar i webb-GUI:t — den mockar all sändning (inget skickas, inget kostar, oändligt) och fungerar parallellt med din skarpa nyckel.
Prova gratis först
Verifiera ditt eget nummer och skicka direkt med /notify — de första 10 SMS:en till dig själv är gratis. Ingen betalning krävs för att komma igång.
Nyckeln visas en gång vid verifiering och lagras hashad hos oss. Tappar du den — verifiera om numret för en färsk nyckel (den gamla återkallas).
Avsändare & teckenkodning
from är en alfanumerisk avsändare, max 11 tecken (a–z, 0–9). Default är PLINGIT. Custom avsändare kräver betalt konto.
Bara GSM-7-tecken → 160 tecken/segment (153 i multipart). Innehåller texten åäö eller emoji → UCS-2, 70 tecken/segment. Gratis-SMS kapas till 1 segment.
Felkoder
Felsvar är strukturerade och självkorrigerbara:
{ "error": { "code": "needs_credit", "message": "…",
"hint": "…", "payment_url": "https://…" } }- invalid_to · invalid_from · text_empty · text_too_long
- not_verified · invalid_code · code_expired
- scope_forbidden · rate_limited · unauthorized
- needs_credit — returneras som HTTP 200 (mjukt stopp), inte ett undantag att fånga
API-referens
Maskinläsbart, för dig och din agent: