Quickstart
This guide takes you from zero to your first profile in the Noticia app. You need a Noticia organization and access to the web app at sms.noticia.ai.
1. Create an API key
Section titled “1. Create an API key”In the Noticia app, open Integrations -> API keys and create a key. Copy it once and store it in a secret manager: you will not be able to read it again. Keys look like ntca_xxxxxxxxxxxxxxxxxxxxxxxx and are scoped to a single organization.
2. Make your first call
Section titled “2. Make your first call”Upsert a customer profile with POST /v1/profiles. Replace ntca_REPLACE_ME with your key. The only required field is externalId, your own identifier for the customer (the primary key in your CRM).
curl https://api.sms.noticia.ai/v1/profiles \ -X POST \ -H "x-api-key: ntca_REPLACE_ME" \ -H "Content-Type: application/json" \ -d '{ "externalId": "crm-customer-4815", "phoneNumber": "+33612345678", "firstName": "Camille", "lastName": "Durand" }'const response = await fetch('https://api.sms.noticia.ai/v1/profiles', { method: 'POST', headers: { 'x-api-key': 'ntca_REPLACE_ME', 'Content-Type': 'application/json', }, body: JSON.stringify({ externalId: 'crm-customer-4815', phoneNumber: '+33612345678', firstName: 'Camille', lastName: 'Durand', }),});
const profile = await response.json();console.log(profile.id); // prof_...import requests
response = requests.post( "https://api.sms.noticia.ai/v1/profiles", headers={"x-api-key": "ntca_REPLACE_ME"}, json={ "externalId": "crm-customer-4815", "phoneNumber": "+33612345678", "firstName": "Camille", "lastName": "Durand", },)
profile = response.json()print(profile["id"]) # prof_...A 201 Created (or 200 OK when the profile already existed) returns the stored profile:
{ "id": "prof_cl9z3k1xb0000v8x9d2a1b3c4", "externalId": "crm-customer-4815", "phoneNumber": "+33612345678", "firstName": "Camille", "lastName": "Durand", "createdAt": "2026-05-28T10:00:00.000Z", "updatedAt": "2026-05-28T10:00:00.000Z"}3. Verify it
Section titled “3. Verify it”Read the profile back by its externalId (or its prof_ id):
curl https://api.sms.noticia.ai/v1/profiles/crm-customer-4815 \ -H "x-api-key: ntca_REPLACE_ME"const response = await fetch( 'https://api.sms.noticia.ai/v1/profiles/crm-customer-4815', { headers: { 'x-api-key': 'ntca_REPLACE_ME' } },);const profile = await response.json();import requests
profile = requests.get( "https://api.sms.noticia.ai/v1/profiles/crm-customer-4815", headers={"x-api-key": "ntca_REPLACE_ME"},).json()You get the same profile. Calling the create endpoint again with the same externalId updates it rather than creating a duplicate.
A profile becomes a subscriber (visible under Abonnés in the Noticia app) only once you capture SMS consent for it. That is the next step in Sync your CRM.
What next
Section titled “What next”- IDs and references explains
externalId, Noticia ids, and how to reference any resource. - Sync your CRM shows the full profile plus opt-in pattern.
- Authentication covers key rotation, environments and what to do if a key leaks.
- Explore the API is the interactive reference for every endpoint.
Explore the API