Skip to content

API reference

The complete Authevo REST API — 76 endpoints, generated from our OpenAPI specification. Every request needs a Bearer secret key (sk_…) unless noted.

Base URL: https://api.authevo.dev

OTP

POST/v1/otp/send

Request body

{
  "type": "object",
  "required": [
    "phone"
  ],
  "properties": {
    "phone": {
      "type": "string",
      "pattern": "^\\+[1-9]\\d{6,14}$"
    }
  },
  "additionalProperties": false
}

Responses

200

{
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "message_id": {
          "type": "string"
        },
        "status": {
          "type": "string"
        },
        "expires_in": {
          "type": "number"
        }
      }
    }
  }
}

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}
POST/v1/otp/telegram-link

Request body

{
  "type": "object",
  "required": [
    "phone"
  ],
  "properties": {
    "phone": {
      "type": "string",
      "pattern": "^\\+[1-9]\\d{6,14}$"
    }
  },
  "additionalProperties": false
}

Responses

200

{
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "telegram_bot_url": {
          "type": "string"
        },
        "expires_in": {
          "type": "number"
        }
      }
    }
  }
}

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}
POST/v1/otp/deliver

Request body

{
  "type": "object",
  "required": [
    "phone",
    "code"
  ],
  "properties": {
    "phone": {
      "type": "string",
      "pattern": "^\\+[1-9]\\d{6,14}$"
    },
    "code": {
      "type": "string",
      "pattern": "^\\d{6}$"
    }
  },
  "additionalProperties": false
}

Responses

200

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}
POST/v1/otp/verify

Request body

{
  "type": "object",
  "required": [
    "phone",
    "code"
  ],
  "properties": {
    "phone": {
      "type": "string",
      "pattern": "^\\+[1-9]\\d{6,14}$"
    },
    "code": {
      "type": "string",
      "pattern": "^\\d{6}$"
    }
  },
  "additionalProperties": false
}

Responses

200

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}
GET/v1/otp/status/{message_id}

Parameters

  • message_id (path, required) — string

Responses

200

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}

TOTP (authenticator apps)

POST/v1/totp/enroll

Request body

{
  "type": "object",
  "required": [
    "phone"
  ],
  "properties": {
    "phone": {
      "type": "string",
      "pattern": "^\\+[1-9]\\d{6,14}$"
    },
    "replace": {
      "type": "boolean"
    }
  },
  "additionalProperties": false
}

Responses

200

{
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "secret": {
          "type": "string"
        },
        "otpauth_url": {
          "type": "string"
        },
        "qr_code": {
          "type": "string"
        },
        "already_enrolled": {
          "type": "boolean"
        }
      }
    }
  }
}

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}
POST/v1/totp/disable

Request body

{
  "type": "object",
  "required": [
    "phone"
  ],
  "properties": {
    "phone": {
      "type": "string",
      "pattern": "^\\+[1-9]\\d{6,14}$"
    }
  },
  "additionalProperties": false
}

Responses

200

{
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "disabled": {
          "type": "boolean"
        }
      }
    }
  }
}

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}
POST/v1/totp/verify

Request body

{
  "type": "object",
  "required": [
    "phone",
    "code"
  ],
  "properties": {
    "phone": {
      "type": "string",
      "pattern": "^\\+[1-9]\\d{6,14}$"
    },
    "code": {
      "type": "string",
      "pattern": "^\\d{6}$"
    }
  },
  "additionalProperties": false
}

Responses

200

{
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "verified": {
          "type": "boolean"
        },
        "attempts_remaining": {
          "type": "integer"
        },
        "first_confirm": {
          "type": "boolean"
        }
      }
    }
  }
}

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}

Account & WhatsApp

POST/v1/clients/register

Request body

{
  "type": "object",
  "properties": {
    "email": {
      "type": "string",
      "pattern": "^[a-zA-Z0-9._%+\\-]+@[a-zA-Z0-9.\\-]+\\.[a-zA-Z]{2,}$"
    },
    "password": {
      "type": "string",
      "minLength": 8
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "phone": {
      "type": "string",
      "pattern": "^\\+[1-9]\\d{6,14}$"
    },
    "company": {
      "type": "string",
      "maxLength": 120
    },
    "turnstile_token": {
      "type": "string",
      "maxLength": 4096
    }
  },
  "required": [
    "email",
    "password",
    "name",
    "phone"
  ],
  "additionalProperties": false
}

Responses

200

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}
POST/v1/clients/login

