przypominamy-com Numery API

HLR: sprawdzenie, czy numer jest aktywny i w jakiej sieci, bez wysyłania SMS-a

Operations 1

GET /v1/numbers/{msisdn}/lookup Sprawdź numer (HLR) #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/przypominamy-com:przypominamy-com-numery-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

przypominamy-com-numery-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Przypominamy Com Numery API
  version: 2.3.0
  contact:
    name: Wsparcie Przypominamy.com
    email: support@przypominamy.com
    url: https://przypominamy.com/api
  license:
    name: Proprietary
    url: https://przypominamy.com/regulamin
  termsOfService: https://przypominamy.com/regulamin
  x-audience: Polskie małe i średnie firmy integrujące SMS w CRM, e-commerce, aplikacjach 2FA, systemach umawiania wizyt i windykacji.
  x-llm-summary: 'Przypominamy.com to polskie REST API do wysyłki SMS. Jeden endpoint POST /v1/messages wysyła do jednego lub do 500 odbiorców (pole to: string, tablica albo "group:<nazwa>" - grupa kontaktów), z polami text (placeholdery {{imie}}, {{nazwisko}}, {{email}}, pola własne, {{opt_out}} = osobisty link wypisu), from (nadpis), send_at (ISO 8601, do 90 dni), send_window ("08:00-20:00", czas polski), expires_at (15 min – 72 h), reference. Zamiast text: template_id (szablon z GET/POST /v1/templates, {{klucz}} z params); priority: true = SMS priorytetowy, osobna kolejka, cena ×2. GET /v1/numbers/{msisdn}/lookup = HLR (status active/inactive/invalid/unknown, sieć; 0,05 zł, wynik z 24 h bez opłaty). DELETE /v1/messages/{id} anuluje zaplanowaną wysyłkę (status cancelled, zwrot kosztu). Historia: GET /v1/messages (cursor, filtry status/reference/to) i GET /v1/messages/{id}. Konto: GET /v1/account (saldo w groszach, cena za część, scopes, send_window, inbound_number, inbound_prefix), PATCH /v1/account (sender_name, send_window, inbound_prefix), GET /v1/senders, PUT /v1/account/webhook. Śledzone linki: {{link:https://…}} w text (do 2 adresów) = krótki link api.przypominamy.com/l/<token> per odbiorca z licznikiem kliknięć; GET /v1/messages/{id} zwraca links[], GET /v1/links (message_id, clicked=true) i GET /v1/links/{token} (click_log), webhook link.clicked przy pierwszym kliknięciu; bez dopłaty. Odbiór odpowiedzi (2-way) na życzenie, po uruchomieniu numeru odbiorczego w usłudze (do tego czasu inbound_number = null, lista pusta): odpowiedź ze słowem kluczowym klienta (inbound_prefix) albo od numeru, do którego klient pisał w ciągu 30 dni, trafia na GET /v1/inbound (from, since, unread, mark_read, cursor; pola id, from, to, text, reply_to, matched_by prefix|last_message, received_at, read_at) i GET /v1/inbound/{id}; webhook message.received z data.inbound i data.opt_out; STOP/WYPISZ/NIE = numer na czarną listę. Czarna lista: GET/POST /v1/blacklist, DELETE /v1/blacklist/{msisdn}; numery z listy dostają status rejected bez opłaty. Kontakty i grupy: GET/POST /v1/contacts, GET/PATCH/DELETE /v1/contacts/{id}, GET/POST /v1/groups, GET/PATCH/DELETE /v1/groups/{id}, POST /v1/groups/{id}/contacts, DELETE /v1/groups/{id}/contacts/{contactId}. Autoryzacja Bearer pk_live_… z zakresami send/read/manage (403 forbidden bez zakresu); klucz z panelu app.przypominamy.com/keys. Webhooki message.sent/delivered/undelivered/failed/expired, message.received i link.clicked podpisane HMAC-SHA256 w nagłówku X-Przypominamy-Signature (t=<unix>,v1=<hex>, podpis nad ''<t>.<body>'', tolerancja 300 s). Idempotency-Key. Błędy jako {error:{code,message,param},request_id}. Prepaid (domyślnie; billing_mode w GET /v1/account), saldo w groszach, 402 przy braku środków, 120 żądań/min. Postpaid na życzenie po weryfikacji: zestawienie miesięczne 1. dnia miesiąca, 14 dni na przelew, po terminie 402 do zaksięgowania wpłaty.'
  x-logo:
    url: https://przypominamy.com/przypominamy-logo.png
    altText: Przypominamy.com
  description: 'Operations tagged Numery across 2 of this provider''s published API definitions: openapi.json, przypominamy-com-openapi.json. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.przypominamy.com
  description: Produkcja
