Reference
Full API reference
https://api.meisa.io/api/v1, auth via the X-API-Key header. For an exhaustive, paste-ready spec, see /llms-full.txt.Endpoints
/ping/scope: any keyVerify a key and see its scopes, environment, and product.
/contacts/upsert/scope: contacts:writeCreate or update a contact by email/external_id. custom_fields are merged.
body: email (req), external_id, first_name, last_name, display_name, source, custom_fields, tag_names
Details →/contacts/api/unsubscribed-emails/scope: contacts:readList addresses you must not email (unsubscribed/bounced/complained).
Details →/contacts/{id}/add_tag/scope: contacts:writeAdd a tag to a contact (created if absent).
body: tag_name OR tag_id
Details →/contacts/{id}/remove_tag/scope: contacts:writeRemove a tag from a contact.
body: tag_name OR tag_id
Details →/events/track/scope: events:trackRecord a custom event for a contact; can fire automations.
body: event_name (req), email|external_id (one req), properties
Details →/sequences/enroll/scope: sequences:enrollEnroll a contact in an active sequence by slug.
body: email (req), sequence_slug (req), metadata, trigger_source, override_unsubscribe
Details →/sequences/api/bulk-enroll/scope: sequences:enrollEnroll up to 500 emails in a sequence.
body: sequence_slug (req), emails (req, max 500), override_unsubscribe
Details →/sequences/api/list/scope: sequences:readList sequences and their slugs (active by default).
Details →/sequences/api/contact-enrollments/scope: sequences:readList a contact's sequence enrollments (by ?email=).
Details →/emails/trigger/scope: emails:triggerSend a transactional email via a dashboard-configured trigger.
body: trigger_key (req), to_email (req), variables, recipient, idempotency_key
Details →cURL: verify your key
curl "https://api.meisa.io/api/v1/ping/" -H "X-API-Key: meisa_live_your_key"Not in the API
Broadcasts/campaigns (dashboard or MCP only), creating templates/triggers/sequences/automations (dashboard only), and outbound webhooks are not part of the REST API. The tags:write scope exists but tag changes use contacts:write.