Meldingsstatuser og feilkoder
Følg hver SMS med D3s egne statuskoder. Her finner du beskrivelser av meldingsstatuser og feil på API-forespørsler.
Hent meldingsstatus
POST https://d3.no/sms/api/v1/status.phpSend username, password og enten messageId for én melding eller clientRef for alle mottakere i utsendingen. Bruk ett av oppslagsfeltene, ikke begge. Svaret inneholder bare meldinger sendt via API-et i ditt arbeidsområde.
curl --request POST 'https://d3.no/sms/api/v1/status.php' \
--data-urlencode 'username=DITT_API_BRUKERNAVN' \
--data-urlencode 'password=DIN_API_NOKKEL' \
--data-urlencode 'clientRef=paaminnelse-2026-001'{
"success": true,
"messages": [{
"messageId": "d3m_0123456789abcdef0123456789abcdef",
"clientRef": "paaminnelse-2026-001",
"recipient": "47XXXXXXXX",
"sender": "D3SMS",
"status": "delivered",
"statusCode": 40,
"statusText": "Levert",
"segments": 1,
"cost_ore": 79,
"createdAt": "2026-10-10T10:00:00Z",
"updatedAt": "2026-10-10T10:00:03Z"
}]
}Tidspunkter oppgis i UTC. cost_ore er det reserverte beløpet for meldingen; eventuell tilbakeføring fremgår av saldobevegelsene. Meldingsinnholdet returneres ikke i statusoppslaget. Etter personvernsletting kan recipient være null; meldings-ID, referanse, status og økonomi beholdes.
Meldingsstatuser
statusCode er D3s tallkode. status er et maskinlesbart navn, og statusText er en enkel norsk tekst som kan vises til brukeren.
| Kode | Status | Betydning |
|---|---|---|
| 10 | queuedI kø | Registrert i kø. Beløpet er reservert. |
| 20 | sendingSender | Sending til SMS-leverandøren pågår. |
| 30 | acceptedSendt | SMS-leverandøren har tatt imot meldingen. Levering er ennå ikke bekreftet. |
| 40 | deliveredLevert | Levering til mottakeren er bekreftet. |
| 50 | rejectedAvvist | Meldingen er avvist. Se meldingshistorikken før du vurderer en ny utsending. |
| 60 | undeliveredIkke levert | Leveringsrapporten sier at meldingen ikke ble levert. |
| 70 | unknownUavklart | Sendeforsøkets utfall er ukjent. Meldingen kan ha blitt sendt; ikke send den på nytt automatisk. |
Vis gjerne bare «Levert» til sluttbrukeren når status er 40. D3 beholder tekniske leverandøropplysninger internt. API-et returnerer D3-koder, ikke leverandørens statusnumre.
Oppdater status automatisk
Start oppslag tidligst fem sekunder etter sending. Spør høyst én gang hvert femte sekund per utsending, og øk ventetiden hvis status ikke endrer seg. Bruk clientRef for å hente alle mottakerne i én forespørsel.
Du kan avslutte polling for statuser 40, 50 og 60. Status 70 skal tas til manuell avklaring. Ved nettverksfeil og serverfeil skal klienten vente lenger før neste oppslag; HTTP 429 har en Retry-After-header. Denne versjonen tilbyr ikke webhooks til kundens system.
Feil på forespørselen
Et mislykket API-kall gir en HTTP-feilstatus og dette JSON-formatet. error.code er en D3-feilkode, atskilt fra meldingens statusCode.
{
"success": false,
"error": {
"code": 4021,
"name": "insufficient_balance",
"message": "Saldoen dekker ikke utsendingen."
}
}| Kode / HTTP | Navn | Hva du gjør |
|---|---|---|
| 4001 / 400 | invalid_request | Kontroller parametere, telefonnummer og tekst. |
| 4001 / 403 | https_required | Bruk HTTPS. |
| 4001 / 405 | method_not_allowed | Bruk POST. Tillatt metode oppgis i Allow-headeren. |
| 4001 / 413 | request_too_large | Forespørselskroppen kan være høyst 64 KiB. |
| 4001 / 415 | unsupported_media_type | Bruk application/json eller application/x-www-form-urlencoded. |
| 4011 / 401 | authentication_failed | Kontroller brukernavn og nøkkel. Nøkkelen kan være byttet eller deaktivert. |
| 4021 / 402 | insufficient_balance | Fyll på arbeidsområdets saldo. |
| 4031 / 403 | pro_required | API-et krever en aktiv, betalt Pro-periode. |
| 4032 / 403 | access_blocked | Kontroller arbeidsområdet og administratoren som API-nøkkelen tilhører. |
| 4033 / 403 | sender_unavailable | Bruk D3SMS eller et godkjent og aktivt eget avsendernavn. |
| 4041 / 404 | not_found | Ingen API-melding i arbeidsområdet samsvarer med referansen. |
| 4091 / 409 | reference_conflict | Referansen er brukt med annet innhold. Kontroller utsendingen; bare en ny tilsiktet melding skal få en ny referanse. |
| 4092 / 409 | sending_paused | Sending er satt på pause. Forsøk senere med samme referanse og innhold. |
| 4291 / 429 | rate_limited | Vent minst antallet sekunder i Retry-After. |
| 5001 / 500 | service_unavailable | Avklar om forespørselen er registrert med statusoppslag. Behold samme clientRef ved nytt forsøk. |
Ikke baser integrasjonen på den nøyaktige ordlyden i message. Bruk HTTP-status og kode. Uventede svar eller timeouts er ikke bevis på at en utsending mislyktes.
