Soy Rappi - Sé un repartidor icon

Soy Rappi courier data API

Rappi, Inc - Delivery · Food Delivery

Soy Rappi is the courier app behind Rappi's food and grocery deliveries. Signing in with an email, SMS or WhatsApp one-time code mints an accessToken and refreshToken; GET /v1/couriers/me/profile returns the rider identity, while the daily-goal and drop-off routes expose earnings progress and per-order delivery fields.

The six calls below map that courier data surface on generalized, illustrative paths — POST /v1/auth/courier/email/verify for login, then profile, daily goal, order drop-off detail, demand heatmap and the active-order feed — using the same field names the app sends and receives.

Soy Rappi (package com.rappi.storekeeper) is Rappi's courier companion: riders go online, take food and grocery orders, follow a delivery timeline, and track what they earn. Behind those screens the app talks to a courier backend over HTTPS — email/SMS/WhatsApp one-time-code login that issues an accessToken and refreshToken, a courier profile with identity and debt, a daily earnings goal, per-order delivery details, a demand heatmap, and the active-order feed grouped by state. The surface below mirrors the shape of those calls on generalized, illustrative paths.

Screenshots

  • Soy Rappi - Sé un repartidor screenshot 1
  • Soy Rappi - Sé un repartidor screenshot 2
  • Soy Rappi - Sé un repartidor screenshot 3
  • Soy Rappi - Sé un repartidor screenshot 4
  • Soy Rappi - Sé un repartidor screenshot 5