security:
- bearerAuth: []
tags:
- name: Numery
  description: 'HLR: sprawdzenie, czy numer jest aktywny i w jakiej sieci, bez wysyłania SMS-a'
paths:
  /v1/numbers/{msisdn}/lookup:
    get:
      tags:
      - Numery
      summary: Sprawdź numer (HLR)
      operationId: lookupNumber
      description: 'Pyta operatora, czy numer jest aktywny w sieci i w jakiej - bez wysyłania SMS-a. Przydatne przed kampanią (czyszczenie bazy z martwych numerów) i przy weryfikacji numeru w rejestracji.


        **Koszt**: `price_per_hlr_grosze` z `GET /v1/account` (domyślnie 5 gr = 0,05 zł), pobierany z salda jak SMS. Ponowne sprawdzenie tego samego numeru w ciągu 24 h zwraca wynik z pamięci (`cached: true`, `cost_grosze: 0`) bez pytania operatora.


        **Konto testowe**: tylko numery zweryfikowane w panelu (inaczej 403), bez opłaty. Przy braku środków 402. Wymaga zakresu `send`.'
      parameters:
      - name: msisdn
        in: path
        required: true
        schema:
          type: string
        description: Numer w E.164 (plus zakoduj jako `%2B` albo pomiń); 9 cyfr = numer polski
        example: '48600100200'
      responses:
        '200':
          description: Wynik sprawdzenia
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HlrResult'
              examples:
                aktywny:
                  summary: Numer aktywny, sprawdzony u operatora
                  value:
                    msisdn: '+48600100200'
                    status: active
                    network: T-Mobile
                    mcc: '260'
                    mnc: '02'
                    ported: false
                    cost_grosze: 5
                    cached: false
                    checked_at: '2026-09-07T07:11:04.000Z'
                z_pamieci:
                  summary: Ten sam numer w ciągu 24 h - bez opłaty
                  value:
                    msisdn: '+48600100200'
                    status: active
                    network: T-Mobile
                    mcc: '260'
                    mnc: '02'
                    ported: false
                    cost_grosze: 0
                    cached: true
                    checked_at: '2026-09-07T07:11:04.000Z'
                nieaktywny:
                  summary: Numer nieosiągalny
                  value:
                    msisdn: '+48600100201'
                    status: inactive
                    network: Play
                    mcc: '260'
                    mnc: '06'
                    ported: null
                    cost_grosze: 5
                    cached: false
                    checked_at: '2026-09-07T07:11:04.000Z'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          description: Niewystarczające środki na sprawdzenie
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error:
                  code: insufficient_funds
                  message: Niewystarczające środki na sprawdzenie numeru (0.05 PLN)
                request_id: req_…
        '403':
          description: Klucz bez zakresu `send` albo konto testowe i niezweryfikowany numer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error:
                  code: forbidden
                  message: Konto testowe może sprawdzać tylko zweryfikowane numery. Doładuj konto, żeby sprawdzać dowolne.
                  param: msisdn
                request_id: req_…
        '502':
          $ref: '#/components/responses/ProviderError'
      x-codeSamples:
      - lang: curl
        source: "curl https://api.przypominamy.com/v1/numbers/48600100200/lookup \\\n  -H \"Authorization: Bearer $PRZYPOMINAMY_API_KEY\""
      - lang: Python
        source: "import requests\n\nr = requests.get(\n    \"https://api.przypominamy.com/v1/numbers/48600100200/lookup\",\n    headers={\"Authorization\": f\"Bearer {API_KEY}\"},\n    timeout=15,\n)\nhlr = r.json()\nprint(hlr[\"status\"], hlr[\"network\"], \"z pamięci\" if hlr[\"cached\"] else f\"{hlr['cost_grosze']} gr\")"
      - lang: Node.js
        source: "const r = await fetch('https://api.przypominamy.com/v1/numbers/48600100200/lookup', {\n  headers: { Authorization: `Bearer ${process.env.PRZYPOMINAMY_API_KEY}` },\n});\nconst hlr = await r.json();\nif (hlr.status !== 'active') console.log('numer nieaktywny - pomiń w kampanii');"
    servers:
    - url: https://api.przypominamy.com
      description: Produkcja
