{"id":16992945,"url":"https://github.com/userbradley/bereal","last_synced_at":"2025-04-05T08:08:04.150Z","repository":{"id":54915075,"uuid":"522738181","full_name":"userbradley/BeReal","owner":"userbradley","description":"How does BeReal work (Under the hood)","archived":false,"fork":false,"pushed_at":"2025-02-05T01:58:17.000Z","size":1283,"stargazers_count":160,"open_issues_count":5,"forks_count":6,"subscribers_count":8,"default_branch":"main","last_synced_at":"2025-03-29T07:09:49.265Z","etag":null,"topics":["api","bereal","ios","mitm","reverse-engineering"],"latest_commit_sha":null,"homepage":"https://breadnet.co.uk/how-be-real-works/","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/userbradley.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"docs/contributing.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-08-08T23:30:36.000Z","updated_at":"2025-03-08T09:30:27.000Z","dependencies_parsed_at":"2024-01-29T14:50:29.772Z","dependency_job_id":"24bf08bd-5746-43ee-8c45-febfbcb6418b","html_url":"https://github.com/userbradley/BeReal","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/userbradley%2FBeReal","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/userbradley%2FBeReal/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/userbradley%2FBeReal/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/userbradley%2FBeReal/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/userbradley","download_url":"https://codeload.github.com/userbradley/BeReal/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247305934,"owners_count":20917208,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","bereal","ios","mitm","reverse-engineering"],"created_at":"2024-10-14T03:31:12.036Z","updated_at":"2025-04-05T08:08:04.121Z","avatar_url":"https://github.com/userbradley.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# BeReal\n\u003cimg src=\"https://upload.wikimedia.org/wikipedia/commons/8/89/Logo-BeReal.png\" width=\"90\" alt=\"Bereal Application\"\u003e\n\u003cbr\u003e\n\u003cbr\u003e\n\n\u003e **Note**\n\u003e We have been working on a site version of this which is most up to date, available at [https://userbradley.github.io/BeReal/](https://userbradley.github.io/BeReal/)\n\n\u003cbr\u003e\n\nThis Repo contains all the endpoints that I was able to find from my Network wide SSL inspecting proxy.\n\n\u003c!-- TOC --\u003e\n* [BeReal](#bereal)\n  * [Api Domain](#api-domain)\n  * [Endpoints](#endpoints)\n    * [Metric Collection](#metric-collection)\n    * [BeReal Application Specific requests](#bereal-application-specific-requests)\n      * [Storage](#storage-)\n      * [Feeds](#feeds)\n      * [Relationships](#relationships)\n      * [Search](#search)\n      * [Settings](#settings)\n      * [Person](#person)\n      * [Posting a photo](#posting-a-photo)\n      * [Legal schmooz](#legal-schmooz)\n      * [Help Section](#help-section)\n  * [Domains](#domains)\n    * [Subdomains](#subdomains)\n  * [Application workflows](#application-workflows)\n    * [Get Usernames](#get-usernames)\n    * [feeds/friends-v1](#feedsfriends-v1)\n    * [feeds/discovery](#feedsdiscovery)\n    * [feeds/memories/video](#feedsmemoriesvideo)\n    * [feeds/memories](#feedsmemories)\n    * [api/terms](#apiterms)\n    * [api/relationships/suggestions](#apirelationshipssuggestions)\n    * [api/relationships/friends](#apirelationshipsfriends)\n    * [relationships/friend-requests](#relationshipsfriend-requests)\n    * [relationships/friend-requests/received](#relationshipsfriend-requestsreceived)\n    * [relationships/friend-requests/sent](#relationshipsfriend-requestssent)\n    * [api/person/profiles/\u003cuid\u003e](#apipersonprofilesuid)\n    * [sendCaptureInProgressPush](#sendcaptureinprogresspush)\n    * [Firebase push](#firebase-push)\n    * [content/post](#contentpost)\n    * [Metric Collection](#metric-collection-1)\n  * [Stargazers over time](#stargazers-over-time)\n\u003c!-- TOC --\u003e\n\n## Api Domain\n\nThe current domain for the BeReal api is\n\n```\nhttps://mobile.bereal.com/api/\n```\n\nAny reference to something like `/feeds/` assumes you just go `https://mobile.bereal.com/api/feeds/`\n\n## Endpoints\n\nThe below contains an overview of the endpoints.\n\n### Metric Collection\n\n| URL                                                                                               | Use                                                                                                                      | Request type    |\n|---------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------|-----------------|\n| `https://logs.browser-intake-datadoghq.com/api/v2/logs?ddsource=ios`                              | Application usage metrics                                                                                                | `POST HTTP/2.0` |\n| `https://api2.amplitude.com/`                                                                     | User journey tracking                                                                                                    | `POST HTTP/2.0` |\n| `https://region1.app-measurement.com/a`                                                           | Firebase (I'm like 80% sure)                                                                                             | `POST HTTP/2.0` |\n| `https://api.onesignal.com/apps/91b217c4-7ad8-4fd1-a01c-f4ed5b2a4711/ios_params.js?player_id=\u003c\u003e\u003e` | Push messaging (Probably the notification going off)                                                                     | `GET HTTP/2.0`  |\n| `https://fcmtoken.googleapis.com/register`                                                        | [Firebase Messaging](https://firebase.google.com/docs/cloud-messaging) (maybe also for push notifications, but authing?) | `POST HTTP/2.0` |\n| `https://firebaselogging-pa.googleapis.com/v1/firelog/legacy/batchlog`                            | Firebase Logging                                                                                                         | `POST HTTP/2.0` |\n\n### BeReal Application Specific requests\n\n\n#### Storage\n| URL                                                          | Use                                                                                                    | Request type   |\n|--------------------------------------------------------------|--------------------------------------------------------------------------------------------------------|----------------|\n| `https://storage.bere.al/Photos/\u003cuid\u003e`                       | Where the user generated images are stored, backed by a [GCS Bucket](https://cloud.google.com/storage) | `GET HTTP/2.0` |\n| `https://bereal-us-central1-memories.storage.googleapis.com` | Memories 2022 recap video storage                                                                      | `GET HTTP/2.0` |\n\n\n#### Feeds\n\n\n| URL                                                            | Use                                              | Request type   |\n|----------------------------------------------------------------|--------------------------------------------------|----------------|\n| `https://mobile.bereal.com/api/feeds/discovery?limit=\u003cnumber\u003e` | Feed of `discover` page - Limited by number(int) | `GET HTTP/2.0` |\n| `https://mobile.bereal.com/api/feeds/memories?limit=\u003cnumber\u003e`  | Your memories                                    | `GET HTTP/2.0` |\n| `https://mobile.bereal.com/api/feeds/memories/video`           | Not sure, perhaps a future feature?              | `GET HTTP/2.0` |\n| `https://mobile.bereal.com/api/feeds/friends-v1`               | Loads all the images that you're friends with    | `GET HTTP/2.0` |\n\n#### Relationships\n\n\n| URL                                                                    | Use                                                           | Request type    |\n|------------------------------------------------------------------------|---------------------------------------------------------------|-----------------|\n| `https://mobile.bereal.com/api/relationships/contacts`                 | Sends a hashed list of phone numbers to work out who you know | `POST HTTP/2.0` |\n| `https://mobile.bereal.com/api/relationships/friends`                  | List of friends you                                           | `GET HTTP/2.0`  |\n| `https://mobile.bereal.com/api/relationships/friend-requests`          | Makes a friend                                                | `POST HTTP/2.0` |\n| `https://mobile.bereal.com/api/relationships/friend-requests/sent`     | List of friend requests                                       | `GET HTTP/2.0`  |\n| `https://mobile.bereal.com/api/relationships/friend-requests/received` | List of friend requests                                       | `GET HTTP/2.0`  |\n| `https://mobile.bereal.com/api/relationships/suggestions`              | Users you _may know_                                          | `GET HTTP/2.0`  |\n\n#### Search\n\n| URL                                            | Use                                                   | Request type   |\n|------------------------------------------------|-------------------------------------------------------|----------------|\n| `https://mobile.bereal.com/api/search/profile` | Searches based on full name or partial name of a user | `GET HTTP/2.0` |\n\n#### Settings\n\n| URL                                                        | Use                                                               | Request type    |\n|------------------------------------------------------------|-------------------------------------------------------------------|-----------------|\n| `https://mobile.bereal.com/api/settings`                   | Retrieves settings for the app, both global and user              | `GET HTTP/2.0`  |\n| `https://mobile.bereal.com/api/settings/notification-push` | Gets user preferences on push notifications                       | `GET HTTP/2.0`  |\n| `https://mobile.bereal.com/api/parental-consent-request`   | Creates a request for parental consent if user is under 13 in EEZ | `POST HTTP/2.0` |\n\n\n#### Person\n\n\n| URL                                                                         | Use                                                                                                         | Request type              |\n|-----------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------|---------------------------|\n| `https://us-central1-alexisbarreyat-bereal.cloudfunctions.net/getUserNames` | Gets usernames for public users it seems. Was only called when I opened the _discover_ page                 | `POST HTTP/2.0`           |\n| `https://mobile.bereal.com/api/person/realmojis/upload-url`                 | Gets [GCS Signed URL](https://cloud.google.com/storage/docs/access-control/signed-urls) for realmoji upload | `GET HTTP/2.0`            |\n| `https://mobile.bereal.com/api/person/me`                                   | Gets info about your account                                                                                | `GET HTTP/2.0`            |\n| `https://mobile.bereal.com/api/person/profile`                              | Updates and gets info about you!                                                                            | `POST/PATCH/GET HTTP/2.0` |\n| `https://mobile.bereal.com/api/person/me/username`                          | Updates your username                                                                                       | `PATCH HTTP/2.0`          |\n\n\n#### Posting a photo\n\n\n| URL                                                                                      | Use                                                                                                    | Request type    |\n|------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------|-----------------|\n| `https://us-central1-alexisbarreyat-bereal.cloudfunctions.net/sendCaptureInProgressPush` | Letting BeReal know you're taking a photo                                                              | `POST HTTP/2.0` |\n| `https://firebasestorage.googleapis.com/v0/b/storage.bere.al/o/`                         | Uploads the photo to Firebase from what I can see                                                      | `POST HTTP/2.0` |\n| `https://mobile.bereal.com/api/content/post`                                             | Finalizing the post, attaching location and retakes                                                    | `POST HTTP/2.0` |\n| `https://mobile.bereal.com/content/posts/upload-url`                                     | Gets [GCS Signed URL](https://cloud.google.com/storage/docs/access-control/signed-urls) for uploads    | `GET HTTP/2.0`  |\n| `https://mobile.bereal.com/content/posts/me`                                             | Gets your post                                                                                         | `GET HTTP/2.0`  |\n| `https://mobile.bereal.com/content/posts/caption`                                        | Creates a caption on your post                                                                         | `POST HTTP/2.0` |\n| `https://mobile.bereal.com/content/posts/visibility`                                     | Updates the visibility of a BeReal                                                                     | `GET HTTP/2.0`  |\n| `https://mobile.bereal.com/content/comments`                                             | Gets comments and creates them                                                                         | `GET HTTP/2.0`  |\n| `https://mobile.bereal.com/content/realmojis`                                            | Gets a list of realmojis                                                                               | `GET HTTP/2.0`  |\n| `https://mobile.bereal.com/content/realmojis/upload-url`                                 | Gets [GCS Signed URL](https://cloud.google.com/storage/docs/access-control/signed-urls) for Real Mojis | `GET HTTP/2.0`  |\n| `https://mobile.bereal.com/content/screenshots`                                          | Updates when you screenshot a post                                                                     | `POST HTTP/2.0` |\n| `https://mobile.bereal.com/content/screenshots/me`                                       | Gets list of users who screenshot?                                                                     | `GET HTTP/2.0`  |\n\n\n#### Legal schmooz\n| URL                                           | Use                                             | Request type   |\n|-----------------------------------------------|-------------------------------------------------|----------------|\n| `https://mobile.bereal.com/api/terms/privacy` | What Terms and conditions the user has accepted | `GET HTTP/2.0` |\n\n#### Help Section\n| URL                                                                     | Use                                                                                            | Request type   |\n|-------------------------------------------------------------------------|------------------------------------------------------------------------------------------------|----------------|\n| `https://berealapp.zendesk.com/api/private/mobile_sdk/settings/id.json` | Where the user send message to the help service   [Bereal use Zendesk](https://www.zendesk.fr) | `GET HTTP/2.0` |\n| `https://berealapp.zendesk.com/attachments/token/ID/?name=ID.jpeg`      | Where the user Photo is stored (help message)                                                  | `GET HTTP/2.0` |\n\n\n\n## Domains\n\nBelow contains the _top level_ domains that BeReal uses\n\n| Domain           | Use cases                                                              |\n|------------------|------------------------------------------------------------------------|\n| `bereal.team`    | Seems to be _Back Office_ stuff and cloud infrastructure               |\n| `bere.al`        | Seems to be public facing domains like their website, and jobs posting |\n| `bereal.com`     | More back office tools                                                 |\n| `bereal.network` | CND and off cloud Networking systems                                   |\n\n\n\n### Subdomains\n\nBelow is all the subdomains we have been able to find\n\n\n| URL                           | Use                                                                                    |\n|-------------------------------|----------------------------------------------------------------------------------------|\n| `status.bereal.team`          | Simple text based status page of services                                              |\n| `tools.bereal.team`           | Probably internal tooling                                                              |\n| `auth.bereal.team`            | _assuming_ to be authentication services                                               |\n| `doc.bereal.team`             | Probably a custom URL for google docs  (Protected by IAP)                              |\n| `dev.argocd.bereal.team`      | Development [ArgoCD](https://argo-cd.readthedocs.io/en/stable/) deployment             |\n| `webhooks.bereal.team`        | Most likely incoming webhooks to the BeReal systems                                    |\n| `status.bereal.team`          | Text based status page                                                                 |\n| `tools.bereal.team`           | Internal tooling                                                                       |\n| `dev.mobile.bereal.team`      | Not sure                                                                               |\n| `dev.webhooks.bereal.team`    | *DEV* Development webhooks                                                             |\n| `grafana.bereal.team`         | Grafana system, dashboards and alerting                                                |\n| `dev.doc.bereal.team`         | *DEV* Most likely internal Documentation                                               |\n| `dev.grafana.bereal.team`     | *DEV* Grafana system, dashboards and alerting                                          |\n| `kiali.bereal.team`           | [Istio Service mesh console](https://kiali.io)                                         |\n| `bereal.team    `             | Apex Domain                                                                            |\n| `dev.tools.bereal.team`       | *DEV* Internal Tooling                                                                 |\n| `mobile.bereal.team`          |                                                                                        |\n| `dev.status.bereal.team`      | *DEV* Status page                                                                      |\n| `argocd.bereal.team`          | [ArgoCD](https://argo-cd.readthedocs.io/en/stable/) Deployment                         |\n| `auth.bereal.team`            | Authentication systems                                                                 |\n| `doc.bereal.team`             | Most likely internal Documentation                                                     |\n| `dev.auth.bereal.team`        | *DEV* Authentication systems                                                           |\n| `dev.notific.bereal.team`     | *DEV* Misspell   notification system                                                   |\n| `bere.al`                     | Website                                                                                |\n| `storage2.bere.al`            | GCS Storage                                                                            |\n| `app.bere.al`                 | Website too                                                                            |\n| `test.bere.al`                | Test website                                                                           |\n| `www.bere.al`                 | Website                                                                                |\n| `intra.bere.al`               | BeReal Ambassadors site (now Deprecated)                                               |\n| `jobs.bere.al`                | BeReal job postings                                                                    |\n| `storage.bere.al`             | GCS Storage                                                                            |\n| `backup.bere.al`              | Backup GCS Storage                                                                     |\n| `sandbox-storage2.bere.al`    | Storage Sandbox                                                                        |\n| `sandbox-storage.bere.al`     | Storage Sandbox                                                                        |\n| `dev.kiali.bereal.com`        | *DEV* Istio Service mesh console](https://kiali.io)                                    |\n| `prod.dashboard.bereal.com`   | Probably Grafana                                                                       |\n| `mobile.bereal.com`           | Not sure                                                                               |\n| `api-fasterstore.bereal.com`  | _probably_ Ecommerce management platform [Faster Stores](https://www.fasterstores.com) |\n| `dev.mobile.bereal.com`       | Not sure                                                                               |\n| `bereal.com`                  | Website                                                                                |\n| `dev.grafana.bereal.com`      | *DEV* Grafana system, dashboards and alerting                                          |\n| `webhooks.bereal.com`         | Most likely incoming webhooks to the BeReal systems                                    |\n| `push.bereal.com`             |                                                                                        |\n| `prod.fasterstore.bereal.com` | _probably_ Ecommerce management platform [Faster Stores](https://www.fasterstores.com) |\n| `prod.kiali.bereal.com`       | Production [Istio Service mesh console](https://kiali.io)                              |\n| `gke-test.bereal.com`         | Probably testing GKE                                                                   |\n| `test.fasterstore.bereal.com` | _probably_ Ecommerce management platform [Faster Stores](https://www.fasterstores.com) |\n| `dev.tools.bereal.com`        | *DEV* Internal tooling                                                                 |\n| `all.argocd.bereal.com`       | [ArgoCD](https://argo-cd.readthedocs.io/en/stable/) Deployment                         |\n| `dev.push.bereal.com`         | Not sure                                                                               |\n| `api.bereal.com`              | BeReal API Endpoint                                                                    |\n| `dev.function.bereal.com`     | Probably cloud function domain                                                         |\n| `dev.notification.bereal.com` | Probably Notification dev platform                                                     |\n| `notification.bereal.com`     |                                                                                        |\n| `function.bereal.com`         | Probably cloud function domain                                                         |\n| `auth.bereal.com`             | Internal Authentication I would think                                                  |\n| `dev.auth.bereal.com`         | *DEV*                  Internal Authentication I would think                           |\n| `test.graphapi.bereal.com`    | Graph-api testing                                                                      |\n| `notif.bereal.com`            | Probably notification infrastructure                                                   |\n| `dev.traefik.bereal.com`      | [Traefik](https://doc.traefik.io/traefik/) Proxy for GKE                               |\n| `cdn-eu.bereal.com`           | EU CND                                                                                 |\n| `dev.argocd.bereal.com`       | Dev   [ArgoCD](https://argo-cd.readthedocs.io/en/stable/) Deployment                   |\n| `help.bereal.com`             | Help Pages                                                                             |\n| `grafana.bereal.com`          | Grafana                                                                                |\n| `dev.webhooks.bereal.com`     | Dev incoming webhooks to BeReal                                                        |\n| `api-dev.bereal.com`          | Dev API                                                                                |\n| `dev.graphapi.bereal.com`     | Dev Graph-api                                                                          |\n| `argocd.bereal.com`           | [ArgoCD](https://argo-cd.readthedocs.io/en/stable/) Deployment                         |\n| `tools.bereal.com`            | Internal tooling (now Deprecated)                                                      |\n| `jobs.bereal.com`             | Job postings                                                                           |\n| `cdn.eu.bereal.com`           | EU CDN                                                                                 |\n| `bereal.network`              | Seems to be their out of cloud Network services domain                                 |\n| `cdn.bereal.network`          | New CDN running on `MCI Communications Services, Inc. d/b/a Verizon Business`          |\n| `dev-cdn.bereal.network`      | Development CDN running on `MCI Communications Services, Inc. d/b/a Verizon Business`  |\n\n---\n\n## Application workflows\n\n\n\n### Get Usernames\n\nThis seems to be the endpoint that gets called when you load the _Discover_ page (eg: people that are not your _direct_ friends)\nPost to URL\n\n_Requires Authentication_\n```json\n{\n    \"data\": {\n        \"uids\": [\n            \"a5wIW3KgmnTiS6QXph0IiY3lEAb2\"\n        ]\n    }\n}\n```\n\nResponse (Authenticated)\n```json\n{\n    \"result\": [\n        {\n            \"name\": \"Liv\",\n            \"photoURL\": \"Photos/a5wIW3KgmnTiS6QXph0IiY3lEAb2/profile/a5wIW3KgmnTiS6QXph0IiY3lEAb2-1657273844-profile-picture.jpg\",\n            \"uid\": \"a5wIW3KgmnTiS6QXph0IiY3lEAb2\",\n            \"userName\": \"liv_lutner\"\n        }\n    ]\n}\n```\nResponse (Un-authenticated)\n```json\n{\n    \"error\": {\n        \"message\": \"You must be authenticated.\",\n        \"status\": \"UNAUTHENTICATED\"\n    }\n}\n```\n\n### feeds/friends-v1\nWhen the app opens, it makes a call to `api/feed/friends-v1`\n\nBelow is an example, with PII removed.\n```json\n{\n  \"userPosts\": {\n    \"user\": {\n      \"id\": \"[REDACTED]\",\n      \"username\": \"[REDACTED]\",\n      \"profilePicture\": {\n        \"url\": \"https://cdn.bereal.network/Photos/[REDACTED]/profile/[REDACTED]\",\n        \"width\": 999,\n        \"height\": 999\n      }\n    },\n    \"region\": \"us-central\",\n    \"momentId\": \"L1O8S_Tbph2fpEeuoSWcv\",\n    \"posts\": [\n      {\n        \"id\": \"-PGe3UUH4wsDg0ttqc7G-\",\n        \"visibility\": [\"friends\"],\n        \"primary\": {\n          \"url\": \"https://cdn.bereal.network/Photos/[REDACTED]/post/[REDACTED]\",\n          \"width\": 2000,\n          \"height\": 1500\n        },\n        \"secondary\": {\n          \"url\": \"https://cdn.bereal.network/Photos/[REDACTED]/post/[REDACTED]\",\n          \"width\": 2000,\n          \"height\": 1500\n        },\n        \"caption\": \"I love my tortilla blanky 🥰\",\n        \"retakeCounter\": 0,\n        \"lateInSeconds\": 16110,\n        \"isLate\": true,\n        \"isMain\": true,\n        \"realMojis\": [\n          {\n            \"id\": \"Jn8tDy3wwwJ197BHr7lJs\",\n            \"user\": {\n              \"id\": \"[REDACTED]\",\n              \"username\": \"[REDACTED]\",\n              \"profilePicture\": {\n                \"url\": \"https://cdn.bereal.network/Photos/[REDACTED]/profile/[REDACTED]\",\n                \"width\": 1000,\n                \"height\": 1000\n              }\n            },\n            \"media\": {\n              \"url\": \"https://cdn.bereal.network/Photos/[REDACTED]/realmoji/[REDACTED]\",\n              \"width\": 500,\n              \"height\": 500\n            },\n            \"type\": \"up\",\n            \"emoji\": \"👍\",\n            \"isInstant\": false,\n            \"postedAt\": \"2023-07-14T02:47:15.850Z\"\n          }\n        ],\n        \"comments\": [],\n        \"unblurCount\": 0,\n        \"takenAt\": \"2023-07-14T02:46:26.520Z\",\n        \"creationDate\": \"2023-07-14T02:46:26.657Z\",\n        \"updatedAt\": \"2023-07-14T02:46:26.657Z\"\n      }\n    ]\n  },\n  \"friendsPosts\": [\n    {\n      \"user\": {\n        \"id\": \"[REDACTED]\",\n        \"username\": \"[REDACTED]\",\n        \"profilePicture\": {\n          \"url\": \"https://cdn.bereal.network/Photos/[REDACTED]/profile/[REDACTED]\",\n          \"width\": 1000,\n          \"height\": 1000\n        }\n      },\n      \"momentId\": \"L1O8S_Tbph2fpEeuoSWcv\",\n      \"region\": \"us-central\",\n      \"moment\": {\n        \"id\": \"L1O8S_Tbph2fpEeuoSWcv\",\n        \"region\": \"us-central\"\n      },\n      \"posts\": [\n        {\n          \"id\": \"HLAxwJatn4OZFmLieuM8N\",\n          \"primary\": {\n            \"url\": \"https://cdn.bereal.network/Photos/[REDACTED]/post/[REDACTED]\",\n            \"width\": 1500,\n            \"height\": 2000\n          },\n          \"secondary\": {\n            \"url\": \"https://cdn.bereal.network/Photos/[REDACTED]/post/[REDACTED]\",\n            \"width\": 1500,\n            \"height\": 2000\n          },\n          \"location\": {\n            \"latitude\": [REDACTED],\n            \"longitude\": [REDACTED]\n          },\n          \"retakeCounter\": 1,\n          \"lateInSeconds\": 0,\n          \"isLate\": false,\n          \"isMain\": true,\n          \"takenAt\": \"2023-07-13T22:16:41.468Z\",\n          \"realMojis\": [\n            {\n              \"id\": \"qPIyfQuWbdr1Ma4bwDE1N\",\n              \"user\": {\n                \"id\": \"[REDACTED]\",\n                \"username\": \"[REDACTED]\",\n                \"profilePicture\": {\n                  \"url\": \"https://cdn.bereal.network/Photos/[REDACTED]/profile/[REDACTED]\",\n                  \"width\": 1000,\n                  \"height\": 1000\n                }\n              },\n              \"media\": {\n                \"url\": \"https://cdn.bereal.network/Photos/[REDACTED]/realmoji/[REDACTED]\",\n                \"width\": 500,\n                \"height\": 500\n              },\n              \"type\": \"up\",\n              \"emoji\": \"👍\",\n              \"isInstant\": false,\n              \"postedAt\": \"2023-07-14T02:47:15.850Z\"\n            }\n          ],\n          \"comments\": [],\n          \"unblurCount\": 0,\n          \"takenAt\": \"2023-07-14T02:46:26.520Z\",\n          \"creationDate\": \"2023-07-14T02:46:26.657Z\",\n          \"updatedAt\": \"2023-07-14T02:46:26.657Z\"\n        }\n      ]\n    }\n  ]\n}\n\n```\n\n### feeds/discovery\n\nThis is the `Discovery` page, where you can see people that are not your friends.\n\nYou can see an example response from the API by looking at the [public.json](public.json)\n\n### feeds/memories/video\n\n2021 and 2022 memories recaps video\n\n```json\n{\n    \"status\": \"unavailable\",\n    \"url\": null\n}\n```\n\n### feeds/memories\n\nThis shows all your memories\n\n```json\n        {\n            \"id\": \"RPe9OfuPIOscE9LPxoRpX\",\n            \"thumbnail\": {\n                \"url\": \"https://storage.bere.al/cdn-cgi/image/height=130/Photos/\u003c\u003e/bereal/3cc9ad9d-\u003c\u003e-4199-9987-e3dc145\u003c\u003e45-1659976930.jpg\",\n                \"width\": 98,\n                \"height\": 130\n            },\n            \"primary\": {\n                \"url\": \"https://storage.bere.al/Photos/\u003c\u003e/bereal/3cc9ad9d-\u003c\u003e-4199-9987-e3dc145\u003c\u003e45-1659976930.jpg\",\n                \"width\": 1500,\n                \"height\": 2000\n            },\n            \"secondary\": {\n                \"url\": \"https://storage.bere.al/Photos/\u003c\u003e/bereal/3cc9ad9d-\u003c\u003e-4199-9987-e3dc145\u003c\u003e45-1659976930-secondary.jpg\",\n                \"width\": 1500,\n                \"height\": 2000\n            },\n            \"isLate\": true,\n            \"memoryDay\": \"2022-08-08\"\n        },\n\n```\n\n### api/terms\n\nShows what terms and conditions the user has accepted\n\n```json\n{\n    \"data\": [\n        {\n            \"code\": \"gps\",\n            \"status\": \"ACCEPTED\",\n            \"signedAt\": \"2022-06-20T13:21:07.850Z\",\n            \"termUrl\": \"https://bere.al\",\n            \"version\": \"1\"\n        },\n        {\n            \"code\": \"memories\",\n            \"status\": \"ACCEPTED\",\n            \"signedAt\": \"2022-06-20T13:20:39.727Z\",\n            \"termUrl\": \"https://bere.al\",\n            \"version\": \"1\"\n        },\n        {\n            \"code\": \"terms\",\n            \"status\": \"ACCEPTED\",\n            \"signedAt\": \"2022-06-20T13:20:39.726Z\",\n            \"termUrl\": \"https://bere.al/en/terms\",\n            \"version\": \"1\"\n        },\n        {\n            \"code\": \"privacy\",\n            \"status\": \"ACCEPTED\",\n            \"signedAt\": \"2022-06-20T13:20:39.727Z\",\n            \"termUrl\": \"https://bere.al/en/privacy\",\n            \"version\": \"1\"\n        },\n        {\n            \"code\": \"fof\",\n            \"status\": \"UNKNOWN\",\n            \"termUrl\": \"https://bere.al\",\n            \"version\": \"1\"\n        }\n    ]\n}\n```\n\n### api/relationships/suggestions\nThis API returns a list of account that you _may or may not know_ (This is worked out server side based on syncing contacts)\n\n```json\n        {\n            \"fullname\": \"Mya \u003c\u003e\",\n            \"id\": \"\u003c\u003e\",\n            \"mutualFriends\": 3,\n            \"profilePicture\": {\n                \"height\": 500,\n                \"url\": \"https://storage.bere.al/Photos/\u003c\u003e/profile/\u003c\u003e-1651416654-profile-picture.jpg\",\n                \"width\": 500\n            },\n            \"username\": \"\u003c\u003e\"\n        },\n```\n\n### api/relationships/friends\n\nThis API gives a list of users you are friends with\n\n```json\n{\n            \"fullname\": \"\u003c\u003e\",\n            \"id\": \"\u003c\u003e\",\n            \"profilePicture\": {\n                \"height\": 500,\n                \"url\": \"https://storage.bere.al/Photos/\u003c\u003e/profile/\u003c\u003e-1651432152-profile-picture.jpg\",\n                \"width\": 500\n            },\n            \"status\": \"accepted\",\n            \"username\": \"\u003c\u003e\"\n        },\n```\n\n### relationships/friend-requests\n\nPost request to make a friend request\n\n```json\n{\n    \"fullname\": \"Erin \u003c\u003e\u003e\",\n    \"id\": \"\u003c\u003e\",\n    \"mutualFriends\": 2,\n    \"profilePicture\": {\n        \"height\": 500,\n        \"url\": \"https://storage.bere.al/Photos/\u003c\u003e/profile/\u003c\u003e-1655582465-profile-picture.jpg\",\n        \"width\": 500\n    },\n    \"status\": \"sent\",\n    \"updatedAt\": \"2022-08-09T00:41:43.375Z\",\n    \"username\": \"\u003c\u003e\u003e\"\n}\n```\n\n### relationships/friend-requests/received\n\nShows a list of friend requests the user (me) has received\n\nAs I have no pending requests, this is what it shows. I would assume it would show the fields `profilePicture` and `UserName`\n\n```json\n{\n    \"data\": [],\n    \"next\": null\n}\n```\n\n### relationships/friend-requests/sent\n\nShows a list of friend requests the user (me) has sent to other users, as well as the status of the request\n\n```json\n\n{\n    \"data\": [\n        {\n            \"fullname\": \"Erin \u003c\u003e\",\n            \"id\": \"\u003c\u003e\u003e\",\n            \"mutualFriends\": 2,\n            \"profilePicture\": {\n                \"height\": 500,\n                \"url\": \"https://storage.bere.al/Photos/\u003c\u003e\u003e/profile/\u003c\u003e-1655582465-profile-picture.jpg\",\n                \"width\": 500\n            },\n            \"status\": \"sent\",\n            \"updatedAt\": \"2022-08-09T00:41:43.375Z\",\n            \"username\": \"\u003c\u003e\u003e\"\n        }\n    ],\n    \"next\": null\n}\n```\n\n### api/person/profiles/\u003cuid\u003e\nThis API returns information about the user, but their UID (Unique ID)\n\n```\n{\n    \"createdAt\": \"2022-05-01T20:34:24.741Z\",\n    \"fullname\": \"\u003c\u003e\",\n    \"id\": \"\u003c\u003e\",\n    \"profilePicture\": {\n        \"height\": 500,\n        \"url\": \"https://storage.bere.al/Photos/\u003c\u003e/profile/\u003c\u003e-1651578666-profile-picture.jpg\",\n        \"width\": 500\n    },\n    \"relationship\": {\n        \"commonFriends\": {\n            \"sample\": [\n                {\n                    \"fullname\": \"\u003c\u003e\",\n                    \"id\": \"\u003c\u003e\",\n                    \"profilePicture\": {\n                        \"height\": 500,\n                        \"url\": \"https://storage.bere.al/Photos/\u003c\u003e/profile/\u003c\u003e-1651432152-profile-picture.jpg\",\n                        \"width\": 500\n                    },\n                    \"username\": \"\u003c\u003e\"\n                },\n                {\n                    \"fullname\": \"Courtney\",\n                    \"id\": \"\u003c\u003e\",\n                    \"profilePicture\": {\n                        \"height\": 500,\n                        \"url\": \"https://storage.bere.al/Photos/\u003c\u003e/profile/\u003c\u003e-1648163954-profile-picture.jpg\",\n                        \"width\": 500\n                    },\n                    \"username\": \"\u003c\u003e\"\n                }\n            ],\n            \"total\": 2\n        },\n        \"friendedAt\": null,\n        \"status\": null\n    },\n    \"username\": \"\u003c\u003e\"\n}\n```\n\n### sendCaptureInProgressPush\n\nThis is a cloud function that seems to push a message to pubsub on the BeReal side\n\nWhat it sends:\n\n```json\n{\n    \"data\": {\n        \"photoURL\": \"Photos/\u003cme\u003e/profile/\u003cme\u003e-1655905537-profile-picture.jpg\",\n        \"topic\": \"\u003cme\u003e\",\n        \"userName\": \"\u003cme\u003e\"\n    }\n}\n```\n\nResponse\n\n```json\n{\n    \"result\": \"projects/alexisbarreyat-bereal/messages/7517087177659076139\"\n}\n```\n\n### Firebase push\n\nRequest\n\n```json\n{\n    \"cacheControl\": \"public,max-age=172800\",\n    \"contentType\": \"image/jpeg\",\n    \"metadata\": {\n        \"type\": \"bereal\"\n    },\n    \"name\": \"Photos/\u003cme\u003e/bereal/7c44d6e8-086b-4a18-b8b4-d3785f58cda8-1660122851.jpg\"\n}\n```\n\n```json\n{\n    \"bucket\": \"storage.bere.al\",\n    \"cacheControl\": \"public,max-age=172800\",\n    \"contentDisposition\": \"inline; filename*=utf-8''7c44d6e8-086b-4a18-b8b4-d3785f58cda8-1660122851-secondary.jpg\",\n    \"contentEncoding\": \"identity\",\n    \"contentType\": \"image/jpeg\",\n    \"crc32c\": \"rfGb7g==\",\n    \"downloadTokens\": \"551a5e87-a995-47dc-a108-13668abdecfa\",\n    \"etag\": \"CLzws8n3u/kCEAE=\",\n    \"generation\": \"1660122857011260\",\n    \"md5Hash\": \"f/wNKCMBarI56uGxAOX6jg==\",\n    \"metadata\": {\n        \"type\": \"bereal\"\n    },\n    \"metageneration\": \"1\",\n    \"name\": \"Photos/\u003cme\u003e/bereal/7c44d6e8-086b-4a18-b8b4-d3785f58cda8-1660122851-secondary.jpg\",\n    \"size\": \"563242\",\n    \"storageClass\": \"MULTI_REGIONAL\",\n    \"timeCreated\": \"2022-08-10T09:14:17.082Z\",\n    \"updated\": \"2022-08-10T09:14:17.082Z\"\n}\n```\n\n### content/post\n\nThis is the API endpoint bereal posts to when it's finalizing the post\n\nRequest\n\n```json\n{\n    \"backCamera\": {\n        \"bucket\": \"storage.bere.al\",\n        \"height\": 2000,\n        \"path\": \"Photos/\u003cme\u003e/bereal/7c44d6e8-086b-4a18-b8b4-d3785f58cda8-1660122851.jpg\",\n        \"width\": 1500\n    },\n    \"frontCamera\": {\n        \"bucket\": \"storage.bere.al\",\n        \"height\": 2000,\n        \"path\": \"Photos/\u003cme\u003e/bereal/7c44d6e8-086b-4a18-b8b4-d3785f58cda8-1660122851-secondary.jpg\",\n        \"width\": 1500\n    },\n    \"isLate\": true,\n    \"isPublic\": false,\n    \"location\": {\n        \"latitude\": \u003c\u003e\u003e,\n        \"longitude\": \u003c\u003e\u003e\n    },\n    \"retakeCounter\": 4,\n    \"takenAt\": \"2022-08-10T09:14:11Z\"\n}\n```\n\nResponse\n\n```json\n{\n    \"caption\": null,\n    \"comments\": {\n        \"sample\": [],\n        \"total\": 0\n    },\n    \"createdAt\": \"2022-08-10T09:14:17.603Z\",\n    \"id\": \"\u003c\u003e-YKzhel\",\n    \"isLate\": true,\n    \"lateInSeconds\": 1425,\n    \"location\": {\n        \"latitude\": \u003c\u003e,\n        \"longitude\": \u003c\u003e\n    },\n    \"moment\": {\n        \"id\": \"dr6O-8wHaE4xRgnxLpY9M\",\n        \"region\": \"europe-west\"\n    },\n    \"primary\": {\n        \"height\": 2000,\n        \"url\": \"https://storage.bere.al/Photos/\u003cme\u003e/bereal/7c44d6e8-086b-4a18-b8b4-d3785f58cda8-1660122851.jpg\",\n        \"width\": 1500\n    },\n    \"realmojis\": {\n        \"sample\": [],\n        \"total\": 0\n    },\n    \"retakeCounter\": 4,\n    \"screenshots\": {\n        \"sample\": [],\n        \"total\": 0\n    },\n    \"secondary\": {\n        \"height\": 2000,\n        \"url\": \"https://storage.bere.al/Photos/\u003cme\u003e/bereal/7c44d6e8-086b-4a18-b8b4-d3785f58cda8-1660122851-secondary.jpg\",\n        \"width\": 1500\n    },\n    \"takenAt\": \"2022-08-10T09:14:11.000Z\",\n    \"user\": {\n        \"id\": \"\u003cme\u003e\",\n        \"profilePicture\": {\n            \"height\": 1000,\n            \"url\": \"https://storage.bere.al/Photos/\u003cme\u003e/profile/\u003cme\u003e-1655905537-profile-picture.jpg\",\n            \"width\": 1000\n        },\n        \"username\": \"\u003c\u003e\"\n    },\n    \"visibility\": [\n        \"friends\"\n    ]\n}\n```\n### Metric Collection\n```\n{\n        \"_dd\": {\n            \"device\": {\n                \"architecture\": \"arm64e\"\n            }\n        },\n        \"date\": \"2023-05-22T17:39:51.607Z\",\n        \"ddtags\": \"env:prod,version:1.1.2\",\n        \"logger.name\": \"AlexisBarreyat.BeReal\",\n        \"logger.thread_name\": \"main\",\n        \"logger.version\": \"1.17.0\",\n        \"message\": \"[UploadPostWorker] restarting upload\",\n        \"network.client.available_interfaces\": [\n            \"cellular\"\n        ],\n        \"network.client.is_constrained\": false,\n        \"network.client.is_expensive\": true,\n        \"network.client.reachability\": \"yes\",\n        \"network.client.sim_carrier.allows_voip\": true,\n        \"network.client.sim_carrier.iso_country\": \"--\",\n        \"network.client.sim_carrier.name\": \"--\",\n        \"network.client.sim_carrier.technology\": \"LTE\",\n        \"network.client.supports_ipv4\": true,\n        \"network.client.supports_ipv6\": true,\n        \"service\": \"AlexisBarreyat.BeReal\",\n        \"status\": \"info\",\n        \"usr.id\": \"ID\",\n        \"usr.region\": \"europe-west\",\n        \"version\": \"1.1.2\",\n        \"version.build\": \"9854\"\n    },\n```\n\n\n## Stargazers over time\n\n[![Stargazers over time](https://starchart.cc/userbradley/BeReal.svg)](https://starchart.cc/userbradley/BeReal)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fuserbradley%2Fbereal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fuserbradley%2Fbereal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fuserbradley%2Fbereal/lists"}