Request body

{
  "type": "object",
  "required": [
    "email",
    "password"
  ],
  "properties": {
    "email": {
      "type": "string",
      "pattern": "^[a-zA-Z0-9._%+\\-]+@[a-zA-Z0-9.\\-]+\\.[a-zA-Z]{2,}$"
    },
    "password": {
      "type": "string",
      "minLength": 8
    }
  },
  "additionalProperties": false
}

Responses

200

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}
POST/v1/clients/logout

Responses

200

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}
PATCH/v1/clients/profile

Request body

{
  "type": "object",
  "minProperties": 1,
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "phone": {
      "type": "string",
      "pattern": "^\\+[1-9]\\d{6,14}$"
    },
    "company": {
      "type": "string",
      "maxLength": 120
    }
  },
  "additionalProperties": false
}

Responses

200

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}
POST/v1/clients/signup-secret

Responses

200

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}
POST/v1/clients/session/refresh

Responses

200

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}
POST/v1/clients/keys/rotate

Responses

200

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}
GET/v1/clients/keys

Responses

200

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}
POST/v1/clients/keys

Request body

{
  "type": "object",
  "required": [
    "name"
  ],
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 40
    },
    "mode": {
      "type": "string",
      "enum": [
        "live",
        "test"
      ],
      "default": "live"
    }
  },
  "additionalProperties": false
}

Responses

200

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}
DELETE/v1/clients/keys/{id}

Parameters

  • id (path, required) — string

Responses

200

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}
POST/v1/clients/webhook-secret/rotate

Responses

200

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}
POST/v1/clients/connect-whatsapp

Request body

{
  "type": "object",
  "required": [
    "phone_number_id",
    "access_token"
  ],
  "properties": {
    "phone_number_id": {
      "type": "string",
      "pattern": "^[0-9]{1,20}$"
    },
    "access_token": {
      "type": "string",
      "minLength": 1
    },
    "waba_id": {
      "type": "string",
      "pattern": "^[0-9]{1,20}$"
    },
    "display_name": {
      "type": "string"
    }
  },
  "additionalProperties": false
}

Responses

200

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}
POST/v1/clients/waba/embedded-signup

Request body

{
  "type": "object",
  "required": [
    "code",
    "waba_id",
    "phone_number_id"
  ],
  "properties": {
    "code": {
      "type": "string",
      "minLength": 1,
      "maxLength": 2048
    },
    "waba_id": {
      "type": "string",
      "pattern": "^[0-9]{1,20}$"
    },
    "phone_number_id": {
      "type": "string",
      "pattern": "^[0-9]{1,20}$"
    }
  },
  "additionalProperties": false
}

Responses

200

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}
GET/v1/clients/waba/details

Responses

200

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}
POST/v1/clients/waba/template/check

Responses

200

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}
POST/v1/clients/waba/template/create

Responses

200

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}
POST/v1/clients/waba/disconnect

Responses

200

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}
GET/v1/clients/me

Responses

200

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}
PATCH/v1/clients/settings

Request body

{
  "type": "object",
  "minProperties": 1,
  "properties": {
    "webhook_url": {
      "type": "string",
      "pattern": "^https://[^\\s]+$"
    },
    "spend_cap_hourly": {
      "type": [
        "number",
        "null"
      ],
      "minimum": 0
    }
  },
  "additionalProperties": false
}

Responses

200

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}
GET/v1/clients/analytics

Parameters

  • period (query) — integer, min 1, max 365

Responses

200

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}
GET/v1/clients/analytics/timeseries

Parameters

  • period (query) — integer, min 1, max 365

Responses

200

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}
GET/v1/clients/analytics/funnel

Parameters

  • period (query) — integer, min 1, max 365

Responses

200

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}
GET/v1/clients/analytics/channels

Parameters

  • period (query) — integer, min 1, max 365

Responses

200

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}
GET/v1/clients/otps/recent

Parameters

  • limit (query) — integer, min 1, max 50

Responses

200

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}
GET/v1/clients/otps

Parameters

  • limit (query) — integer, min 1, max 100
  • before (query) — string
  • status (query) — sent | verified | failed | expired
  • channel (query) — whatsapp | telegram
  • mode (query) — live | test
  • from (query) — string
  • to (query) — string

Responses

200

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}
GET/v1/clients/totp/log

Parameters

  • limit (query) — integer, min 1, max 100
  • before (query) — string
  • status (query) — verified | failed
  • mode (query) — live | test

