Read invitation status

Try it in the sandbox

Ask what happened to the invitations you created — outstanding, accepted, expired or revoked — by your own reference, your batch key, the email, or our code. Poll it on whatever schedule suits your reconciliation.

GEThttps://kicbak.co/api/third-party/v1/kicbak/invites

Authentication

Every request needs a bearer token. You only ever see invitations your own organisation created — that holds for every lookup, including code, which is our identifier rather than yours.

Headers

FieldTypeRequiredDescription
AuthorizationstringrequiredBearer token obtained from POST /api/third-party/v1/auth/token, e.g. "Bearer eyJhbGci...".

Query parameters

FieldTypeRequiredDescription
referencestringoptionalYour own identifier for one invitation, as you supplied it. The most direct way to ask about a single invitation.
requestIdstringoptionalThe batch key you sent when creating invitations. Returns every invitation created under it.
emailstringoptionalThe address the invitation was sent to. Case-insensitive.
codestringoptionalOur invite code. Only ever returns invitations you created.
statestringoptionalOne of "outstanding", "accepted", "expired", "revoked". Narrows to that state.
limitnumberoptionalHow many to return, 1–200. Defaults to 50. Above 200 is rejected, not silently reduced.
cursorstringoptionalPass the nextCursor from the previous response for the following page. Omit for the first.

Code examples

bash
# One invitation, by your own reference
curl -X GET "https://kicbak.co/api/third-party/v1/kicbak/invites?reference=booking-88213" \
  -H "Authorization: Bearer YOUR_TOKEN"

# Everything still outstanding, 100 at a time
curl -X GET "https://kicbak.co/api/third-party/v1/kicbak/invites?state=outstanding&limit=100" \
  -H "Authorization: Bearer YOUR_TOKEN"

Responses

Every response is JSON with a status field (1 success, 0 failure). Failures also carry a code your error handler can branch on — it never changes if we reword message.

json
{
  "status": 1,
  "message": "1 invitation retrieved",
  "data": {
    "invites": [
      {
        "code": "K7XQ2M9P",
        "reference": "booking-88213",
        "requestId": "batch-2026-08-19-0001",
        "state": "accepted",
        "status": "GRANTED",
        "invitedEmail": "ada@example.com",
        "invitedName": "Ada",
        "deliveryMethod": "EMAIL",
        "rewardSpecKind": "FIXED_KIC",
        "rewardKicAmount": 350,
        "resolvedKicAmount": 350,
        "createdAt": "2026-08-19T10:00:00.000Z",
        "expiresAt": null,
        "acceptedAt": "2026-08-19T14:22:11.000Z"
      }
    ],
    "nextCursor": null
  }
}

Error reference

StatusCodeMeaning
400A query parameter is out of range — e.g. a limit above 200. The message names it.
401UNAUTHORIZEDNo readable credential, or a token that doesn't decode/validate.
401TOKEN_EXPIREDToken aged out. Re-exchange the same client_key/client_secret and retry.
401CREDENTIAL_ROTATEDThis token was minted under a secret that has since been rotated. Exchange your new secret.
401CREDENTIAL_EXPIREDThe credential itself is past its own expiry — re-exchanging will not help; request a new credential.
401CLIENT_INACTIVEThe client has been deactivated.
403NOT_ORGANIZATIONClient is not organisation-owned — only organisation clients can call this endpoint.
503SANDBOX_UNAVAILABLEYou are using a sandbox credential and the sandbox environment is temporarily unavailable on our side. Retry shortly; production credentials are unaffected.
429More than the configured hourly limit (default 600) from this client.
500INTERNAL_ERRORUnexpected server error. Safe to retry.