API surface

  • Courier email OTP token grant

    POST /v1/auth/courier/email/verify opendata

    Exchanges an email one-time code for the courier Bearer accessToken, refreshToken and nested profile used by every other Soy Rappi call.

    Auth: None (issues tokens). Body carries the one-time code plus the authorization handle returned by the send-code step; every subsequent call uses Bearer accessToken.

    • email
    • auth
    • code
    • deviceInformation
    • accessToken
    • refreshToken
    • profile

    Illustrative example reconstructed from the app's interface — not a live capture.

    POST /v1/auth/courier/email/verify HTTP/1.1
    Content-Type: application/json
    
    {
      "email": "[email protected]",
      "auth": "eyJhbGciOi...",
      "code": "482193",
      "deviceInformation": {"deviceId": "3f2b8c1d-9a1e-4c2b", "os": "android"}
    }
    {
      "accessToken": "eyJhbGciOi...",
      "refreshToken": "d8f1c2...",
      "profile": {
        "id": 1843921,
        "firstName": "Camila",
        "lastName": "Souza",
        "email": "[email protected]",
        "phone": "11987654321"
      }
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • Reconstructed from the app's email sign-in and one-time-code verification flow
    • Field names match the token and profile payload the app stores after login
  • Courier profile

    GET /v1/couriers/me/profile osint

    Reads the signed-in courier's identity, city, vehicle, acceptance rate, debt and bank/card flags that drive the My Profile and home screens.

    Auth: Bearer accessToken from /v1/auth/courier/email/verify

    • id
    • identification
    • firstName
    • lastName
    • phone
    • email
    • country
    • city
    • isActive
    • trusted
    • transportationMethod
    • acceptanceRate
    • average
    • storekeeperDebt
    • hasBankAccount
    • cardActive

    Illustrative example reconstructed from the app's interface — not a live capture.

    GET /v1/couriers/me/profile HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    {
      "id": 1843921,
      "identification": "12345678900",
      "firstName": "Camila",
      "lastName": "Souza",
      "phone": "11987654321",
      "email": "[email protected]",
      "country": "BR",
      "city": "Sao Paulo",
      "isActive": true,
      "trusted": true,
      "transportationMethod": "motorcycle",
      "acceptanceRate": 92,
      "average": "4.8",
      "storekeeperDebt": 0,
      "hasBankAccount": true,
      "cardActive": true
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • Reconstructed from the My Profile and home screens
    • Field names match the courier identity payload the app renders
  • Daily earnings goal

    GET /v1/couriers/{courier_id}/daily-goal openfinance

    Returns the courier's configured daily earnings target versus totalEarned so far, including the allowed goalRange and completion percentage.

    Auth: Bearer accessToken from /v1/auth/courier/email/verify

    • dailyGoal
    • goalRange
    • goalValue
    • totalEarned
    • percentage

    Illustrative example reconstructed from the app's interface — not a live capture.

    GET /v1/couriers/1843921/daily-goal HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    {
      "dailyGoal": {
        "goalRange": {"min": 50, "max": 400},
        "goalValue": 180,
        "totalEarned": 126,
        "percentage": 70
      }
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • Reconstructed from the daily goal card on the home screen
    • Field names match the earnings-target payload the app renders
  • Order delivery detail

    GET /v1/orders/{orderId}/dropoff-detail opendata

    Returns the drop-off envelope for an in-progress order: address, coordinates, recipient, cash-collected flag and evidence type used by the delivery-step screen.

    Auth: Bearer accessToken from /v1/auth/courier/email/verify

    • address
    • location
    • flow
    • additionalInfo
    • billImage
    • isReturn
    • recipientName
    • placeType
    • storekeeperId
    • cashCollected
    • evidenceType

    Illustrative example reconstructed from the app's interface — not a live capture.

    GET /v1/orders/99887766/dropoff-detail HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    {
      "address": "Rua Augusta 1500, Apto 42",
      "location": {"lat": -23.5614, "lng": -46.6558},
      "flow": "STANDARD",
      "additionalInfo": "Leave at reception",
      "billImage": "https://cdn.example/bills/99887766.jpg",
      "isReturn": false,
      "recipientName": "Joao Lima",
      "placeType": "apartment",
      "storekeeperId": 1843921,
      "cashCollected": false,
      "evidenceType": "PHOTO"
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • Reconstructed from the in-delivery step screen
    • Field names match the drop-off payload shown before handing over an order
  • Demand heatmap distribution

    GET /v1/demand/heatmap/config opendata

    Feeds the home-map demand overlay: heatmap radius, refresh interval, experiment treatment flag and the city ids where the layer is enabled.

    Auth: Bearer accessToken from /v1/auth/courier/email/verify

    • treatment
    • radius
    • every
    • version
    • citiesIdsToApply

    Illustrative example reconstructed from the app's interface — not a live capture.

    GET /v1/demand/heatmap/config?lat=-23.5614&lng=-46.6558&radius=1500 HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    {
      "treatment": true,
      "radius": 1500,
      "every": 60,
      "version": "v1",
      "citiesIdsToApply": [1, 4, 9]
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • Reconstructed from the home-map demand overlay
    • Field names match the heatmap configuration payload
  • Active orders by state

    GET /v1/orders/active opendata

    Lists the courier's in-flight order bundles and lagging orders by workflow state so the home screen can resume pickup, in-store and delivery steps.

    Auth: Bearer accessToken from /v1/auth/courier/email/verify

    • laggingOrders
    • orderBundles
    • activeBundles
    • id
    • orderId
    • storeName
    • orderDate
    • total
    • orderType
    • status
    • earnings
    • userId

    Illustrative example reconstructed from the app's interface — not a live capture.

    GET /v1/orders/active HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    {
      "laggingOrders": [],
      "orderBundles": [{
        "id": "bdl_01",
        "orders": [{
          "id": "ord_99887766",
          "orderId": 99887766,
          "storeName": "Burger House Paulista",
          "orderDate": "2026-09-24T18:12:03Z",
          "total": 42.9,
          "orderType": "RESTAURANT",
          "status": "IN_STORE",
          "earnings": 8.5,
          "userId": 552109
        }]
      }],
      "activeBundles": [],
      "isFirebaseActive": true
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • Reconstructed from the home screen's in-flight order list
    • Field names match the order-bundle payload grouped by workflow state

Data categories

  • auth tokens
  • courier profile
  • earnings goals
  • delivery details
  • demand heatmap
  • active orders

Where teams use this data

  • Courier payroll reconciliation

    A fleet-ops bot pulls the daily-goal totalEarned versus goalValue for each courier and matches it against weekly payouts, flagging riders whose percentage stalls below the configured goalRange.

  • Live delivery SLA monitor

    A dispatch dashboard watches the active-orders feed and opens the drop-off detail for each orderId to read recipientName, location and cashCollected, then alerts when an IN_STORE order sits past its ETA.

  • Demand-aware rider positioning

    A routing tool reads the heatmap distribution (radius, every, citiesIdsToApply) together with the courier profile's city and transportationMethod to suggest where motorcycle riders should wait during peak hours.

  • KYC and debt screening

    An onboarding check uses the courier profile identification, hasBankAccount, cardActive and storekeeperDebt fields to decide whether a courier can stay online or must complete bank/card setup first.

Frequently asked questions

How does Soy Rappi authenticate a courier?

The courier requests an email (or SMS/WhatsApp) one-time code, then POSTs email, auth, code and deviceInformation to /v1/auth/courier/email/verify. The response carries accessToken, refreshToken and a nested profile; later calls send Authorization: Bearer accessToken.

Which fields describe a courier's daily earnings target?

GET /v1/couriers/{courier_id}/daily-goal returns dailyGoal with goalRange, goalValue, totalEarned and percentage — the same numbers shown on the in-app daily goal card.

Where does the drop-off address come from?

GET /v1/orders/{orderId}/dropoff-detail returns address, location, recipientName, placeType, cashCollected and evidenceType for the delivery-step screen.

How does the demand heatmap update?

GET /v1/demand/heatmap/config is called with the rider's lat/lng and radius. The payload carries treatment, radius, every (refresh seconds), version and citiesIdsToApply.

Topics

  • soy rappi api
  • rappi courier endpoints
  • courier daily goal
  • rappi delivery detail
  • rappi heatmap api
  • rappi active orders

Need this app's data API integrated?

We deliver scoped integrations for any named app — from USD 500 with source-code handoff, or hosted access billed per call. Tell us the data you need.

Get a quote