# Sintalk Public API

Multi-tenant SaaS messaging platform for marketing and notifications.

Version: 1.0.0

## Servers

```
https://dash-api.sintalk.com.br
```

## Security

### ApiKeyAuth

Tenant-scoped API key issued by POST /api-keys.

Type: apiKey
In: header
Name: X-API-Key

## Download OpenAPI description

[Sintalk Public API](https://sintalk.redocly.app/_bundle/openapi.yaml)

## auth

Authentication and authorization. Create and manage API keys scoped to your tenant. Plaintext keys are shown only once at creation time, so store them securely. All other endpoints require a valid API key.

### Create an API key

 - [POST /api-keys](https://sintalk.redocly.app/openapi/auth/createapikey.md): Create an API key for the admin's tenant. The plaintext key is returned once.

## billing

Billing and balance operations. Inspect your tenant's available balance, reserved balance, and overdraft limit. Admins may target other tenants using the `tenant_id` query parameter for support and reconciliation.

### Get tenant balance

 - [GET /billing/balance](https://sintalk.redocly.app/openapi/billing/getbillingbalance.md): Return the authenticated tenant's available balance, reserved balance, and overdraft limit. Admins can target another tenant with ?tenant_id=.

## campaigns

Bulk messaging campaigns. Create, list, and retrieve campaigns across SMS, RCS, and voice channels; launch dispatch asynchronously; and read aggregated delivery stats. Launching returns 202 Accepted — delivery runs in the background.

### Create a campaign

 - [POST /campaigns](https://sintalk.redocly.app/openapi/campaigns/createcampaign.md): Create a campaign. channel is one of sms, rcs, voice. follow_up_on_status is one of delivered, not_delivered, sent, error.

### List campaigns

 - [GET /campaigns](https://sintalk.redocly.app/openapi/campaigns/listcampaigns.md): Paginated list of campaigns.

### Get a campaign

 - [GET /campaigns/{id}](https://sintalk.redocly.app/openapi/campaigns/getcampaign.md): Retrieve a campaign by ID.

### Launch a campaign

 - [POST /campaigns/{id}/launch](https://sintalk.redocly.app/openapi/campaigns/launchcampaign.md): Start sending notifications for a campaign. Returns 202 Accepted. Dispatch always runs asynchronously.

### Get campaign stats

 - [GET /campaigns/{id}/stats](https://sintalk.redocly.app/openapi/campaigns/getcampaignstats.md): Aggregated notification status counts for a campaign.

## contacts

Individual contacts within a contact list. Create, read, update, and soft-delete contacts. `name` is required; `email` and `phone` are optional but recommended for multi-channel campaigns.

### Create a contact

 - [POST /contact-lists/{listId}/contacts](https://sintalk.redocly.app/openapi/contacts/createcontact.md): Create a contact in a list. name is required; email and phone are optional.

### List contacts

 - [GET /contact-lists/{listId}/contacts](https://sintalk.redocly.app/openapi/contacts/listcontacts.md): Paginated list of contacts in a list.

### Get a contact

 - [GET /contact-lists/{listId}/contacts/{id}](https://sintalk.redocly.app/openapi/contacts/getcontact.md): Retrieve a contact by ID.

### Update a contact

 - [PUT /contact-lists/{listId}/contacts/{id}](https://sintalk.redocly.app/openapi/contacts/updatecontact.md): Update a contact's name, email, and phone.

### Delete a contact

 - [DELETE /contact-lists/{listId}/contacts/{id}](https://sintalk.redocly.app/openapi/contacts/deletecontact.md): Soft-delete a contact.

## contact-lists

Contact list management. Create, list, retrieve, rename, and soft-delete the lists that group contacts together for targeting by campaigns and imports.

### Create a contact list

 - [POST /contact-lists](https://sintalk.redocly.app/openapi/contact-lists/createcontactlist.md): Create a new contact list.

### List contact lists

 - [GET /contact-lists](https://sintalk.redocly.app/openapi/contact-lists/listcontactlists.md): Paginated list of contact lists.

### Get a contact list

 - [GET /contact-lists/{id}](https://sintalk.redocly.app/openapi/contact-lists/getcontactlist.md): Retrieve a contact list by ID.

### Update a contact list

 - [PUT /contact-lists/{id}](https://sintalk.redocly.app/openapi/contact-lists/updatecontactlist.md): Update a contact list's name.

### Delete a contact list

 - [DELETE /contact-lists/{id}](https://sintalk.redocly.app/openapi/contact-lists/deletecontactlist.md): Soft-delete a contact list.

## contact-import

Bulk contact import jobs. Enqueue imports from a previously confirmed CSV file, then poll job status and progress. Each import is scoped to a single contact list.

### Start a contact import

 - [POST /contact-lists/{listId}/import](https://sintalk.redocly.app/openapi/contact-import/startcontactimport.md): Create and enqueue an import job from a previously confirmed CSV file.

### Get a contact import

 - [GET /contact-lists/{listId}/import/{id}](https://sintalk.redocly.app/openapi/contact-import/getcontactimport.md): Retrieve the status and progress of a contact import.

### List contact imports

 - [GET /contact-lists/{listId}/imports](https://sintalk.redocly.app/openapi/contact-import/listcontactimports.md): Paginated list of imports for a contact list.

## files

File upload workflow. Request a presigned S3 PUT URL, upload the file directly to S3, then confirm the upload before referencing the file in downstream jobs (imports, voice audio, etc.). Supported kinds are `csv` and `audio`.

### Get a presigned upload URL

 - [POST /files/upload-url](https://sintalk.redocly.app/openapi/files/createfileuploadurl.md): Generate a presigned S3 PUT URL and return a file_id. kind is one of csv, audio. content_type must match the allowlist for the kind (text/csv for csv; audio/mpeg, audio/mp4, audio/wav, audio/ogg for audio).

### Upload a file to S3

 - [PUT /](https://sintalk.redocly.app/openapi/files/uploadfiletos3.md): PUT a file to the presigned S3 URL returned by /files/upload-url.

### Confirm a file upload

 - [POST /files/confirm-upload](https://sintalk.redocly.app/openapi/files/confirmfileupload.md): Mark a presigned file as uploaded. Must be called before using file_id in downstream jobs.

### List files

 - [GET /files](https://sintalk.redocly.app/openapi/files/listfiles.md): Paginated list of the tenant's files, newest first.

## notifications

Ad-hoc (non-campaign) notifications. Send one-off messages to one or more recipients using a template on SMS, RCS, or voice, and query delivery history with filters on channel, status, and time range.

### Send notifications

 - [POST /send](https://sintalk.redocly.app/openapi/notifications/sendnotification.md): Send non-campaign notifications to one or more recipients using a template. channel is one of sms, rcs, voice.

### List notifications

 - [GET /notifications](https://sintalk.redocly.app/openapi/notifications/listnotifications.md): Filtered, paginated list of notifications.

## templates

Reusable message templates. Define the content and structure for outbound messages across channels — including RCS text, file, card, and carousel layouts with optional suggestion chips — for reuse by campaigns and the send endpoint.

### Create a template

 - [POST /templates](https://sintalk.redocly.app/openapi/templates/createtemplate.md): Create a template for one of the supported channels. channel is one of sms, rcs, voice — and the matching payload (sms, rcs, or voice) must be populated. For RCS, rcs.type is one of text, file, card, carousel, and exactly the matching field must be populated. suggestions are optional (max 11).

### List templates

 - [GET /templates](https://sintalk.redocly.app/openapi/templates/listtemplates.md): Paginated list of templates.

### Get a template

 - [GET /templates/{id}](https://sintalk.redocly.app/openapi/templates/gettemplate.md): Retrieve a template by ID.

