# Nodium API > Nodium connects a business's own software to its customers on WhatsApp and email. OpenAPI: https://nodium.io/docs/api/openapi.json Base URL: https://nodium.io/api/v1 Auth: `Authorization: Bearer nod_…` — one key, one workspace. Responses: `{ "data": … }` on success, `{ "error": { "code", "message", "detail", "requestId" } }` on refusal. Guide: https://nodium.io/en/docs/api/guide Webhook events: message.received, message.sent, message.delivered, message.read, message.failed, conversation.opened, conversation.closed, conversation.needs_human, contact.opted_in, contact.opted_out, approval.requested, approval.decided, mission.closed, dossier.changed, timer.fired. ## API keys - `GET /api/v1/api-requests`: List recent API calls ## Channels - `GET /api/v1/inbox/channels`: List the channels of the workspace ## Contacts - `GET /api/v1/contacts`: List contacts - `POST /api/v1/contacts`: Create a contact - `GET /api/v1/contacts/{id}`: Get one contact - `PATCH /api/v1/contacts/{id}`: Update a contact - `GET /api/v1/contacts/{id}/notes`: List notes on a contact - `POST /api/v1/contacts/{id}/notes`: Add a note to a contact - `DELETE /api/v1/contacts/{id}/notes/{noteId}`: Delete a note - `GET /api/v1/contacts/attributes`: List the custom contact fields - `DELETE /api/v1/privacy/contacts/{id}`: Erase a person, for good ## Conversations - `GET /api/v1/inbox/categories`: List the labels of the inbox - `GET /api/v1/inbox/conversations`: List conversations - `POST /api/v1/inbox/conversations`: Write first to someone who has not written yet - `GET /api/v1/inbox/conversations/{id}`: Get one conversation - `POST /api/v1/inbox/conversations/{id}/ai`: Let the AI collaborator answer this thread, or stop it - `POST /api/v1/inbox/conversations/{id}/assign`: Hand a conversation to someone - `POST /api/v1/inbox/conversations/{id}/media`: Send a file in a conversation - `GET /api/v1/inbox/conversations/{id}/messages`: List the messages of a conversation - `POST /api/v1/inbox/conversations/{id}/messages`: Reply in a conversation - `POST /api/v1/inbox/conversations/{id}/needs-human`: Flag a conversation as needing a person - `POST /api/v1/inbox/conversations/{id}/read`: Mark a conversation as read - `POST /api/v1/inbox/conversations/{id}/status`: Change the state of a conversation - `POST /api/v1/inbox/conversations/{id}/template`: Send an approved template - `POST /api/v1/inbox/conversations/{id}/typing`: Show "typing…" to the customer - `GET /api/v1/inbox/members`: List the people who can take a conversation ## Messages - `GET /api/v1/inbox/messages/{id}/html`: Get the layout of a received email - `GET /api/v1/inbox/messages/{id}/media`: Download the file attached to a message ## Status - `GET /api/v1/health`: Is everything working - `GET /api/v1/phone-numbers`: List your WhatsApp numbers as Meta sees them - `GET /api/v1/phone-numbers/{id}`: Get one WhatsApp number - `GET /api/v1/usage`: What has been consumed ## Templates - `GET /api/v1/templates`: List message templates - `POST /api/v1/templates`: Draft a template - `GET /api/v1/templates/{id}`: Get one template - `PATCH /api/v1/templates/{id}`: Edit a draft template - `POST /api/v1/templates/{id}/refresh`: Ask Meta where a submitted template stands - `POST /api/v1/templates/{id}/submit`: Submit a template to Meta for approval ## Webhooks - `GET /api/v1/webhooks`: List your webhook subscriptions - `POST /api/v1/webhooks`: Subscribe to events - `DELETE /api/v1/webhooks/{id}`: Unsubscribe - `PATCH /api/v1/webhooks/{id}`: Change a subscription - `POST /api/v1/webhooks/{id}/rotate-secret`: Rotate the signing secret - `POST /api/v1/webhooks/{id}/test`: Send a test call - `GET /api/v1/webhooks/deliveries`: List deliveries - `POST /api/v1/webhooks/deliveries/{id}/redeliver`: Redeliver an event