Αναφορά API του Entagl
Το API του Entagl επιτρέπει στο δικό σας λογισμικό να δουλεύει με ένα workspace του Entagl: επαφές, συνομιλίες, μηνύματα, κρατήσεις, υπενθυμίσεις, παραγγελίες, προϊόντα, κλήσεις AI και καμπάνιες. Τα webhooks ειδοποιούν τα συστήματά σας τη στιγμή που συμβαίνει κάτι. Είναι το ίδιο API που χρησιμοποιεί η εφαρμογή Entagl για το Make.
Βασικό URL
https://api.entagl.com/api/v1Τα αιτήματα και οι αποκρίσεις είναι JSON μέσω HTTPS. Τα ονόματα των πεδίων είναι σε snake_case. Τα ID είναι ακέραιοι αριθμοί, εκτός αν ένα endpoint ορίζει κάτι άλλο. Οι ώρες είναι strings ISO 8601 και οι αποκρίσεις χρησιμοποιούν UTC.
Έλεγχος ταυτότητας
Στείλτε ένα token με κάθε αίτημα στο header Authorization: Authorization: Bearer <token>. Λειτουργούν δύο είδη token:
Κλειδί API
Για τον κώδικα του δικού σας server. Δημιουργήστε ένα στην εφαρμογή Entagl, στο Ρυθμίσεις → API Keys. Τα κλειδιά ξεκινούν με ai_. Ένα κλειδί λειτουργεί στο workspace όπου δημιουργήθηκε και έχει εκεί δικαιώματα ιδιοκτήτη, γι' αυτό κρατήστε το μυστικό και μην το βάζετε ποτέ σε browser ή σε mobile εφαρμογή.
OAuth 2.0 access token
Χρησιμοποιείται από connectors όπως η εφαρμογή Entagl για το Make. Ο χρήστης συνδέεται με τον λογαριασμό του στο Entagl και ο connector ενεργεί εκ μέρους του, με τον ρόλο που έχει στο workspace. Για να φτιάξετε τη δική σας ενσωμάτωση OAuth, επικοινωνήστε στο support@entagl.com.
curl "https://api.entagl.com/api/v1/contacts?limit=2" \
-H "Authorization: Bearer ai_your_api_key"Ένα header που λείπει απαντά 401 unauthenticated. Ένα λάθος ή ανακλημένο κλειδί απαντά 401 invalid_api_key. Ένα ληγμένο OAuth token απαντά 401 invalid_token: ανανεώστε το και δοκιμάστε ξανά.
Workspaces και δικαιώματα
Κάθε αίτημα δουλεύει σε ακριβώς ένα workspace. Ένα API key χρησιμοποιεί πάντα το δικό του workspace. Μια σύνδεση OAuth μπορεί να ανήκει σε περισσότερα workspaces (δικά σας ή όπου συμμετέχετε ως μέλος της ομάδας): στείλτε το header X-Entagl-Workspace με το ID του workspace για να διαλέξετε ένα. Με ένα μόνο workspace το header είναι προαιρετικό. Το GET /me λειτουργεί χωρίς το header και δείχνει κάθε workspace που μπορεί να χρησιμοποιήσει η σύνδεση.
curl "https://api.entagl.com/api/v1/me" \
-H "Authorization: Bearer <oauth_access_token>"
curl "https://api.entagl.com/api/v1/contacts" \
-H "Authorization: Bearer <oauth_access_token>" \
-H "X-Entagl-Workspace: <workspace_id from /me>"Χωρίς το header σε σύνδεση με πολλά workspaces παίρνετε 400 workspace_required. Ένα workspace στο οποίο η σύνδεση δεν έχει πρόσβαση απαντά 403 workspace_forbidden. Ένα ID που ανήκει σε άλλο workspace απαντά πάντα 404 not_found, ποτέ 403.
Κάθε endpoint παρακάτω δείχνει το δικαίωμα που χρειάζεται. Οι ιδιοκτήτες, οι admins και τα API keys περνούν κάθε έλεγχο. Τα μέλη της ομάδας περνούν όταν ο ρόλος τους έχει αυτό το δικαίωμα τικαρισμένο στις ρυθμίσεις ομάδας: contacts, inbox, calendar, orders, business_pages, call_agent, campaigns ή integrations. Χωρίς αυτό, το API απαντά 403 insufficient_permissions.
Αιτήματα και σφάλματα
Στείλτε τα σώματα ως JSON με Content-Type: application/json. Τα περισσότερα endpoints απορρίπτουν με 422 τα άγνωστα πεδία του σώματος, ώστε ένα τυπογραφικό λάθος να μην περνά ποτέ απαρατήρητο. Κάθε σφάλμα έχει την ίδια μορφή: ένα σταθερό code για να διακλαδώνετε τον κώδικά σας, ένα ευανάγνωστο message και, στα σφάλματα επικύρωσης, μια λίστα details που δείχνει κάθε λάθος πεδίο.
{
"error": {
"code": "validation_failed",
"message": "Invalid email address",
"details": [
{ "path": "email", "message": "Invalid email address" }
]
}
}- 400Λανθασμένο αίτημα: μη έγκυρο ID, μη έγκυρος cursor, λείπει το header του workspace.
- 401Το token λείπει, δεν είναι έγκυρο ή έχει λήξει.
- 402Δεν υπάρχουν αρκετά credits για την ενέργεια (για παράδειγμα την αποστολή μιας καμπάνιας).
- 403Έχετε ταυτοποιηθεί, αλλά δεν επιτρέπεται: λείπει δικαίωμα ή πρόσβαση στο workspace.
- 404Δεν βρέθηκε, και για ID που ανήκουν σε άλλο workspace.
- 409Σύγκρουση: διπλό όνομα, λάθος κατάσταση ή σύγκρουση Idempotency-Key.
- 422Η επικύρωση απέτυχε ή ένας επιχει ρηματικός κανόνας απέρριψε την αλλαγή.
- 429Έφτασε το όριο ρυθμού. Δείτε το Retry-After.
- 500 / 502Το Entagl ή το κανάλι μηνυμάτων απέτυχε. Ελέγξτε το αποτέλεσμα πριν ξαναδοκιμάσετε μια εγγραφή.
Οι διαδρομές με την ένδειξη Παλαιά μορφή απόκρισης προηγούνται αυτών των συμβάσεων: επιστρέφουν απλά αντικείμενα ή πίνακες JSON και απαντούν στα περισσότερα σφάλματα ως { "message": "…" }.
Σελιδοποίηση
Τα endpoints που φέρουν την ένδειξη Με σελιδοποίηση επιστρέφουν πρώτα τα νεότερα στοιχεία, σε ένα αντικείμενο λίστας. Ζητήστε έως 100 στοιχεία με limit (προεπιλογή 25). Όταν το has_more είναι true, περάστε το next_cursor ως starting_after για να πάρετε την επόμενη σελίδα. Οι άλλες λίστες επιστρέφουν τα πάντα με μία κλήση, με has_more: false.
{
"object": "list",
"data": [
{
"object": "contact",
"id": 6789,
"first_name": "Jane",
"last_name": "Doe",
"email": "jane@example.com",
"phone": "+15551234567",
"tags": ["vip"]
}
],
"has_more": true,
"next_cursor": "6789"
}curl "https://api.entagl.com/api/v1/contacts?limit=100&starting_after=6789" \
-H "Authorization: Bearer ai_your_api_key"Idempotency
Κάθε POST endpoint στη βασική μορφή δέχεται την κεφαλίδα Idempotency-Key (έως 200 χαρακτήρες). Χρησιμοποιήστε μια μοναδική τιμή ανά ενέργεια, για παράδειγμα ένα UUID. Το Entagl κρατά την πρώτη απάντηση για 24 ώρες: μια επανάληψη με το ίδιο κλειδί και το ίδιο σώμα παίρνει πίσω αυτή την απάντηση με Idempotent-Replayed: true, και τίποτα δεν εκτελείται δύο φορές. Οι διαδρομές με την ένδειξη Παλαιά μορφή απόκρισης λειτουργούν διαφορετικά, δείτε παρακάτω.
curl -X POST "https://api.entagl.com/api/v1/contacts" \
-H "Authorization: Bearer ai_your_api_key" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 4f9c1d2e-order-7781" \
-d '{ "first_name": "Jane", "phone": "+15551234567", "tags": ["vip"] }'- Το ίδιο κλειδί με διαφορετικό σώμα απαντά
409 idempotency_key_reused. - Όσο το πρώτο αίτημα εκτελείται ακόμη, ή αν δεν ολοκληρώθηκε ποτέ, μια νέα προσπάθεια απαντά
409 request_in_progress. Ελέγξτε το αποτέλεσμα και δοκιμάστε ξανά με νέο κλειδί. - Κάθε αποτέλεσμα αποθηκεύεται, και τα σφάλματα μαζί. Για να ξαναδοκιμάσετε ένα αίτημα που απέτυχε, χρησιμοποιήστε νέο κλειδί.
- Τα κλειδιά ισχύουν ανά workspace και ανά διαπιστευτήριο.
Παλαιές διαδρομές. Το POST /messages δέχεται επίσης Idempotency-Key (ή ένα message_id στο σώμα): η επανάληψη ενός μηνύματος που έχει ήδη γίνει δεκτό απαντά 202 με το ίδιο conversationId και δεν επεξεργάζεται δύο φορές, ενώ το ίδιο κλειδί με διαφορετικό σώμα απαντά 409. Το POST /chat δεν έχει προστασία από επαναλήψεις: μια επανάληψη τρέχει ξανά την AI, οπότε ελέγξτε το αποτέλεσμα πριν δοκιμάσετε ξανά.
Όρια ρυθμού
Κάθε workspace μπορεί να κάνει 120 αιτήματα ανά λεπτό, κοινά για όλα τα API keys και τις συνδέσεις του. Οι αποκρίσεις περιέχουν RateLimit-Limit, RateLimit-Remaining και RateLimit-Reset (δευτερόλεπτα μέχρι να μηδενιστεί το παράθυρο). Αν ξεπεράσετε το όριο, παίρνετε 429 rate_limited με header Retry-After: περιμένετε τόσα δευτερόλεπτα και δοκιμάστε ξανά. Οι παλαιές διαδρομές του καναλιού API δεν προσμετρώνται σε αυτό το όριο.