canonical: https://jentic.com/apis/attentivemobile.com/attentivemobile

# Attentivemobile Attentive API V2

Attentive is an SMS and email marketing platform for direct-to-consumer brands. The V2 API focuses on user-attribute and bulk-ingestion flows, with endpoints for upserting a single user with attributes and subscription state, submitting bulk user attribute jobs, retrieving the status of those jobs, and validating the calling identity through /v2/me. It is intentionally lean - designed to feed Attentive from a CDP or warehouse rather than to manage campaigns or content.

## For AI agents

Push user attributes and subscription state into Attentive - single-user upserts and bulk ingestion jobs - and check job status from a warehouse or CDP.

## Scope

Does not handle campaign creation, message content, or analytics - use for user-attribute upserts and bulk ingestion only.

## Capabilities

- Upsert a single user's attributes and SMS or email subscription state via POST /v2/user/attributes
- Submit a bulk user-attributes job to ingest large attribute deltas through POST /v2/bulk/user/attributes
- Retrieve the status of a running or completed bulk job via GET /v2/bulk/job/{bulkJobId}
- Validate the calling token and tenant context using GET /v2/me
- Sync warehouse-derived audience traits into Attentive on a recurring schedule

## Use cases

### Warehouse to Attentive Identity Sync

Direct-to-consumer brands compute audience attributes (lifetime value bucket, last purchase channel, churn risk) in a warehouse and need them inside Attentive to drive segmentation. The V2 bulk endpoint lets a sync agent ship a daily job of attribute deltas through POST /v2/bulk/user/attributes and poll GET /v2/bulk/job/{bulkJobId} until it completes. Single-user updates flow through POST /v2/user/attributes for real-time changes.

Example prompt: Submit a bulk user-attributes job containing today's attribute deltas, then poll /v2/bulk/job/{bulkJobId} until status is COMPLETED

### Real-Time Subscription State Updates

When a customer opts in or out of SMS through a brand's own surface (account page, support flow), that change must reach Attentive immediately. POST /v2/user/attributes accepts the user's identifier and updated subscription state, so a single call keeps consent in sync. This avoids the eventual-consistency window of a daily batch and keeps consent records audit-ready.

Example prompt: POST /v2/user/attributes with the user's email, phone, and subscription={'sms':'OPT_IN'} after they confirm consent on the brand site

### Bulk Job Monitoring

Operations teams running daily Attentive ingestion need to alert on failed bulk jobs and retry safely. The /v2/bulk/job/{bulkJobId} endpoint returns the job status, error counts, and completion timestamp, so a monitoring agent can flag failures, summarise the row counts, and trigger a retry of the affected slice. This keeps SLA-tracked sync windows transparent.

Example prompt: Every 5 minutes, list outstanding bulk job ids, GET /v2/bulk/job/{bulkJobId} for each, and post a Slack alert if any returned status is FAILED

### Attentive Sync via Jentic

Through Jentic, an AI agent or warehouse pipeline calling Attentive searches by intent ('upsert subscriber attributes') and Jentic returns POST /v2/user/attributes or POST /v2/bulk/user/attributes with their schemas. Bearer tokens are held in your Jentic One instance, so the agent never sees the secret. This makes Attentive ingestion possible from any LLM or scheduled workflow without bespoke client code.

Example prompt: Use Jentic to search 'upsert Attentive user attributes', load POST /v2/user/attributes, and execute with the user's identifiers and trait map

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | /v2/me | Validate the calling identity and tenant |
| POST | /v2/user/attributes | Upsert a single user's attributes and subscription state |
| POST | /v2/bulk/user/attributes | Submit a bulk user-attributes ingestion job |
| GET | /v2/bulk/job/{bulkJobId} | Get the status of a bulk ingestion job |

## Key resources

- **User Properties** — Upsert a single user's attributes and subscription state
- **Bulk User Operations** — Submit bulk user-attribute ingestion jobs
- **Bulk Status** — Retrieve the status of submitted bulk jobs
- **Test Authentication** — Validate the calling token and tenant context

## Why Jentic

- **Setup:** Wiring Attentive by hand means handling its bearer or OAuth auth for user-attribute upserts and tracking bulk job ids yourself. Through Jentic you install once, import the Attentive API V2 from the API Directory, store the token once, and your agent calls it while Jentic injects the Authorization header.
- **Permission scoping:** Attentive's attribute upserts carry their target in the request body, while the bulk job id appears in the URL path (/v2/bulk/job/{bulkJobId}), so limit the agent to the operations it needs, such as upserting attributes or checking a bulk job. You choose the operations it may call, so bulk ingestion is not included unless you add it.
- **Credential handling:** Your Attentive bearer token or OAuth credential is stored once, encrypted, by your own Jentic One instance and injected as the Authorization header at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'upsert Attentive subscriber attributes', and Jentic returns the POST /v2/user/attributes operation with its schema so the agent posts the right shape on the first call.

## Related APIs

- **Klaviyo** — Email and SMS marketing platform for direct-to-consumer brands
- **Braze** — Customer engagement platform spanning push, email, SMS, and in-app
- **Segment** — Customer data platform commonly used to feed Attentive with traits

## FAQ

### What authentication does the Attentive API V2 use?

Attentive V2 supports HTTP bearer auth for static API tokens and an OAuth 2.0 flow for app-based integrations. Through Jentic, the bearer token or OAuth credentials are held in the encrypted vault, and the Authorization header is set at call time so the secret never enters the agent's context.

### Can I upsert a subscriber's attributes with the Attentive API?

Yes. POST /v2/user/attributes accepts the user's identifier alongside an attributes map and subscription state, and upserts the record in Attentive in a single call. Use this for real-time consent and trait changes.

### What are the rate limits for the Attentive API V2?

Attentive throttles per token. The spec does not encode the limit numerically - the safe pattern is to back off on HTTP 429 responses and prefer the bulk endpoint for large attribute updates rather than looping over /v2/user/attributes.

### How do I run a bulk attribute sync through Jentic?

Search Jentic for 'submit Attentive bulk attributes job', load POST /v2/bulk/user/attributes, and execute with the payload of attribute deltas. Then search 'get bulk job status', load GET /v2/bulk/job/{bulkJobId}, and poll until the job completes.

### Can I read campaigns or message data with the V2 API?

No. The V2 surface in this spec is focused on user attributes and bulk ingestion, plus a /v2/me identity check. Campaign content and message-level reporting sit on other Attentive surfaces.

### Can I limit what my agent is allowed to do with the Attentive API?

Yes. Because Jentic One is self-hosted, you decide which Attentive operations your agent may call and which credentials it may use, so you can grant just POST /v2/user/attributes for single-user upserts while withholding POST /v2/bulk/user/attributes. The attribute upserts carry their target in the request body and the bulk job id sits in the URL path of GET /v2/bulk/job/{bulkJobId}, so you scope access at the operation level rather than per record. Bulk ingestion is not available to the agent unless you add that operation to its allowed set.