Responses

200

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}
GET/v1/clients/transactions

Parameters

  • limit (query) — integer, min 1, max 100
  • before (query) — string

Responses

200

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}

Auth (social & email)

GET/v1/auth/{provider}/start

Parameters

  • provider (path, required) — string

Responses

200

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}
GET/v1/auth/{provider}/callback

Parameters

  • provider (path, required) — string

Responses

200

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}
POST/v1/auth/magic-link

Request body

{
  "type": "object",
  "required": [
    "email"
  ],
  "properties": {
    "email": {
      "type": "string",
      "pattern": "^[a-zA-Z0-9._%+\\-]+@[a-zA-Z0-9.\\-]+\\.[a-zA-Z]{2,}$"
    }
  },
  "additionalProperties": false
}

Responses

200

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}
POST/v1/auth/password/forgot

Request body

{
  "type": "object",
  "required": [
    "email"
  ],
  "properties": {
    "email": {
      "type": "string",
      "pattern": "^[a-zA-Z0-9._%+\\-]+@[a-zA-Z0-9.\\-]+\\.[a-zA-Z]{2,}$"
    }
  },
  "additionalProperties": false
}

Responses

200

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}
POST/v1/auth/password/reset

Request body

{
  "type": "object",
  "required": [
    "token",
    "password"
  ],
  "properties": {
    "token": {
      "type": "string",
      "minLength": 1,
      "maxLength": 256
    },
    "password": {
      "type": "string",
      "minLength": 8
    }
  },
  "additionalProperties": false
}

Responses

200

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}
GET/v1/auth/verify-email

Responses

200

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}
POST/v1/auth/verify-email/resend

Responses

200

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}

Billing & top-ups

POST/v1/billing/topup

Request body

{
  "type": "object",
  "required": [
    "amount_usd"
  ],
  "additionalProperties": false,
  "properties": {
    "amount_usd": {
      "type": "number",
      "exclusiveMinimum": 0
    }
  }
}

Responses

200

{
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "url": {
          "type": "string"
        },
        "provider_ref": {
          "type": "string"
        },
        "amount_usd": {
          "type": "number"
        },
        "surcharge_usd": {
          "type": "number"
        },
        "charge_usd": {
          "type": "number"
        }
      }
    }
  }
}

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}
POST/v1/billing/topup/polar

Request body

{
  "type": "object",
  "required": [
    "amount_usd"
  ],
  "additionalProperties": false,
  "properties": {
    "amount_usd": {
      "type": "number",
      "exclusiveMinimum": 0
    }
  }
}

Responses

200

{
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "url": {
          "type": "string"
        },
        "provider_ref": {
          "type": "string"
        },
        "amount_usd": {
          "type": "number"
        },
        "surcharge_usd": {
          "type": "number"
        },
        "charge_usd": {
          "type": "number"
        }
      }
    }
  }
}

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}
POST/v1/billing/manual-topup

Request body

{
  "type": "object",
  "required": [
    "amount_usd"
  ],
  "additionalProperties": false,
  "properties": {
    "amount_usd": {
      "type": "number",
      "exclusiveMinimum": 0
    }
  }
}

Responses

200

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}
GET/v1/billing/manual-topup/quote

Parameters

  • amount_usd (query, required) — number

Responses

200

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}
POST/v1/billing/manual-topup/{id}/cancel

Parameters

  • id (path, required) — string

Responses

200

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}
POST/v1/billing/manual-topup/{id}/proof-url

Parameters

  • id (path, required) — string

Responses

200

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}
POST/v1/billing/manual-topup/{id}/submit

Parameters

  • id (path, required) — string

Request body

{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "txn_id": {
      "type": "string",
      "maxLength": 120
    },
    "proof_uploaded": {
      "type": "boolean"
    }
  }
}

Responses

200

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}
GET/v1/billing/manual-topups

Responses

200

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}

Webhooks

GET/v1/webhooks/meta

Responses

200

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}
POST/v1/webhooks/meta

Responses

200

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}
POST/v1/webhooks/telegram

Responses

200

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}
POST/v1/webhooks/payment

Responses

200

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}
POST/v1/webhooks/payment/polar

Responses

200

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}

Admin

POST/v1/admin/safety-floor-check

Parameters

  • x-admin-secret (header, required) — string
  • x-admin-actor (header) — string

Responses

200

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}
POST/v1/admin/webhooks/retry-deliveries

