Integrate
This guide is for anyone who wants to read or write Presente data from another system, such as an academic system: bring in students, classes and activities, or query attendance. The API is the same one the app uses.
What exists and what does not
- Exists: an HTTP API with JSON bodies, described in the API reference and in the OpenAPI file.
- Authentication: sign-in of a person (email and password) that returns a short-lived access token and a refresh token. See Authentication.
- Does not exist: long-lived API keys, webhooks (Presente does not notify your system; you poll), a developer sign-up portal, or a test environment separate from the demo.
- Who can do what depends on the role of the account you use: see Permissions. You can only read and change what that account could already do in the app.
Addresses
| Environment | API base | What for |
|---|---|---|
| Production | https://app.presente.app.br/api | Real data of your institution. |
| Demo | https://demo.presente.app.br/api | Fictional data, restored every Sunday early morning (whatever you change there does not stay). Good for testing your code. |
The examples use $API for the base and $TOKEN for the access token:
export API=https://demo.presente.app.br/apiCalls made straight from a browser, from another site, are not allowed (CORS). Integrate from a server of yours.
Where to start
- Authentication: get and renew the token.
- Permissions: which role the integration account needs.
- Errors and Pagination and limits: how the API answers when something goes wrong and how to list many items.
- The journeys, step by step: students, classes and activities.
Stability
The routes described here are the ones the app uses. They are internal and carry no stability guarantee: fields can be added, and a route can change when the app changes. Adding fields to a response is not treated as a breaking change, so ignore fields you do not know. If your integration needs a stronger guarantee, write to contato@presente.app.br.
The OpenAPI file and this reference are generated from the API code, so they reflect the published version.
Sample data
All examples use fictional data (made-up people, emails and identifiers). Never put real personal data in tests on the demo.