# Instasent Platform API > Documentation of the Platform's APIs — the Platform is a CDP for mass marketing. Product API manages organizations, projects, audiences, campaigns, flows and analytics. Ingest API streams contacts and events into the Platform. Each API has a machine-readable dump linked from its section (llms-full.txt). Dashboard guides for end users live under /platform; the A2P Messaging API, Instasent's other product (self-service messaging for applications and AI agents), under /a2p-messaging-api. For anything beyond the APIs, start from the whole-site index at /llms.txt. ## Overview - [Overview](https://staging-instasent-docs-nextjs.oscar-284.workers.dev/platform-api/overview): Build on the Instasent Platform — a CDP for mass marketing — from your own code: the Product API and the Ingest API, authentication, OAuth for connected apps, and docs ready for AI agents. ## AI & MCP - [AI & MCP](https://staging-instasent-docs-nextjs.oscar-284.workers.dev/platform-api/further-reading/use-with-ai): These docs are published as machine-readable artifacts alongside the HTML. ## Getting Started - [Introduction](https://staging-instasent-docs-nextjs.oscar-284.workers.dev/platform-api/getting-started/introduction): Instasent has two products, and both have APIs: the Platform, a CDP for mass marketing, and the A2P Messaging API, self-service messaging for applications and AI agents. - [Create an account](https://staging-instasent-docs-nextjs.oscar-284.workers.dev/platform-api/getting-started/create-an-account): Sign up for Instasent with a magic link, complete the onboarding wizard, and issue your first API token — all from the dashboard, no passwords involved. - [Choose your API](https://staging-instasent-docs-nextjs.oscar-284.workers.dev/platform-api/getting-started/choose-your-api): Decide exactly which Instasent API fits the job in front of you: Product, Ingest, A2P Messaging (the Transactional API) or Legacy. - [Authentication](https://staging-instasent-docs-nextjs.oscar-284.workers.dev/platform-api/getting-started/authentication): Every Instasent API authenticates with credentials issued in the dashboard — but each API has its own flavour. ## Product API - [Guide](https://staging-instasent-docs-nextjs.oscar-284.workers.dev/platform-api/product-api/guide): The Product API is the CDP API — Instasent's Customer Data Platform: the unified audience with its events and segments, plus the organizations, projects, data sources, campaigns, automations and direct messaging around it, all under one token. - [Quickstart](https://staging-instasent-docs-nextjs.oscar-284.workers.dev/platform-api/product-api/quickstart): Find a contact in the unified audience, read their recent events and send a direct SMS — end to end in under five minutes. - **Authentication** - [API tokens](https://staging-instasent-docs-nextjs.oscar-284.workers.dev/platform-api/product-api/authentication): Authenticate the Product API with an organization- or project-scoped bearer token — the default method for your own server-side integrations. - [Connected apps (OAuth)](https://staging-instasent-docs-nextjs.oscar-284.workers.dev/platform-api/product-api/connected-apps-and-oauth): For software other Instasent customers will install: let each of them authorize your application against their own project with OAuth 2.1, and never handle their credentials. - **Project setup** - [Project readiness](https://staging-instasent-docs-nextjs.oscar-284.workers.dev/platform-api/product-api/project-setup/readiness): A single GET returns whether a project can operate, how far its setup has come and which steps are still open — recomputed on every call, with stable step keys and no cached completion flag. - [Channel readiness](https://staging-instasent-docs-nextjs.oscar-284.workers.dev/platform-api/product-api/project-setup/channel-readiness): The same readiness report narrowed to SMS or RCS: the channel's own setup steps, the countries a sender still ought to be registered for, and the countries it can actually send to right now. - [Attention](https://staging-instasent-docs-nextjs.oscar-284.workers.dev/platform-api/product-api/project-setup/attention): One GET returns everything currently wrong with a project and the organization behind it — an expired card, a connector that stopped syncing, a scheduled campaign the balance will not cover — worst first, with an absolute deadline wherever one exists. - [Recommendations](https://staging-instasent-docs-nextjs.oscar-284.workers.dev/platform-api/product-api/project-setup/recommendations): The third question an account asks, after what is left to configure and what has broken: what is worth doing next. - **Audience** - [Overview](https://staging-instasent-docs-nextjs.oscar-284.workers.dev/platform-api/product-api/audience/overview): The audience is the project's single, merged view of the people it knows: contacts assembled from every data source, the attributes and events they carry, the filters that select them, the segments that keep those filters, and the endpoints that count and retrieve them. - [Contacts and attributes](https://staging-instasent-docs-nextjs.oscar-284.workers.dev/platform-api/product-api/audience/contacts-and-attributes): How records arriving from several data sources become one audience contact, what the merging attributes decide, and how to read the project's live attribute catalogue: system versus custom attributes, data types, uniqueness and event-derived fields. - [Events](https://staging-instasent-docs-nextjs.oscar-284.workers.dev/platform-api/product-api/audience/events): What an audience event is, how the project's event catalogue and its parameter schemas are discovered live, how events attach to a contact, and how to tell an event type that is declared apart from one that actually arrives. - [Query filter](https://staging-instasent-docs-nextjs.oscar-284.workers.dev/platform-api/product-api/audience/query-filter): Search and segment the unified audience with a structured JSON filter. - [Event query filter](https://staging-instasent-docs-nextjs.oscar-284.workers.dev/platform-api/product-api/audience/event-query-filter): Search and aggregate audience events with a structured JSON filter. - [Probes](https://staging-instasent-docs-nextjs.oscar-284.workers.dev/platform-api/product-api/audience/probes): Two POST endpoints that measure what a project's audience actually contains before you filter it: attribute coverage (fill rate, distinct values, most frequent values, numeric and date ranges) and event volumes (which event types arrive, when the last one arrived, and the real values their parameters carry). - [Counting and retrieval](https://staging-instasent-docs-nextjs.oscar-284.workers.dev/platform-api/product-api/audience/counting-and-retrieval): Which endpoint answers which question about the audience: the exact count of a filter, a quick search, a cursor traverse of a large result set, a single contact by id or identifier, and what the subscription plan lets each of them return. - [Segments](https://staging-instasent-docs-nextjs.oscar-284.workers.dev/platform-api/product-api/audience/segments): A segment is a saved audience filter the project keeps by name: how to create one, read it back, understand its cached size, scroll its contacts, reference it from another filter, and audit where it is actually used. - **Campaigns** - [Overview](https://staging-instasent-docs-nextjs.oscar-284.workers.dev/platform-api/product-api/campaigns/overview): How the Product API models a campaign: the five endpoints it exposes, the draft-only contract behind all of them, and the statuses a campaign moves through. - [Creating a draft](https://staging-instasent-docs-nextjs.oscar-284.workers.dev/platform-api/product-api/campaigns/creating-a-draft): The POST contract for campaign drafts: what the smallest useful request looks like, the full request body field by field, the warnings the response carries, the limits and the error codes an integration has to handle. - [Audience targeting](https://staging-instasent-docs-nextjs.oscar-284.workers.dev/platform-api/product-api/campaigns/audience): Point a campaign draft at the right contacts: segment UIDs, inline audience filters, exclusions and the consent policy. - [Message content](https://staging-instasent-docs-nextjs.oscar-284.workers.dev/platform-api/product-api/campaigns/message): Write the copy a campaign draft carries: template variables and short links, the sender that speaks for it, SMS Unicode, RCS buttons, the SMS fallback for contacts RCS cannot reach, and how to declare languages to translate later. - [Dates and scheduling](https://staging-instasent-docs-nextjs.oscar-284.workers.dev/platform-api/product-api/campaigns/scheduling): The date on a campaign draft is a calendar anchor, not a send time — nothing is scheduled from the API. - [Reading campaigns](https://staging-instasent-docs-nextjs.oscar-284.workers.dev/platform-api/product-api/campaigns/reading-campaigns): The three read endpoints: one campaign by id, the project's filtered campaign list, and a digest of the whole project's campaign activity. - [Estimating and deleting](https://staging-instasent-docs-nextjs.oscar-284.workers.dev/platform-api/product-api/campaigns/estimating-and-deleting): The two operations that act on a campaign which already exists: pricing a draft and removing one. - **Flows** - [Overview](https://staging-instasent-docs-nextjs.oscar-284.workers.dev/platform-api/product-api/flows/overview): How the Product API models a flow: a branching automation made of a trigger event, steps and exits. - [Templates](https://staging-instasent-docs-nextjs.oscar-284.workers.dev/platform-api/product-api/flows/templates): GET /flow/templates returns the ready-made flows worth offering a project, scored against the events it really receives. - [Creating and editing drafts](https://staging-instasent-docs-nextjs.oscar-284.workers.dev/platform-api/product-api/flows/drafts): The draft contract of a flow: creating a flow with its first draft, reading the draft back, replacing it whole with an expectedDraftId precondition, and validating a graph without saving it. - [Triggers and exits](https://staging-instasent-docs-nextjs.oscar-284.workers.dev/platform-api/product-api/flows/triggers-and-exits): How a flow starts and stops, field by field: the trigger event and the one source it should listen to, Instasent's own events, the event filter, who may enter, the re-entry limits, the exits that take a contact out, and how goals are counted. - [Nodes](https://staging-instasent-docs-nextjs.oscar-284.workers.dev/platform-api/product-api/flows/nodes): The graph a flow draft carries: how nodes chain through nextStep and paths, why relations are bare ids, the node types the API accepts, how a send is written (sender, text, consent policy, translations, RCS fallback), and every branch. - [Delays and waits](https://staging-instasent-docs-nextjs.oscar-284.workers.dev/platform-api/product-api/flows/delays): Every way a flow waits: the fixed delay, the window delay in the contact's local time, the smart delay configured by name with a preset, an urgency and legal hours, and the two waits that pause until the contact acts or a message is delivered. - **Analytics** - [Overview](https://staging-instasent-docs-nextjs.oscar-284.workers.dev/platform-api/product-api/analytics/overview): Curated, read-only performance reports for your account, campaigns, automations, flows and transactional traffic. - [Statistics catalog](https://staging-instasent-docs-nextjs.oscar-284.workers.dev/platform-api/product-api/analytics/statistics): Every statistic you can request from the Analytics endpoints — delivery, engagement, conversion, cost and suppression — what each one means, which report families expose it, and which figures are approximate. - [Building queries](https://staging-instasent-docs-nextjs.oscar-284.workers.dev/platform-api/product-api/analytics/building-queries): Shape an Analytics request: choose a timeframe (predefined or custom), set the timezone and output currency, break results down with group_by, narrow them with bounded filters, and attach a previous-period comparison. - [Conversions & revenue](https://staging-instasent-docs-nextjs.oscar-284.workers.dev/platform-api/product-api/analytics/conversions): How the Analytics revenue statistics are computed: conversion scopes, how revenue tracking is configured, when a scope comes back null versus zero, and currency. - [Reading results](https://staging-instasent-docs-nextjs.oscar-284.workers.dev/platform-api/product-api/analytics/reading-results): The Analytics response shapes: values reports, time series, grouped series and compare reports, plus the freshness block, the comparison block, warnings and the error model. - [Flow reports](https://staging-instasent-docs-nextjs.oscar-284.workers.dev/platform-api/product-api/analytics/flows): Discover flows and their versions, then report on them: a flow's time series covers every version at once, or a single version when you scope it, which is how an A/B test is measured before it is promoted. - **API conventions** - [Rate limits](https://staging-instasent-docs-nextjs.oscar-284.workers.dev/platform-api/product-api/rate-limits): The Product API is rate-limited per organization and per endpoint class. - [Errors](https://staging-instasent-docs-nextjs.oscar-284.workers.dev/platform-api/product-api/errors): The Product API uses standard HTTP status codes. - [OpenAPI spec](https://staging-instasent-docs-nextjs.oscar-284.workers.dev/openapi/product.openapi.yaml): machine-readable spec for the Product API. - [Full docs dump](https://staging-instasent-docs-nextjs.oscar-284.workers.dev/platform-api/product-api/llms-full.txt): every page of the Product API concatenated for LLM context. ## Ingest API - [Guide](https://staging-instasent-docs-nextjs.oscar-284.workers.dev/platform-api/ingest-api/guide): The Ingest API imports contacts and events into an Instasent project so every downstream surface — audiences, campaigns, analytics — sees the same source of truth. - [Quickstart](https://staging-instasent-docs-nextjs.oscar-284.workers.dev/platform-api/ingest-api/quickstart): Load a contact and record an event in under five minutes. - [Authentication](https://staging-instasent-docs-nextjs.oscar-284.workers.dev/platform-api/ingest-api/authentication): The Ingest API authenticates each request with a bearer token scoped to a datasource. - [Rate limits](https://staging-instasent-docs-nextjs.oscar-284.workers.dev/platform-api/ingest-api/rate-limits): Ingest traffic is rate-limited per datasource and per endpoint. - [Errors](https://staging-instasent-docs-nextjs.oscar-284.workers.dev/platform-api/ingest-api/errors): The Ingest API uses standard HTTP status codes plus a partial-success body for batched writes. - [OpenAPI spec](https://staging-instasent-docs-nextjs.oscar-284.workers.dev/openapi/ingest.openapi.yaml): machine-readable spec for the Ingest API. - [Full docs dump](https://staging-instasent-docs-nextjs.oscar-284.workers.dev/platform-api/ingest-api/llms-full.txt): every page of the Ingest API concatenated for LLM context. ## Further reading - [Query Filter](https://staging-instasent-docs-nextjs.oscar-284.workers.dev/platform-api/further-reading/query-filter): Shared syntax for filtering, sorting, paginating and grouping results on the Product API's list endpoints. ## Country requirements as data (JSON) What a country requires before a sender can be used there — SMS and RCS, the paperwork, who files it, how long it takes, what happens without it — is published as data, not only as prose. **Fetch one country, not the index.** Replace the code with the destination's ISO 3166-1 alpha-2, lowercase: https://staging-instasent-docs-nextjs.oscar-284.workers.dev/data/country-requirements/es.json Every country in one document (large, ~250 KB): https://staging-instasent-docs-nextjs.oscar-284.workers.dev/data/country-requirements.json JSON Schema describing both: https://staging-instasent-docs-nextjs.oscar-284.workers.dev/data/country-requirements.schema.json No key, no authentication, cross-origin allowed. Every file carries `about`, `authority` and `policy` next to the country records, so it can be read on its own without this index.