> ## Documentation Index
> Fetch the complete documentation index at: https://docs.shortext.ny-corp.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Démarrage rapide de l'API

> Créez une clé API, vérifiez-la avec GET /me et envoyez votre premier message avec l'API Shortext v2.0.

Ce démarrage rapide vous mène d'une intégration vide à un premier message WhatsApp envoyé par l'API. Il vous faut une entreprise Shortext avec au moins un [numéro WhatsApp connecté](https://docs.shortext.ny-corp.io/fr/channels/whatsapp.md).

**1. Créez une clé API**

Dans le tableau de bord, ouvrez **Développeur > API Keys** et créez une clé. Donnez-lui un nom (par exemple « Intégration CRM ») et choisissez ses permissions. Pour suivre ce guide, gardez **Envoyer des messages** cochée ; ajoutez **Gérer les intégrations** si votre intégration gère aussi des agents, des canaux ou des webhooks.

La clé n'est affichée **qu'une fois**. Stockez-la dans un gestionnaire de secrets ou une variable d'environnement, par exemple `SHORTEXT_API_KEY`.

> [!WARNING]
>
> Une clé API donne accès aux données de votre entreprise. Ne la mettez jamais dans une application mobile, une page web ou un dépôt public.

**2. Vérifiez la clé avec GET /me**

Chaque requête envoie la clé comme jeton bearer. `GET /me` indique l'entreprise et la clé que vous utilisez.

```bash cURL theme={null}
curl https://shortext.ny-corp.io/api/v2.0/me \
  -H "Authorization: Bearer $SHORTEXT_API_KEY" \
  -H "Accept: application/json"
```

```php PHP theme={null}
<?php
$response = (new GuzzleHttp\Client())->get('https://shortext.ny-corp.io/api/v2.0/me', [
    'headers' => [
        'Authorization' => 'Bearer ' . getenv('SHORTEXT_API_KEY'),
        'Accept'        => 'application/json',
    ],
]);

$result = json_decode((string) $response->getBody(), true);
if (!$result['success']) {
    throw new RuntimeException("Shortext error {$result['code']}: {$result['message']}");
}
echo $result['body']['company']['name'];
```

```javascript Node.js theme={null}
const response = await fetch("https://shortext.ny-corp.io/api/v2.0/me", {
  headers: {
    Authorization: `Bearer ${process.env.SHORTEXT_API_KEY}`,
    Accept: "application/json",
  },
});

const result = await response.json();
if (!result.success) {
  throw new Error(`Shortext error ${result.code}: ${result.message}`);
}
console.log(result.body.company.name);
```

```python Python theme={null}
import os
import requests

response = requests.get(
    "https://shortext.ny-corp.io/api/v2.0/me",
    headers={
        "Authorization": f"Bearer {os.environ['SHORTEXT_API_KEY']}",
        "Accept": "application/json",
    },
)

result = response.json()
if not result["success"]:
    raise RuntimeError(f"Shortext error {result['code']}: {result['message']}")
print(result["body"]["company"]["name"])
```

```json Réponse theme={null}
{
  "success": true,
  "message": "Request success.",
  "code": 1000,
  "body": {
    "company": { "id": "CMP-XXXXX", "name": "Acme" },
    "user": null,
    "token": {
      "name": "Intégration CRM",
      "abilities": ["permissions.send_messages", "permissions.view_messages"],
      "last_used_at": "2026-10-24T09:12:44.000000Z",
      "expires_at": null
    },
    "api_version": "v2.0"
  }
}
```

Le statut HTTP est toujours `200` : lisez `success` et `code` pour connaître le résultat. Voir [Introduction à l'API](https://docs.shortext.ny-corp.io/fr/api-reference/introduction.md).

**3. Trouvez votre canal et un modèle**

`GET /channels?type=whatsapp` liste vos numéros WhatsApp. L'`id` d'un canal est le `channel_id` depuis lequel vous envoyez les messages.

WhatsApp ne laisse une entreprise écrire en premier qu'avec un **modèle approuvé**. `GET /templates?channel_id={id}&status=APPROVED` liste les modèles que ce numéro peut envoyer, avec leurs variables.

**4. Envoyez votre premier message**

`POST /conversations` envoie un premier message à un contact et ouvre (ou poursuit) la conversation.

```bash cURL theme={null}
curl -X POST https://shortext.ny-corp.io/api/v2.0/conversations \
  -H "Authorization: Bearer $SHORTEXT_API_KEY" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "channel": "whatsapp",
    "channel_id": "532867649916076",
    "contact": {
      "identifier": "237699999999",
      "profile": { "firstname": "Brice", "lastname": "Mbarga", "preferred_language": "fr" }
    },
    "message": {
      "type": "template",
      "content": {
        "template_name": "order_update",
        "language": "fr",
        "body": { "name": "Brice", "order": "A-1042" }
      }
    }
  }'
```

```php PHP theme={null}
<?php
$response = (new GuzzleHttp\Client())->post('https://shortext.ny-corp.io/api/v2.0/conversations', [
    'headers' => [
        'Authorization' => 'Bearer ' . getenv('SHORTEXT_API_KEY'),
        'Accept'        => 'application/json',
    ],
    'json' => [
        'channel'    => 'whatsapp',
        'channel_id' => '532867649916076',
        'contact'    => [
            'identifier' => '237699999999',
            'profile'    => ['firstname' => 'Brice', 'lastname' => 'Mbarga', 'preferred_language' => 'fr'],
        ],
        'message'    => [
            'type'    => 'template',
            'content' => [
                'template_name' => 'order_update',
                'language'      => 'fr',
                'body'          => ['name' => 'Brice', 'order' => 'A-1042'],
            ],
        ],
    ],
]);

$result = json_decode((string) $response->getBody(), true);
if (!$result['success']) {
    throw new RuntimeException("Shortext error {$result['code']}: {$result['message']}");
}
$conversationId = $result['body']['conversation']['id'];
```

```javascript Node.js theme={null}
const response = await fetch("https://shortext.ny-corp.io/api/v2.0/conversations", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.SHORTEXT_API_KEY}`,
    Accept: "application/json",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    channel: "whatsapp",
    channel_id: "532867649916076",
    contact: {
      identifier: "237699999999",
      profile: { firstname: "Brice", lastname: "Mbarga", preferred_language: "fr" },
    },
    message: {
      type: "template",
      content: {
        template_name: "order_update",
        language: "fr",
        body: { name: "Brice", order: "A-1042" },
      },
    },
  }),
});

