5 operations. Guide: Manage contacts and consent, Let recipients unsubscribe. Requests and responses are JSON with snake_case fields; authenticate with Authorization: Bearer <api key>. The examples assume a client built as in SDKs and the command line.

Create a topic

POST /v1/topics

default_subscription is what contacts without a choice of their own receive; it is fixed at creation.

Operation createTopic, SDK minket.topics.create. Keys: full access. Live keys only: test keys get 403 test_mode_only.

Request body

FieldTypeRequiredDescription
namestringyes1 to 100 characters.
descriptionstring or nullnoAt most 500 characters.
default_subscriptionone of "opt_in", "opt_out"yes
public_namestring or nullnoAt most 100 characters.

Response

201 Created: Topic.

FieldTypeRequiredDescription
idstringyesA UUID.
object"topic"yes
project_idstringyesA UUID.
namestringyes
descriptionstring or nullyes
default_subscriptionone of "opt_in", "opt_out"yes
public_namestring or nullyes
created_atstring (date-time)yesAn ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z.

Errors: 400, 401, 403, 404, 409, 422, 429, 500, with the error body.

Examples

curl
curl -X POST https://api.minket.com/v1/topics \
  -H "Authorization: Bearer $MINKET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Product updates","default_subscription":"opt_out","public_name":"Product updates, monthly"}'

List topics

GET /v1/topics

Operation listTopics, SDK minket.topics.list. Keys: full access. Test keys work on test-mode data.

Response

200 Success: object.

FieldTypeRequiredDescription
object"list"yes
dataarray of Topicyes
data[].idstringyesA UUID.
data[].object"topic"yes
data[].project_idstringyesA UUID.
data[].namestringyes
data[].descriptionstring or nullyes
data[].default_subscriptionone of "opt_in", "opt_out"yes
data[].public_namestring or nullyes
data[].created_atstring (date-time)yesAn ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z.
has_morebooleanyes

Errors: 400, 401, 403, 404, 409, 422, 429, 500, with the error body.

Examples

curl
curl https://api.minket.com/v1/topics \
  -H "Authorization: Bearer $MINKET_API_KEY"

Get a topic

GET /v1/topics/{id}

Operation getTopic, SDK minket.topics.get. Keys: full access. Test keys work on test-mode data.

Parameters

NameInTypeRequiredDescription
idpathstringyesA UUID.

Response

200 Success: Topic.

FieldTypeRequiredDescription
idstringyesA UUID.
object"topic"yes
project_idstringyesA UUID.
namestringyes
descriptionstring or nullyes
default_subscriptionone of "opt_in", "opt_out"yes
public_namestring or nullyes
created_atstring (date-time)yesAn ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z.

Errors: 400, 401, 403, 404, 409, 422, 429, 500, with the error body.

Examples

curl
curl https://api.minket.com/v1/topics/019a2b3c-4d5e-7f60-8a9b-0c1d2e3f4a5b \
  -H "Authorization: Bearer $MINKET_API_KEY"

Update a topic

PATCH /v1/topics/{id}

Operation updateTopic, SDK minket.topics.update. Keys: full access. Live keys only: test keys get 403 test_mode_only.

Parameters

NameInTypeRequiredDescription
idpathstringyesA UUID.

Request body

FieldTypeRequiredDescription
namestringno1 to 100 characters.
descriptionstring or nullnoAt most 500 characters.
default_subscriptionone of "opt_in", "opt_out"no
public_namestring or nullnoAt most 100 characters.

Response

200 Success: Topic.

FieldTypeRequiredDescription
idstringyesA UUID.
object"topic"yes
project_idstringyesA UUID.
namestringyes
descriptionstring or nullyes
default_subscriptionone of "opt_in", "opt_out"yes
public_namestring or nullyes
created_atstring (date-time)yesAn ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z.

Errors: 400, 401, 403, 404, 409, 422, 429, 500, with the error body.

Examples

curl
curl -X PATCH https://api.minket.com/v1/topics/019a2b3c-4d5e-7f60-8a9b-0c1d2e3f4a5b \
  -H "Authorization: Bearer $MINKET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"description":"What changed this month."}'

Delete a topic

DELETE /v1/topics/{id}

Operation deleteTopic, SDK minket.topics.delete. Keys: full access. Live keys only: test keys get 403 test_mode_only.

Parameters

NameInTypeRequiredDescription
idpathstringyesA UUID.

Response

200 Success: object.

FieldTypeRequiredDescription
object"topic"yes
idstringyes
deletedtrueyes

Errors: 400, 401, 403, 404, 409, 422, 429, 500, with the error body.

Examples

curl
curl -X DELETE https://api.minket.com/v1/topics/019a2b3c-4d5e-7f60-8a9b-0c1d2e3f4a5b \
  -H "Authorization: Bearer $MINKET_API_KEY"

Updated