Hopp til innhold
skribbskribb

Utviklere

Meldinger

Nettsted

Det besøkende har skrevet til deg: innsendte kontaktskjemaer og chat-samtaler. Du kan lese dem, si fra at du har tatt hånd om en av dem, svare i chat og slette. Uten abonnement svarer rutene 409 komplett-plan-required i stedet for en tom liste. Chat finnes bare på Komplett, så på Enkel er chat-lista tom uten at noe er galt. Hvert oppslag og hver sletting logges med nøkkelens id, som på abonnentlista.

Krever en publikasjon satt opp som nettsted. Meldinger krever i tillegg et abonnement, Enkel eller Komplett. Krever et abonnement på nettstedet. Kontaktskjemaet følger med både Enkel og Komplett, chat bare med Komplett.

Alle sidene

Kodeeksemplene kaller en skribb-funksjon du setter opp selv. Hent klienten for språket ditt og lim den inn én gang, så kan eksemplene under limes rett etter.

GET/v1/messages

messages:read

Hent kontaktskjemaer og chat-samtaler

Uten kind får du begge deler. Dette er et øyeblikksbilde og blar ikke: to lister i én body kan ikke dele én cursor, så du får de nyeste limit av hver. Skal du lese hele postkassa, eller spørre igjen med jevne mellomrom, bruk /messages/kontakt og /messages/chat, som har cursor.

?kind
kontakt eller chat. Utelat for begge.
?limit
1 til 200. Standard er 50.

Svaret · 200

kontaktContactMessage[]ikke alltid med
Utelatt helt når du ba om ?kind=chat.
chatChatThread[]ikke alltid med
Utelatt helt når du ba om ?kind=kontakt.
Svar
{
  "kontakt": [
    {
      "id": "msg_2Kd8",
      "name": "Kari Nordmann",
      "email": "kari@example.no",
      "body": "Har dere åpent på lørdager?",
      "status": "new",
      "replied_at": null,
      "created_at": "2026-07-26T09:12:00.000Z"
    }
  ],
  "chat": [
    {
      "id": "cnv_7Pq1",
      "visitor_name": "Ola",
      "status": "open",
      "created_at": "2026-07-26T10:02:00.000Z",
      "last_message_at": "2026-07-26T10:06:00.000Z",
      "messages": [
        {
          "id": "cm_1",
          "sender": "visitor",
          "body": "Hei!",
          "created_at": "2026-07-26T10:02:00.000Z"
        }
      ]
    }
  ]
}
# Kaller skribb-klienten: https://skribb.no/utviklere/autentisering#klient
skribb "/messages?kind=kontakt&limit=20"

GET/v1/messages/kontakt

messages:read

Hent kontaktskjemaer

Nyeste først, med cursor, så du kan lese helt til bunnen. Det kan du ikke på /messages, som bare gir deg toppen av lista.

?status
new, replied eller archived. Utelat for alle.
?limit
1 til 200. Standard er 50.
?cursor
next_cursor fra forrige side.

Svaret · 200

kontaktContactMessage[]
Denne sida.
has_moreboolean
Om det finnes en side til.
next_cursorstring | null
Send den som ?cursor= for neste side. null på siste side.
# Kaller skribb-klienten: https://skribb.no/utviklere/autentisering#klient
skribb "/messages/kontakt?status=paid&limit=20"

Hent ett kontaktskjema

For deg som har lagret en id og vil lese den ene meldingen igjen, uten å bla deg gjennom postkassa for å finne den.

Svaret · 200

kontaktContactMessage
Meldingen.
# Kaller skribb-klienten: https://skribb.no/utviklere/autentisering#klient
kontakt_id="msg_2Kd8"

skribb "/messages/kontakt/$kontakt_id"

PATCH/v1/messages/kontakt/{id}

messages:write

Flytt en melding til en annen status

Slik sier du fra at du har tatt hånd om en henvendelse, så den ikke ligger som ny i innboksen til skaperen også. replied kan du sette selv: har du svart den besøkende fra ditt eget system, er det sant, og alternativet er en innboks som er uenig med det som faktisk skjedde. replied_at settes samtidig.

Bodyen du sender

statusstringpåkrevd
new, replied eller archived.

Svaret · 200

kontaktContactMessage
Meldingen etterpå.
# Kaller skribb-klienten: https://skribb.no/utviklere/autentisering#klient
kontakt_id="msg_2Kd8"

skribb "/messages/kontakt/$kontakt_id" \
  -X PATCH \
  -H "content-type: application/json" \
  -d '{
    "status": "replied"
  }'

DELETE/v1/messages/kontakt/{id}

messages:write

Slett en melding for godt

Dette er ikke arkivering. Meldingen er borte, og det finnes ingen kopi noe annet sted. Bruk archived hvis du bare vil ha den ut av lista. Sletting logges med nøkkelens id.

Svaret · 200

deletedstring
Id-en til meldingen som ble slettet.
# Kaller skribb-klienten: https://skribb.no/utviklere/autentisering#klient
kontakt_id="msg_2Kd8"

skribb "/messages/kontakt/$kontakt_id" \
  -X DELETE

GET/v1/messages/chat

messages:read

Hent chat-samtaler

Sist aktive først, med cursor. Meldingene er IKKE med: en tråd kan ha 300 av dem, så en side med 50 samtaler ville dratt med seg femten tusen rader for deg som bare ville vite hvem som har skrevet. Hent den enkelte samtalen for tråden. updated_since sammenlikner med last_message_at, som bumpes hver gang noen skriver, uansett hvem.

