Tempio Docs
Platforms

Reddit

Tempio connects Reddit Ads as accounts and raw requests. It holds the connection, lists the ad accounts the login can reach, and carries any request the Reddit Ads API accepts through the escape hatch. It reads no campaigns and no daily numbers from Reddit, so a raw read is how you see anything past the account itself, and a raw change is drafted and waits at the gate like every other change.

Connecting

A workspace owner or admin starts the connect from Connections. Tempio sends you to Reddit's consent screen, where you sign in with the Reddit account that has access to your advertiser business and approve Tempio's request.

Tempio asks for two scopes:

ScopeWhy Tempio asks for it
adsreadTo list your businesses and ad accounts, to check the connected account on every accounts check, and to send raw reads
adseditTo send a raw change once it has been approved. Nothing is sent with it before then

The request is for a permanent grant, which is what makes Reddit issue a refresh token. Tempio keeps the refresh token sealed in its token vault and uses it to renew the access token before the expiry Reddit gives it, without asking you to sign in again.

After consent you land on the account picker. It lists every ad account under every Reddit business the login can reach, with its currency, time zone and status. An account Reddit reports without a currency, or with a time zone Tempio cannot count days in, is listed with its box disabled and the reason under its name, because Tempio stores an account only with both. Pick the accounts to connect; each becomes its own connection.

What Tempio reads

The ad accounts. For each connected account Tempio stores its name, its id, its currency, its time zone and its status, and checks them again on every scheduled accounts check. That check is the whole sync for a Reddit connection: one read of the connected account, which also keeps the grant exercised. If the account stops being connectable, for example because Reddit no longer reports its time zone, the check fails with that reason on the connection and the stored account keeps its last good values.

Every Ads API call Tempio makes carries the connection's access token in the Authorization header and Tempio's own User-Agent. The sign-in calls, which renew and revoke the token, carry Tempio's app credential in its place. Tempio sets every header. A request never takes one from the caller.

Raw requests on Reddit

A raw request names the platform's own path, and Tempio adds the base. For Reddit the base is https://ads-api.reddit.com/api/v3, so the path /ad_accounts/{ad_account_id}/campaigns is sent to https://ads-api.reddit.com/api/v3/ad_accounts/{ad_account_id}/campaigns. A path that resolves anywhere else is refused before anything is sent.

On Reddit, any GET is a read and every other method is a change.

Raw requests start off. A workspace owner turns them on, and turns raw changes on separately, in Settings → Raw platform requests; the escape hatch page covers both switches and who can use them.

A read, end to end

An agent, over MCP or in the chat, asks for the campaigns on an ad account:

{
  "entity": "platform_request",
  "action": "get",
  "params": {
    "connectionId": "…",
    "method": "GET",
    "path": "/ad_accounts/a2_1234567/campaigns"
  }
}
  1. Tempio checks that you can view the connection, that raw requests are on, and that the connection is active rather than paused.
  2. It resolves the path under the Reddit base and classifies it: a GET, so a read.
  3. It sends the request with the connection's access token and the User-Agent in its headers. The token is kept current by the renewal described under Reconnecting.
  4. Reddit's answer comes back as the data of the response, exactly as Reddit wrote it. Money is in Reddit's units and ratios are Reddit's own; none of it enters Tempio's reports.
  5. An audit row records who asked, the method, the host, the path, the status and the size of the answer. The body is never written to it.

A change, end to end

A change goes through mutate with a sentence that says what it does. The example below shows the shape of a request, not a guaranteed Reddit endpoint: the path and body are sent to Reddit as written, so check both against Reddit's Ads API reference, because Tempio does not model this endpoint and cannot correct them for you.

{
  "entity": "platform_request",
  "action": "mutate",
  "params": {
    "connectionId": "…",
    "method": "PATCH",
    "path": "/campaigns/{campaign_id}",
    "body": { "data": { "configured_status": "PAUSED" } },
    "description": "Pause the spring test campaign while the landing page is fixed."
  }
}
  1. Tempio checks that you can draft on the connection and that raw changes are on, then records one change request with your sentence, the method and the path. Nothing is sent to Reddit.
  2. The draft waits for a person with approval rights on the connection. No approval rule can clear a raw change, and the chat agent cannot approve one. When your workspace uses approval chains or separation of duties, they apply to it as to any change.
  3. On approval, Tempio checks the switches and the connection again, then sends the request once. A raw change that reached Reddit is never retried.
  4. Reddit's answer is stored on the change request, and the applied change carries a warning that Tempio did not verify it: there is no modelled row to read back.
  5. The connection's accounts are read again, so a change that renamed or closed the account shows on the connection.

How a request can end

What happenedWhat Tempio answers
Reddit answered with a redirectA refusal. Tempio never follows a redirect, because it would carry your token to another address
Reddit did not answer within 30 secondsTempio stops the request. On a change, the change request fails and is not retried
Reddit answered 429A refusal saying Reddit is limiting how often Tempio can call it. On the scheduled accounts check, Tempio waits as long as Reddit's answer asks before trying again
Reddit answered 401A refusal saying Reddit no longer accepts the connection's sign-in, and the reconnect it needs
Reddit answered 403A refusal saying the connected login has no access to what the path names
Reddit answered 404A refusal saying Reddit found nothing at that address

What is not read

Campaigns, ad groups, ads, creatives and daily numbers. None of them is stored, so a Reddit connection adds nothing to Campaigns, Metrics or the account brief, and Tempio cannot draft a modelled change such as a budget or a status on Reddit. A raw request reaches all of it through Reddit's own API.

A raw request reaches whatever the connected login can reach on Reddit, not only the account its connection names.

Reconnecting

Tempio renews the access token when it has twenty minutes or less left. When Reddit refuses the renewal, because access was removed on Reddit's side or the grant ended, the connection moves to an error state with a reconnect action. The same happens when Reddit answers the accounts check with 401. Reconnecting runs the same consent screen; signing in with the same Reddit login returns its connections to active.