VeyqoDEVELOPERS
DocumentationGET List events

Events API

GET/events

List events

Every event Veyqo produced in this environment, newest first. Filter by `type`.

GEThttps://api.veyqo.org/api/v1/eventsTry in console
Use your sandbox environment to start. Understand error codes and payment statuses before handling a live payment.
List events
curl --request GET "https://api.veyqo.org/api/v1/events?per_page=5" \
  --header "Authorization: Bearer $VEYQO_SECRET_KEY" \
  --header "Accept: application/json"
{
  "success": true,
  "data": [
    {
      "id": "evt_01M6EB66SC61Q3RQYAN0693DGM",
      "type": "payment.succeeded",
      "created_at": "2026-11-02T12:00:00+00:00",
      "environment": "sandbox",
      "data": {
        "payment_id": "pay_01M6EB66SC61Q3RQYAN0693DGM",
        "reference": "ORDER-1001",
        "amount": 50000,
        "amount_refunded": 0,
        "currency": "NGN",
        "status": "succeeded",
        "customer": {
          "email": "customer@example.com",
          "name": "Ada Lovelace"
        },
        "provider": {
          "name": "paystack",
          "reference": "provider_reference_example"
        },
        "metadata": {
          "order_id": "1001"
        }
      }
    }
  ],
  "meta": {
    "page": 1,
    "per_page": 25,
    "total": 1,
    "has_more": false
  }
}

Illustrative examples. Replace IDs and environment variables with your own values. Keep secret keys on your server.

Headers

Authorizationstringrequired
Bearer <secret-key>. This key determines your project environment and must stay on your server.
Acceptstringoptional
application/json

Endpoint

GET https://api.veyqo.org/api/v1/events

Server secret key required. Scope: events:read. The key determines the project and environment; no project-selection header is accepted.

Path and query parameters

ParameterLocationRequiredDescription
pagequeryNoPage number, starting at 1.
per_pagequeryNoPage size, default 25 and maximum 100. Maximum 100.
typequeryNoExact supported event type.
payment_idqueryNoVeyqo payment ID, not your order reference.
created_afterqueryNoInclusive creation-time lower bound. Use an ISO 8601 date/time.
created_beforequeryNoInclusive creation-time upper bound. Use an ISO 8601 date/time.

Response fields

idstringrequired
Deduplication key: the same ID as Veyqo-Event-Id.
typestringrequired
Normalized event type; see the webhook guide.
created_atstringrequired
Event creation timestamp. Format: date-time.
environmentstringrequired
Values: sandbox, live.
dataEventDatarequired
Payment snapshot when this event was recorded. Refund events also include refund_id and refund_amount.
data.payment_idstringrequired
Payment ID to retrieve and verify.
data.referencestringrequired
Merchant reference.
data.amountintegerrequired
Original minor-unit amount.
data.amount_refundedintegerrequired
Minor-unit refunded amount.
data.currencystringrequired
See the JSON example.
data.statusstringrequired
Values: created, pending, processing, succeeded, failed, cancelled, refunded, partially_refunded.
data.customerobjectrequired
See the JSON example.
data.customer.emailstringrequired
See the JSON example.
data.customer.namestringoptional
See the JSON example.
data.providerobjectrequired
See the JSON example.
data.provider.namestringrequired
Provider slug.
data.provider.referencestring | nullrequired
Provider reference.
data.metadataobject | arrayrequired
Your non-sensitive JSON metadata. Objects are recommended; do not store secrets or card details.
data.refund_idstringoptional
Present for refund events.
data.refund_amountintegeroptional
Present for refund events, in minor units.
data.refund_statusstringoptional
Present for refund events. Values: pending, succeeded, failed.
data.reasonstring | nulloptional
Present for refund events.
data is an array; meta contains page, per_page, total and has_more. These public API pagination fields use snake_case.

Errors and recovery

CodeHTTPRecoveryRetry policy
INVALID_API_KEY401Use a current kc_test_ or kc_live_ secret key on /api/v1. Use a pk_test_ or pk_live_ publishable key only on browser checkout.After fixing credentials.
INSUFFICIENT_PERMISSION403Grant the required scope or use a suitably scoped key. Dashboard organization roles and staff permissions are separate.After permission changes.
RATE_LIMIT_EXCEEDED429Honor Retry-After, use bounded exponential backoff with jitter, and reduce concurrent requests. Read X-RateLimit headers.Yes, after Retry-After; preserve write idempotency.
METHOD_NOT_ALLOWED405Use the method documented for the endpoint, such as POST for verification and refunds.After fixing the method.
INTERNAL_ERROR500Record X-Request-Id, timestamp and sanitized request context. Reconcile unknown payment outcomes before retrying a write; contact support if it persists.Safe reads: bounded backoff. Writes: reconcile first.
VALIDATION_FAILED422Read error.details when present, correct the named fields and retry only after correction. Validation messages may describe state/capability errors without field details.No automatic retry.