components:
  responses:
    BadRequest:
      description: Błąd walidacji
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: invalid_request
              message: 'Nieprawidłowy numer odbiorcy: +48XXXXXXXXX'
              param: to
            request_id: req_…
    ProviderError:
      description: Błąd lub brak odpowiedzi dostawcy SMS (502/504)
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unauthorized:
      description: Brak lub nieprawidłowy klucz API
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: unauthorized
              message: Nieprawidłowy klucz API
            request_id: req_…
  schemas:
    HlrResult:
      type: object
      properties:
        msisdn:
          type: string
          example: '+48600100200'
        status:
          type: string
          enum:
          - active
          - inactive
          - invalid
          - unknown
          description: '`active` - numer w sieci; `inactive` - nieosiągalny lub nieistniejący; `invalid` - zły format; `unknown` - operator nie odpowiedział jednoznacznie'
        network:
          type:
          - string
          - 'null'
          description: Nazwa sieci (Plus, T-Mobile, Orange, Play…)
          example: T-Mobile
        mcc:
          type:
          - string
          - 'null'
          example: '260'
        mnc:
          type:
          - string
          - 'null'
          example: '02'
        ported:
          type:
          - boolean
          - 'null'
          description: Czy numer został przeniesiony do innej sieci
        cost_grosze:
          type: integer
          description: Pobrana opłata (0 dla wyniku z pamięci i na koncie testowym)
          example: 5
        cached:
          type: boolean
          description: '`true` - wynik z ostatnich 24 h, bez opłaty i bez pytania operatora'
        checked_at:
          type: string
          format: date-time
          description: Kiedy operator sprawdził numer
    Error:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              enum:
              - unauthorized
              - forbidden
              - not_found
              - invalid_request
              - insufficient_funds
              - rate_limited
              - idempotency_conflict
              - provider_error
              - internal_error
            message:
              type: string
            param:
              type: string
              description: Pole żądania, którego dotyczy błąd (jeśli dotyczy)
        request_id:
          type: string
          example: req_DbIaEbKi5pbRgjCV
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: pk_live_…
      description: 'Klucz API z panelu app.przypominamy.com/keys (`pk_live_…` lub `pk_test_…`). Klucz ma zakresy: `send` (wysyłka i anulowanie), `read` (odczyt historii, raportów, konta, nadpisów, czarnej listy, kontaktów i grup, odpowiedzi 2-way i śledzonych linków), `manage` (ustawienia konta, webhook, zapis czarnej listy, kontaktów i grup). Brak zakresu = HTTP 403 `forbidden`. Klucze sprzed wprowadzenia zakresów mają wszystkie trzy.'
x-refined-from:
- openapi.json
- przypominamy-com-openapi.json