> For the complete documentation index, see [llms.txt](https://help.recart.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.recart.com/developers/public-api/subscriber/retrieve-a-single-subscriber.md).

# Retrieve a single subscriber

One subscriber by internal id — timezone, current segments and, per selected channel, status, dates, acquiring source, country and the opt-in / opt-out history. Phone number, email and names are never returned. To find the id behind a phone number use GET /subscribers?phoneNumber=.

```json
{"openapi":"3.1.0","info":{"title":"Recart API","version":"2023-12"},"tags":[{"name":"Subscriber","description":"Subscribers"}],"servers":[{"url":"https://api.recart.com/app-integrations/2023-12","description":"Production"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-Recart-API-Key","description":"It can be obtained in Recart account after contacting Support"}},"schemas":{"Subscriber":{"type":"object","description":"One subscriber — no phone number, email or name. Channel data sits\nunder the channel key; only the channels selected with `channel`\nare present.\n","required":["type","attributes"],"properties":{"type":{"type":"string","enum":["subscribers"]},"attributes":{"type":"object","required":["id","segments","createdAt","updatedAt"],"properties":{"id":{"type":"string","description":"Internal ID of the subscriber"},"timezone":{"type":"string","description":"IANA timezone name assigned to the subscriber"},"segments":{"type":"array","description":"Segments the subscriber is a member of right now — no membership history","items":{"type":"object","required":["id","name","type"],"properties":{"id":{"type":"string","description":"ID of the segment"},"name":{"type":"string","description":"Name of the segment as shown in the dashboard"},"type":{"type":"string","description":"segment = dynamic, rule-based; list = manually managed","enum":["segment","list"]}}}},"createdAt":{"type":"string","format":"date-time","description":"When the subscriber record was created — the first time the subscriber was seen on any channel"},"updatedAt":{"type":"string","format":"date-time","description":"Last change to the subscriber record"},"sms":{"type":"object","description":"The subscriber's SMS channel","required":["status","subscriptionSource","optinHistory"],"properties":{"status":{"type":"string","description":"subscribed while the number receives SMS; unsubscribed after any opt-out or cleaning removal","enum":["subscribed","unsubscribed"]},"subscribedAt":{"type":"string","format":"date-time","description":"When the current SMS subscription started; reset by a re-subscribe"},"lastInteractionAt":{"type":"string","format":"date-time","description":"Last inbound event on the channel — the opt-in, a STOP or START keyword reply, or an import touching the record"},"subscriptionSource":{"$ref":"#/components/schemas/SubscriptionSource"},"country":{"type":"string","description":"Country code of the phone number from the carrier lookup"},"optinHistory":{"type":"array","description":"Every opt-in and opt-out event of the channel, oldest first","items":{"$ref":"#/components/schemas/Optin"}}}}}}}},"SubscriptionSource":{"type":"object","description":"Where a subscription or an opt-out came from. For a subscription or\nan optin event `type` is the acquiring source — an opt-in tool type\n(popup, landing-page, embedded-form, keyword) or a non-tool source\n(import, custom-integration, public-api, shopify_checkout, …). For an\noptout event it is the reason: keyword, ai, opt_out_link, manual\n(dashboard), public-api, or a cleaning reason (deactivated_number,\nknown_litigator, landline, reassigned). `id` and `name` are present\nwhen the source is an entity: the opt-in tool (its name) or the\nimport (its file name); name is an empty string when it could not\nbe resolved.\n","required":["type"],"properties":{"type":{"type":"string","description":"Source slug or opt-out reason"},"id":{"type":"string","description":"ID of the opt-in tool or import behind the source"},"name":{"type":"string","description":"Name of the opt-in tool, or file name of the import; empty when unresolved"}}},"Optin":{"type":"object","description":"One opt-in or opt-out event of a channel.","required":["type","createdAt"],"properties":{"type":{"type":"string","description":"optin = the subscriber joined the channel; optout = the subscriber left it","enum":["optin","optout"]},"createdAt":{"type":"string","format":"date-time","description":"When the event happened"},"source":{"$ref":"#/components/schemas/SubscriptionSource"},"sourceUrl":{"type":"string","description":"optin only — the page the opt-in happened on, query string included"},"integrationSlug":{"type":"string","description":"optin only — the integration that created the subscription"}}},"HttpErrorBody":{"type":"object","required":["errors"],"properties":{"errors":{"type":"array","items":{"type":"object","required":["id","code","title","detail"],"properties":{"id":{"type":"string"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"}}}}}}},"responses":{"HttpError":{"description":"HTTP Error response","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/HttpErrorBody"}}}}}},"paths":{"/subscribers/{id}":{"get":{"summary":"Retrieve a single subscriber","tags":["Subscriber"],"operationId":"getSubscriber","description":"One subscriber by internal id — timezone, current segments and, per\nselected channel, status, dates, acquiring source, country and the\nopt-in / opt-out history. Phone number, email and names are never\nreturned. To find the id behind a phone number use\nGET /subscribers?phoneNumber=.\n","parameters":[{"name":"id","in":"path","required":true,"description":"Internal ID of the subscriber","schema":{"type":"string"}},{"name":"channel","in":"query","description":"Channels to return; each selected channel is a key of the\nresource. Defaults to sms, the only channel served today.\n","schema":{"type":"array","items":{"type":"string","enum":["sms"]},"default":["sms"]}}],"responses":{"200":{"description":"Ok","content":{"application/vnd.api+json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Subscriber"}}}}}},"4XX":{"$ref":"#/components/responses/HttpError"},"5XX":{"$ref":"#/components/responses/HttpError"}}}}}}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://help.recart.com/developers/public-api/subscriber/retrieve-a-single-subscriber.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
