Start free

Privacy Policy

Version 11Effective 20 September 2026

SocialPipe ("we") operates the SocialPipe API. Controller: SocialPipe. Reach us through the chat widget on every page of socialpipe.dev; it is the only contact route we operate and you do not need an account to use it. We have not appointed a data protection officer or an EU representative.

What we hold about customers

DataWhyLawful basisRetained
Account emailIdentify the account, send service noticesContractUntil erasure requested
API key hashesAuthenticate requestsContractUntil the key is revoked or erasure
Credit ledgerBill accurately and answer disputesLegal obligation (financial records)Account lifetime + 7 years
Usage records: endpoint, platform, credits, timestamp, and which interface the call came throughBilling and abuse detectionContract, legitimate interestIndefinitely
The parameters you sent and the response you receivedReading back your own past calls, and diagnosing a disputed responseContract, legitimate interestIndefinitely
Billing name, address, payment detailsTake paymentContract, legal obligationCard details held by Stripe and never by us; name and address kept with the financial record
Copyright notices receivedComply with the DMCALegal obligation7 years

Only a SHA-256 hash of each API key is stored, so a database disclosure does not yield working keys.

We do not write raw client IP addresses. Every API request carries a key, so rate limiting counts against the key rather than an address. One exception, from 2026-09-26: the dashboard reports its own browser errors to Sentry, and a report sent from your browser discloses your address to whoever receives it. We do not store it and Sentry is instructed not to, and no configuration undoes the connection itself.

We record which posts and accounts a customer looked up. Alongside the route and the credit count we store the identifier sent and the response returned. On most routes that identifier names a person or a specific post, so this table is also a record of who our customers research.

What we hold about people who are not customers

The API returns public post, profile, follower and comment records from the platforms in our API reference. Those records describe people who never signed up for anything. This is the most important section in this policy.

The API is a router: it asks the platform for a public record and returns that record unchanged. We do not select fields, rename them, hash them or drop them.

How much of other people a capability returns

Every capability carries one of three personal-data classes, stated on that capability's own page in the API reference. We publish the rule rather than a list, because the list is 329 rows long.

ClassWhat it meansCapabilities
no-peopleNo person in the response at all: a music track, a hashtag, a playback URL, an id converter23
single-subjectThe person in the response is the one you named, or the author of the one post you asked for97
bulk-peopleA page of accounts or commenters, none of whom is the subject of your request: followers, following, reposters, repliers, and any search or feed whose results carry a different author each209

A single bulk-people call can return dozens to hundreds of people, each with a handle, display name and profile image. Nothing is hashed, redacted or aggregated.

The rule reads the capability's own name, and where it cannot tell it assigns bulk-people, the most protective of the three. 38 capabilities are in that class for that reason rather than because we are confident they belong there.

The Art. 6(1)(f) balancing test for bulk retrieval

Returning one public profile and returning somebody's follower graph differ in kind, so the second is assessed separately. Adding a platform does not change this test.

Handles and display names in a reply thread are returned exactly as the platform published them. An earlier draft committed to hashing them; that was withdrawn before any comment data was processed under it.

If you appear in data we returned

What we never store

Video, audio and image files. Media addresses in a response point at the platform's own network; we return the address and never fetch the file.

Automated processing

No endpoint sends your data to a language model. Nothing we operate performs automated decision-making or profiling within the meaning of Art. 22 GDPR.

Your rights

Where GDPR or UK GDPR applies you may request access, rectification, erasure, restriction, portability, or object to processing based on legitimate interests. Ask through the chat widget.

What erasure does. Every API key is revoked. Within 30 days the account record, keys and usage records are destroyed and the payment-provider link is severed. Usage records include the stored parameters and responses described above.

What survives it. Credit ledger entries and invoices are kept as financial records under a legal obligation, so they cannot be deleted on request. They are pseudonymised: the account becomes a random subject identifier and the link to any key is cut, so what remains identifies a transaction rather than a person.

You may also complain to your supervisory authority, which in the EU or UK is the data protection authority where you live.

Security

Keys are hashed, never stored in plaintext. API keys and Authorization headers are redacted from application logs at the point of emission. Application logs are kept 7 days.

Error monitoring. A failed request sends a report to Sentry carrying the exception and line of code, the HTTP method and the route path, and not the query string naming the account or post, not the request or response body, not the headers, not the values held by the crashed code, and not the server's log lines. Each is a separate route by which the identifier could arrive, and each is switched off rather than filtered, because a handle has no pattern a filter could key on. An error report carries no account identifier.

