Denne guiden viser den samme, kontrollerte SMS-flyten med cURL, PHP, Python, Node.js og C#. Hvert eksempel henter først et OAuth 2.0-token og oppretter deretter én SMS til et nummer du kontrollerer.
Eksemplene er kontrollert mot Intellipush OpenAPI 7. september 2026. Den interaktive API-dokumentasjonen er alltid den tekniske fasiten for endepunkter, felt, capabilities og svar. Et godkjent opprettelsessvar betyr at meldingen er registrert, ikke at den er levert til telefonen.
Før du starter
- Opprett en Intellipush-konto og hent API ID og API Secret på en trygg måte.
- Lagre hemmelighetene i servermiljøet, ikke i nettleserkode, mobilapp eller offentlig repository.
- Bruk ditt eget testnummer og lavt volum. Opprettelse kan bruke SMS credits.
- Sett en eksplisitt timeout og håndter 400-, 401-, 403-, 409-, 5xx- og nettverksfeil.
Den kanoniske tokenflyten er POST https://api.intellipush.com/restv2/token med HTTP Basic, innholdstype application/x-www-form-urlencoded og kroppen grant_type=client_credentials. Tokenet er et Bearer-token. Ikke legg API ID eller hemmelighet i JSON-kroppen for nye integrasjoner.
cURL
export INTELLIPUSH_API_ID="your_api_id"
export INTELLIPUSH_API_SECRET="your_api_secret"
TOKEN=$(curl --fail --silent --show-error \
--request POST https://api.intellipush.com/restv2/token \
--user "$INTELLIPUSH_API_ID:$INTELLIPUSH_API_SECRET" \
--header "Content-Type: application/x-www-form-urlencoded" \
--data-urlencode "grant_type=client_credentials" | jq -r '.access_token')
curl --fail --silent --show-error \
--request POST https://api.intellipush.com/restv2/sms/create \
--header "Authorization: Bearer $TOKEN" \
--header "Content-Type: application/json" \
--header "Idempotency-Key: first-test-001" \
--data '{"message":"API test from Intellipush","countrycode":"+47","phonenumber":"12345678"}'
PHP 8 med cURL
<?php
$apiId = getenv('INTELLIPUSH_API_ID');
$apiSecret = getenv('INTELLIPUSH_API_SECRET');
$token = curl_init('https://api.intellipush.com/restv2/token');
curl_setopt_array($token, [
CURLOPT_POST => true,
CURLOPT_USERPWD => $apiId . ':' . $apiSecret,
CURLOPT_HTTPHEADER => ['Content-Type: application/x-www-form-urlencoded'],
CURLOPT_POSTFIELDS => http_build_query(['grant_type' => 'client_credentials']),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 15,
]);
$tokenBody = curl_exec($token);
if ($tokenBody === false || curl_getinfo($token, CURLINFO_RESPONSE_CODE) !== 200) {
throw new RuntimeException('Token request failed');
}
$accessToken = json_decode($tokenBody, true, flags: JSON_THROW_ON_ERROR)['access_token'];
$sms = curl_init('https://api.intellipush.com/restv2/sms/create');
curl_setopt_array($sms, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $accessToken,
'Content-Type: application/json',
'Idempotency-Key: first-test-001',
],
CURLOPT_POSTFIELDS => json_encode([
'message' => 'API test from Intellipush',
'countrycode' => '+47',
'phonenumber' => '12345678',
], JSON_THROW_ON_ERROR),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 15,
]);
echo curl_exec($sms);
Python 3 – bare standardbiblioteket
import base64, json, os
from urllib.parse import urlencode
from urllib.request import Request, urlopen
credentials = f"{os.environ['INTELLIPUSH_API_ID']}:{os.environ['INTELLIPUSH_API_SECRET']}"
basic = base64.b64encode(credentials.encode()).decode()
token_request = Request(
'https://api.intellipush.com/restv2/token',
data=urlencode({'grant_type': 'client_credentials'}).encode(),
headers={'Authorization': f'Basic {basic}', 'Content-Type': 'application/x-www-form-urlencoded'},
method='POST',
)
with urlopen(token_request, timeout=15) as response:
access_token = json.load(response)['access_token']
payload = json.dumps({'message': 'API test from Intellipush', 'countrycode': '+47', 'phonenumber': '12345678'}).encode()
sms_request = Request(
'https://api.intellipush.com/restv2/sms/create', data=payload,
headers={'Authorization': f'Bearer {access_token}', 'Content-Type': 'application/json', 'Idempotency-Key': 'first-test-001'},
method='POST',
)
with urlopen(sms_request, timeout=15) as response:
print(json.load(response))
Node.js 18+
const apiId = process.env.INTELLIPUSH_API_ID;
const apiSecret = process.env.INTELLIPUSH_API_SECRET;
const basic = Buffer.from(apiId + ':' + apiSecret).toString('base64');
const tokenResponse = await fetch('https://api.intellipush.com/restv2/token', {
method: 'POST',
headers: { Authorization: 'Basic ' + basic, 'Content-Type': 'application/x-www-form-urlencoded' },
body: new URLSearchParams({ grant_type: 'client_credentials' }),
signal: AbortSignal.timeout(15000)
});
if (!tokenResponse.ok) throw new Error('Token request failed: ' + tokenResponse.status);
const { access_token } = await tokenResponse.json();
const smsResponse = await fetch('https://api.intellipush.com/restv2/sms/create', {
method: 'POST',
headers: { Authorization: 'Bearer ' + access_token, 'Content-Type': 'application/json', 'Idempotency-Key': 'first-test-001' },
body: JSON.stringify({ message: 'API test from Intellipush', countrycode: '+47', phonenumber: '12345678' }),
signal: AbortSignal.timeout(15000)
});
if (!smsResponse.ok) throw new Error('SMS request failed: ' + smsResponse.status);
console.log(await smsResponse.json());
C# med HttpClient
using System.Net.Http.Headers;
using System.Text;
using System.Text.Json;
using var client = new HttpClient { Timeout = TimeSpan.FromSeconds(15) };
var basic = Convert.ToBase64String(Encoding.UTF8.GetBytes(
Environment.GetEnvironmentVariable("INTELLIPUSH_API_ID") + ":" +
Environment.GetEnvironmentVariable("INTELLIPUSH_API_SECRET")));
using var tokenRequest = new HttpRequestMessage(HttpMethod.Post, "https://api.intellipush.com/restv2/token");
tokenRequest.Headers.Authorization = new AuthenticationHeaderValue("Basic", basic);
tokenRequest.Content = new FormUrlEncodedContent(new Dictionary<string, string> { ["grant_type"] = "client_credentials" });
using var tokenResponse = await client.SendAsync(tokenRequest);
tokenResponse.EnsureSuccessStatusCode();
var tokenJson = JsonDocument.Parse(await tokenResponse.Content.ReadAsStringAsync());
var accessToken = tokenJson.RootElement.GetProperty("access_token").GetString();
using var smsRequest = new HttpRequestMessage(HttpMethod.Post, "https://api.intellipush.com/restv2/sms/create");
smsRequest.Headers.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
smsRequest.Headers.Add("Idempotency-Key", "first-test-001");
smsRequest.Content = new StringContent(JsonSerializer.Serialize(new {
message = "API test from Intellipush", countrycode = "+47", phonenumber = "12345678"
}), Encoding.UTF8, "application/json");
using var smsResponse = await client.SendAsync(smsRequest);
smsResponse.EnsureSuccessStatusCode();
Hva du må gjøre før produksjon
Ikke kopier eksemplet direkte inn i en løkke for mange mottakere. Skill konfigurasjon fra kode, bruk en hemmelighetstjeneste, begrens tilgang og bygg inn eksplisitte volumgrenser. Kontroller /capabilities før valgfrie funksjoner brukes.
En stabil Idempotency-Key for samme logiske opprettelseskall beskytter mot doble meldinger ved et uklart nettverksutfall når funksjonen er tilgjengelig. Ikke bruk X-Request-ID som idempotensnøkkel; ta i stedet vare på den som teknisk referanse ved support.
Lagre ID-en fra opprettelsessvaret og bruk det dokumenterte statusendepunktet når arbeidsflyten trenger leveringsinformasjon. Les guiden til status og feilsøking før du bestemmer retry- og eskaleringsregler.
Åpne den interaktive API-dokumentasjonen, eller opprett en konto for en kontrollert test.
Relevant neste steg
Planlegger du en SMS-integrasjon?
Se hvordan REST API, OAuth 2.0 og en tydelig driftsmodell henger sammen.