const result = await response.json();
if (!result.success) {
  throw new Error(`Shortext error ${result.code}: ${result.message}`);
}
const conversationId = result.body.conversation.id;
```

```python Python theme={null}
import os
import requests

response = requests.post(
    "https://shortext.ny-corp.io/api/v2.0/conversations",
    headers={
        "Authorization": f"Bearer {os.environ['SHORTEXT_API_KEY']}",
        "Accept": "application/json",
    },
    json={
        "channel": "whatsapp",
        "channel_id": "532867649916076",
        "contact": {
            "identifier": "237699999999",
            "profile": {"firstname": "Brice", "lastname": "Mbarga", "preferred_language": "fr"},
        },
        "message": {
            "type": "template",
            "content": {
                "template_name": "order_update",
                "language": "fr",
                "body": {"name": "Brice", "order": "A-1042"},
            },
        },
    },
)

result = response.json()
if not result["success"]:
    raise RuntimeError(f"Shortext error {result['code']}: {result['message']}")
conversation_id = result["body"]["conversation"]["id"]
```

La réponse contient la `conversation` et le `message` envoyé. Gardez `conversation.id` : il sert à [répondre](https://docs.shortext.ny-corp.io/fr/api-reference/guides/start-a-conversation.md), à [prendre la conversation en main](https://docs.shortext.ny-corp.io/fr/api-reference/guides/handover.md) ou à lire ses messages.

**5. Recevez les réponses**

Quand le contact répond, l'agent rattaché au canal répond automatiquement. Pour suivre la conversation depuis votre système, créez un [endpoint webhook](https://docs.shortext.ny-corp.io/fr/api-reference/webhooks.md) abonné à `message.*`.

## Étapes suivantes

> **[Authentification](https://docs.shortext.ny-corp.io/fr/api-reference/authentication.md)**
>
> Les clés API et leurs permissions.

> **[Format des messages](https://docs.shortext.ny-corp.io/fr/api-reference/message-format.md)**
>
> Texte, modèles, messages interactifs et médias.

> **[Webhooks](https://docs.shortext.ny-corp.io/fr/api-reference/webhooks.md)**
>
> Recevez des événements signés en temps réel.

> **[La règle des 24 heures](https://docs.shortext.ny-corp.io/fr/api-reference/guides/start-a-conversation.md)**
>
> Quand WhatsApp accepte du texte libre, et quand il exige un modèle.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.