Parameters

  • x-admin-secret (header, required) — string
  • x-admin-actor (header) — string

Responses

200

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}
GET/v1/admin/stats

Parameters

  • x-admin-secret (header, required) — string
  • x-admin-actor (header) — string

Responses

200

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}
POST/v1/admin/credits/grant

Parameters

  • x-admin-secret (header, required) — string
  • x-admin-actor (header) — string

Request body

{
  "type": "object",
  "required": [
    "amount_usd",
    "reference"
  ],
  "additionalProperties": false,
  "anyOf": [
    {
      "required": [
        "client_id"
      ]
    },
    {
      "required": [
        "email"
      ]
    }
  ],
  "properties": {
    "client_id": {
      "type": "string",
      "minLength": 1
    },
    "email": {
      "type": "string",
      "minLength": 3
    },
    "amount_usd": {
      "type": "number",
      "exclusiveMinimum": 0,
      "maximum": 10000
    },
    "reason": {
      "type": "string",
      "maxLength": 200
    },
    "reference": {
      "type": "string",
      "minLength": 8,
      "maxLength": 200
    }
  }
}

Responses

200

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}
GET/v1/admin/reconciliation

Parameters

  • stale_minutes (query) — integer, min 0, max 10080
  • limit (query) — integer, min 1, max 500
  • x-admin-secret (header, required) — string
  • x-admin-actor (header) — string

Responses

200

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}
GET/v1/admin/central-waba/killswitch

Parameters

  • x-admin-secret (header, required) — string
  • x-admin-actor (header) — string

Responses

200

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}
POST/v1/admin/central-waba/killswitch

Parameters

  • x-admin-secret (header, required) — string
  • x-admin-actor (header) — string

Request body

{
  "type": "object",
  "required": [
    "engaged"
  ],
  "additionalProperties": false,
  "properties": {
    "engaged": {
      "type": "boolean"
    }
  }
}

Responses

200

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}
GET/v1/admin/free-trial/killswitch

Parameters

  • x-admin-secret (header, required) — string
  • x-admin-actor (header) — string

Responses

200

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}
POST/v1/admin/free-trial/killswitch

Parameters

  • x-admin-secret (header, required) — string
  • x-admin-actor (header) — string

Request body

{
  "type": "object",
  "required": [
    "engaged"
  ],
  "additionalProperties": false,
  "properties": {
    "engaged": {
      "type": "boolean"
    }
  }
}

Responses

200

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}
GET/v1/admin/playground/killswitch

Parameters

  • x-admin-secret (header, required) — string
  • x-admin-actor (header) — string

Responses

200

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}
POST/v1/admin/playground/killswitch

Parameters

  • x-admin-secret (header, required) — string
  • x-admin-actor (header) — string

Request body

{
  "type": "object",
  "required": [
    "engaged"
  ],
  "additionalProperties": false,
  "properties": {
    "engaged": {
      "type": "boolean"
    }
  }
}

Responses

200

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}
GET/v1/admin/manual-topups

Parameters

  • status (query) — open | pending | submitted | approved | rejected
  • limit (query) — integer, min 1, max 500
  • q (query) — string
  • after_created_at (query) — string
  • after_id (query) — string
  • x-admin-secret (header, required) — string
  • x-admin-actor (header) — string

Responses

200

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}
POST/v1/admin/manual-topups/{id}/approve

Parameters

  • id (path, required) — string
  • x-admin-secret (header, required) — string
  • x-admin-actor (header) — string

Request body

{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "reason": {
      "type": "string",
      "maxLength": 500
    }
  }
}

Responses

200

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}
POST/v1/admin/manual-topups/{id}/reject

Parameters

  • id (path, required) — string
  • x-admin-secret (header, required) — string
  • x-admin-actor (header) — string

Request body

{
  "type": "object",
  "required": [
    "reason"
  ],
  "additionalProperties": false,
  "properties": {
    "reason": {
      "type": "string",
      "minLength": 1,
      "maxLength": 500
    }
  }
}

Responses

200

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}

Health

GET/health

Responses

200

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}
GET/health/channels

Responses

200

default — Error response (standard envelope). `code` is a stable machine-readable string — e.g. VALIDATION_ERROR (400), UNAUTHORIZED / INVALID_API_KEY (401), RATE_LIMIT_EXCEEDED (429), INTERNAL_ERROR (500); `message` is human-readable.

{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable, machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description."
        }
      }
    }
  }
}