From 2026-09-26 the dashboard reports its own errors too, and that half differs in one way: an API report is sent by our server, so the coarse location Sentry derives is a data centre, while a dashboard report is sent by your browser, so the same mechanism locates you. We configure the reporter not to record your address and never store it ourselves, and we are not going to claim that scrubbing a field unsees a connection. A dashboard report carries the error, the page, and the browser and version. Not form contents, not the query string of any API call, not your session token, and not what you were looking up.

Subprocessors

An addition is published here before it begins processing customer personal data, so you can object under Art. 28(2) GDPR first. To be notified, ask through the chat widget.

SubprocessorPurposeLocation
RailwayHosting, Postgres and Redis: accounts, keys, credit ledger, usage records, the stored parameters and responses, response cache, application logsUS West
SupabaseDashboard sign-in: account email and session tokens. Never extraction dataUS
CloudflareDNS: request metadata in transitGlobal edge
StripePayments and billing. We are the seller of record; Stripe is our processor. Card numbers go straight to Stripe and never reach usUS / global
SentryError monitoring as described above, and from 2026-09-26 the dashboard's browser errors. Kept 90 daysUS
CrispLive chat: whatever you type, your address as the source of an open connection, your browser and the page, and a cookie so a reply finds the same conversation. No account email or customer identifier reaches itEU (France)

All of them process within the EEA, the United States, or at a global edge under its own transfer framework. There are no other transfers.

Crisp receives what you decide to type. If you paste an API key, a customer's details or an identifier you looked up, it is in a third party's system and no filtering on our side sees it first. Redact it before you send it: describe the problem without the secret, and revoke a key from the dashboard rather than quoting it to us. The widget is anonymous: we do not pass the signed-in account's email to it, because that would hand a customer identifier to another system on every dashboard page rather than only when someone starts a conversation.

Changes

Material changes are published here with a new version and effective date, and notified to account holders before they take effect. New subprocessors are published before they begin processing.

VersionDateChange
112026-09-20Every email address is removed; the chat widget is now the only way to reach us. Access, erasure, objection and Art. 28(2) notice requests all run through it. Nothing about what we process, why, or how long we keep it has changed — only the channel. The warning about pasting secrets into chat now says to redact them, because the address it used to offer as the safer alternative no longer exists
102026-09-20Shortened. Every disclosure above is unchanged in substance; what came out was commentary about earlier versions of this document, which the log below already records. No processing, retention, basis or safeguard changed
92026-09-20The subprocessor list moves into this policy, and chat is switched on today, not 2026-10-04 as version 8 said. Same widget, same data, same anonymity: the date moves forward, so the notice period shortens from fourteen days to the same day. Recorded as a shortening rather than reissued quietly
82026-09-20Advance notice: a Crisp chat widget runs on the website and the dashboard from 2026-10-04. The first subprocessor here receiving content a visitor wrote rather than telemetry a machine emitted: the message, the visitor's address as the source of an open connection, and a cookie. Anonymous, and not passed an account email
72026-09-20Nine platforms are withdrawn and the surface goes from 765 capabilities to 329. Strictly less personal data is processed: the class counts fall to 23 no-people, 97 single-subject and 209 bulk-people, and the protective default falls from 65 to 38. The rule, the balancing test and every safeguard are unchanged, which is why this took effect on publication rather than on notice
62026-09-13A correction. No bulk route exposed through our AI-agent interface was inaccurate: one of the three tools reached a capability returning people in bulk. The tool was removed rather than the sentence rewritten, and a check now fails the build if any tool reaches such a capability again. Search over the REST API is unchanged. Separately, usage records now also store which interface a call came through
52026-09-12Advance notice: from 2026-09-26 the dashboard reports its own browser errors to Sentry. We never write raw client IP addresses keeps its place and gains its exception in the same breath: we do not record your address, and a report your browser sends still discloses it to the recipient
42026-09-12Sentry is added as a subprocessor, published before it begins processing. Security gains a paragraph on what an error report carries and what it does not: no query string, so no record there of which account or post a failing request concerned. Separately, the route table becomes generated, and the enumeration of six people-bearing routes is replaced by the three-class rule
32026-09-09TikTok is served alongside X. The balancing test is unchanged, because the processing operation is the same one on a second source. This section points at the API reference rather than naming platforms
22026-08-23The call store described in version 1 as built and switched off is now on, with indefinite retention. Two safeguards in the balancing test are withdrawn: transient retention, and keeping no record of which identifiers a customer requested. Usage-record retention goes from 90 days to indefinite. If you appear in data we returned is rewritten: we can now search for you. No external legal advice was taken before the change, contrary to what version 1 said we would do
12026-08-23Initial publication