?status
open eller closed. Utelat for begge.
?updated_since
ISO 8601. Bare samtaler med aktivitet etter dette.
?limit
1 til 200. Standard er 50.
?cursor
next_cursor fra forrige side.

Svaret · 200

chatChatThreadSummary[]
Denne sida, uten meldingene.
has_moreboolean
Om det finnes en side til.
next_cursorstring | null
Send den som ?cursor= for neste side. null på siste side.
# Kaller skribb-klienten: https://skribb.no/utviklere/autentisering#klient
skribb "/messages/chat?status=paid&updated_since=2026-08-01T06%3A00%3A00Z"

GET/v1/messages/chat/{id}

messages:read

Hent én chat-samtale med tråden

Her ligger meldingene. Lista lar dem med vilje være, så dette er kallet du gjør for de samtalene du faktisk bryr deg om.

Svaret · 200

chatChatThread
Samtalen med hele tråden.
# Kaller skribb-klienten: https://skribb.no/utviklere/autentisering#klient
chat_id="cnv_7Pq1"

skribb "/messages/chat/$chat_id"

POST/v1/messages/chat/{id}/svar

messages:write

Svar den besøkende

Svaret legger seg i tråden, og den besøkende ser det neste gang widgeten spør. Det er hele kanalen: tråden som ligger her, er samtalen, for begge parter. Derfor kan denne ruta svare, mens et svar på et kontaktskjema ikke kan. Det går ut som e-post, og hvilken adresse den besøkende svarer tilbake til, er ikke et valg en nøkkel skal ta. Har du svart på et skjema fra ditt eget system, sier du fra med PATCH og status replied. Sender du Idempotency-Key, sier vi ikke det samme to ganger til den besøkende om svaret ditt går tapt på veien.

Bodyen du sender

bodystringpåkrevd
Teksten. Opptil 2000 tegn, samme grense som widgeten og innboksen har.

Svaret · 201

messageChatMessage
Meldingen slik den ble lagret.
# Kaller skribb-klienten: https://skribb.no/utviklere/autentisering#klient
chat_id="cnv_7Pq1"

skribb "/messages/chat/$chat_id/svar" \
  -X POST \
  -H "content-type: application/json" \
  -d '{
    "body": "Takk for at du tok kontakt."
  }'

PATCH/v1/messages/chat/{id}

messages:write

Åpne eller lukke en samtale

closed betyr håndtert for nå, ikke ferdig for godt: skriver den besøkende igjen, åpner tråden seg selv. Det er widgetens egen regel, og den kan ikke overstyres herfra, så en integrasjon som spør etter status=open, vil se tråden komme tilbake hvis den besøkende ikke var ferdig. Svaret er samtalen uten meldingene: en statusendring er ingen grunn til å sende deg tre hundre meldinger du allerede har.

Bodyen du sender

statusstringpåkrevd
open eller closed.

Svaret · 200

chatChatThreadSummary
Samtalen etterpå, uten tråden.
# Kaller skribb-klienten: https://skribb.no/utviklere/autentisering#klient
chat_id="cnv_7Pq1"

skribb "/messages/chat/$chat_id" \
  -X PATCH \
  -H "content-type: application/json" \
  -d '{
    "status": "closed"
  }'

DELETE/v1/messages/chat/{id}

messages:write

Slett en samtale for godt

Hele tråden går med. Den besøkendes kopi også, for widgeten leser tråden herfra og har ingen egen. Dette kan ikke angres. Sletting logges med nøkkelens id.

Svaret · 200

deletedstring
Id-en til samtalen som ble slettet.
# Kaller skribb-klienten: https://skribb.no/utviklere/autentisering#klient
chat_id="cnv_7Pq1"

skribb "/messages/chat/$chat_id" \
  -X DELETE

Objekter

ContactMessage

Et innsendt kontaktskjema.

Felter

idstring
Meldingens id.
namestring | null
Navnet avsenderen oppga.
emailstring | null
E-posten avsenderen oppga. Den et svar går tilbake til.
bodystring
Det de skrev.
statusstring
new eller replied.
replied_atstring | null
ISO 8601 i UTC.
created_atstring
ISO 8601 i UTC.

ChatThreadSummary

En chat-samtale uten meldingene.

Felter

idstring
Samtalens id.
visitor_namestring | null
Navnet den besøkende oppga.
statusstring
open eller closed.
created_atstring
ISO 8601 i UTC.
last_message_atstring | null
Da det sist skjedde noe i tråden, uansett hvem som skrev. ISO 8601 i UTC. Dette er feltet updated_since sammenlikner med.

ChatThread

En chat-samtale med hele tråden.

Felter

idstring
Samtalens id.
visitor_namestring | null
Navnet den besøkende oppga.
statusstring
open eller closed.
created_atstring
ISO 8601 i UTC.
last_message_atstring | null
ISO 8601 i UTC.
messagesChatMessage[]
Hele tråden, eldste først. Den besøkendes tilgangspolett er ikke med: den er ikke en identifikator, men en nøkkel som ville latt den som holder den, lese og skrive som den besøkende.

ChatMessage

En enkelt melding i en chat-samtale.

Felter

idstring
Meldingens id.
senderstring
visitor eller creator.
bodystring
Teksten.
created_atstring
ISO 8601 i UTC.

← Alle rutene