Μετάβαση στο περιεχόμενο

Οδηγός προγραμματιστών

Στείλε αναρτήσεις στο Amaposta από τη δική σου ροή περιεχομένου: μεταφόρτωσε πολυμέσα, δημιούργησε μια ανάρτηση για κάθε κανάλι, προγραμμάτισέ την και ενημερώσου όταν δημοσιευτεί.

Έλεγχος ταυτότητας

Δημιούργησε ένα κλειδί API στον πίνακα ελέγχου, στις Ρυθμίσεις, στην ενότητα API και webhook. Τα κλειδιά αρχίζουν με ss_live_, ανήκουν σε έναν χώρο εργασίας και μπορούν να περιορίζονται σε συγκεκριμένα έργα. Στείλε το κλειδί ως διακριτικό bearer σε κάθε αίτημα:

Έλεγχος κλειδιού
curl https://www.amaposta.com/api/v1/me \
  -H "Authorization: Bearer ss_live_…"

Η απάντηση αναφέρει το κλειδί, τα δικαιώματά του και τον χώρο εργασίας. Κάθε κλειδί έχει ένα ή περισσότερα δικαιώματα:

Δικαίωμα πρόσβασηςΕπιτρέπει
content:readΑνάγνωση έργων, καναλιών, αναρτήσεων και πολυμέσων.
content:writeΜεταφόρτωση πολυμέσων και δημιουργία ή επεξεργασία αναρτήσεων.
posts:publishΠρογραμματισμός και δημοσίευση χωρίς έλεγχο. Χωρίς αυτό το δικαίωμα, οι αναρτήσεις πηγαίνουν στα εισερχόμενα ελέγχου σε έργα με εγκρίσεις και παραμένουν πρόχειρα παντού αλλού.

Κάθε κλειδί μπορεί να στέλνει 120 αιτήματα το λεπτό. Πέρα από αυτό το όριο λαμβάνεις 429 με κωδικό rate_limited· περίμενε λίγο και δοκίμασε ξανά.

Έργα και κανάλια

Οι αναρτήσεις ανήκουν σε ένα έργο. Δες τη λίστα έργων στα οποία έχει πρόσβαση το κλειδί σου και μετά τα κανάλια ενός από αυτά. Θα χρειαστείς το αναγνωριστικό ενός καναλιού για να το επιλέξεις ως προορισμό ή να προσαρμόσεις το κείμενό του.

Λίστα έργων και καναλιών
curl https://www.amaposta.com/api/v1/projects \
  -H "Authorization: Bearer $AMAPOSTA_KEY"

curl https://www.amaposta.com/api/v1/projects/$PROJECT_ID/channels \
  -H "Authorization: Bearer $AMAPOSTA_KEY"

Ένα κανάλι έχει provider (youtube, instagram, tiktok, x, facebook, custom ή sandbox), status (active, expiring, needs_reconnect, error ή disabled) και τα είδη αναρτήσεων που supports.

Μεταφόρτωση πολυμέσων

Οι εικόνες και τα βίντεο μεταφορτώνονται μία φορά ανά έργο και μπορούν να χρησιμοποιηθούν σε απεριόριστες αναρτήσεις. Υπάρχουν τρεις τρόποι εισαγωγής.

Απευθείας μεταφόρτωση

Στείλε το αρχείο ως δεδομένα φόρμας multipart σε πεδίο με όνομα file. Ιδανικό για αρχεία έως μερικές εκατοντάδες MB.

POST /api/v1/projects/{project_id}/media
curl https://www.amaposta.com/api/v1/projects/$PROJECT_ID/media \
  -H "Authorization: Bearer $AMAPOSTA_KEY" \
  -F "[email protected]"

Προϋπογεγραμμένη μεταφόρτωση για μεγάλα αρχεία

Ζήτησε ένα URL μεταφόρτωσης, στείλε τα byte απευθείας στον αποθηκευτικό χώρο με PUT και μετά ενημέρωσε το Amaposta ότι ολοκλήρωσες.

Τρία αιτήματα
# 1. Ask for an upload URL. The response is {"media": { … }, "upload_url": "…"}
curl https://www.amaposta.com/api/v1/projects/$PROJECT_ID/media/uploads \
  -H "Authorization: Bearer $AMAPOSTA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"filename": "batch-142.mp4", "content_type": "video/mp4", "size_bytes": 48213844}'

# 2. Upload the bytes to upload_url
curl -X PUT "$UPLOAD_URL" \
  -H "Content-Type: video/mp4" \
  --upload-file batch-142.mp4

# 3. Finish the upload
curl -X POST https://www.amaposta.com/api/v1/media/$MEDIA_ID/complete \
  -H "Authorization: Bearer $AMAPOSTA_KEY"

Εισαγωγή από URL

Δώσε στο Amaposta ένα δημόσιο URL και θα κατεβάσει το αρχείο στο παρασκήνιο. Μπορείς επίσης να παραλείψεις αυτό το βήμα και να δώσεις media_url όταν δημιουργείς την ανάρτηση.

POST /api/v1/projects/{project_id}/media/import
curl https://www.amaposta.com/api/v1/projects/$PROJECT_ID/media/import \
  -H "Authorization: Bearer $AMAPOSTA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://cdn.example.com/batch-142.mp4"}'

Κάθε μεταφόρτωση επιστρέφει ένα αντικείμενο πολυμέσου. Το status περνά από pending σε processing και ready (ή failed, με error). Μετά την επεξεργασία περιέχει width, height, duration_ms και μια μικρογραφία. Έλεγχε περιοδικά το GET /api/v1/media/{id} ή περίμενε το webhook media.ready. Το url που επιστρέφεται είναι υπογεγραμμένο και ισχύει για 12 ώρες.

Δημιουργία ανάρτησης

Το POST /api/v1/projects/{project_id}/posts δημιουργεί μία ανάρτηση με μία παράδοση για κάθε κανάλι. Το Amaposta την προσαρμόζει ανά πλατφόρμα: οι τίτλοι προστίθενται μόνο όπου υπάρχει πεδίο τίτλου, ενώ τα hashtag γίνονται ετικέτες στο YouTube και ενσωματώνονται στο κείμενο αλλού.

Δημιουργία ανάρτησης βίντεο και προσθήκη στην ουρά
curl https://www.amaposta.com/api/v1/projects/$PROJECT_ID/posts \
  -H "Authorization: Bearer $AMAPOSTA_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: episode-142" \
  -d @- <<'JSON'
{
  "kind": "video",
  "title": "How we roast a batch in 12 minutes",
  "description": "From green beans to first crack. We filmed one batch start to finish.",
  "hashtags": ["coffee", "behindthescenes"],
  "media_url": "https://cdn.example.com/batch-142.mp4",
  "cover_url": "https://cdn.example.com/batch-142-cover.jpg",
  "overrides": {
    "<x-channel-id>": {
      "description": "Batch 142 is out: green beans to first crack in 12 minutes."
    },
    "<youtube-channel-id>": {
      "options": { "privacy": "unlisted" }
    }
  },
  "schedule": { "mode": "queue" },
  "external_ref": "episode-142",
  "metadata": {
    "pipeline": { "name": "nightly-cut", "run": "2026-10-17" }
  }
}
JSON

Πεδία

ΠεδίοΤι κάνει
kindtext, image ή video. Υποχρεωτικό.
titleΧρησιμοποιείται από πλατφόρμες με πεδίο τίτλου: YouTube, αναρτήσεις φωτογραφιών TikTok, βίντεο Facebook.
descriptionΗ λεζάντα, η περιγραφή ή το κείμενο της ανάρτησης. Γίνεται επίσης δεκτό ως body, caption ή text.
hashtagsΜια λίστα, με ή χωρίς #.
media_id, media_urlΈνα αναγνωριστικό μεταφορτωμένου πολυμέσου ή ένα δημόσιο URL από το οποίο το Amaposta κατεβάζει το αρχείο για εσένα. Απαραίτητο για αναρτήσεις εικόνας και βίντεο.
cover_media_id, cover_urlΜια εικόνα εξωφύλλου για βίντεο, όπου την υποστηρίζει η πλατφόρμα.
channelsΑναγνωριστικά καναλιών για δημοσίευση. Παράλειψέ το για να χρησιμοποιηθούν όλα τα ενεργά κανάλια του έργου που υποστηρίζουν αυτό το είδος ανάρτησης.
overridesΑλλαγές ανά κανάλι με κλειδί το αναγνωριστικό καναλιού: title, description, hashtags και options πλατφόρμας, όπως το privacy του YouTube.
scheduleΤο mode είναι at (με τιμή at σε μορφή ISO 8601), now ή queue για την επόμενη ελεύθερη θέση δημοσίευσης. Παράλειψέ το για να δημιουργήσεις πρόχειρο.
external_refΤο δικό σου αναγνωριστικό αναφοράς, που επιστρέφεται στην ανάρτηση και στις παραδόσεις Custom API.
metadataJSON ελεύθερης μορφής που αποθηκεύεται με την ανάρτηση. Συμπερίλαβε το "pipeline" για να επισημάνεις το παραγόμενο περιεχόμενο· ο πίνακας ελέγχου το εμφανίζει και τα webhook αναφέρουν την προέλευση ως pipeline.

Η απάντηση είναι η ανάρτηση, με μία εγγραφή στο deliveries ανά κανάλι.

Ασφαλείς επαναλήψεις

Τα δίκτυα χάνουν αιτήματα. Στείλε μια κεφαλίδα Idempotency-Key όταν δημιουργείς ανάρτηση και μια επανάληψη με το ίδιο κλειδί επιστρέφει την ανάρτηση της πρώτης προσπάθειας αντί να δημιουργεί δεύτερη. Χρησιμοποίησε κάτι σταθερό από την πλευρά σου, όπως το αναγνωριστικό μιας εργασίας ή ενός επεισοδίου. Τα κλειδιά περικόπτονται στους 200 χαρακτήρες.

Προγραμματισμός και δημοσίευση

Προγραμμάτισε ένα πρόχειρο, δημοσίευσέ το τώρα, πρόσθεσέ το στην ουρά ή αφαίρεσέ το από το ημερολόγιο με POST /api/v1/posts/{post_id}/schedule.

Προγραμματισμός σε συγκεκριμένη ώρα
curl https://www.amaposta.com/api/v1/posts/$POST_ID/schedule \
  -H "Authorization: Bearer $AMAPOSTA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"mode": "at", "at": "2026-10-20T07:00:00Z"}'
  • atΔημοσιεύεται στην καθορισμένη ώρα, έως δύο χρόνια αργότερα.
  • nowΔημοσιεύεται αμέσως.
  • queueΕπιλέγει την επόμενη ελεύθερη θέση δημοσίευσης για τα κανάλια της ανάρτησης μέσα στις επόμενες 12 εβδομάδες.
  • unscheduleΜεταφέρει την ανάρτηση πίσω στα πρόχειρα.

Πριν προγραμματιστεί οτιδήποτε, εκτελούνται οι ίδιοι έλεγχοι με τον επεξεργαστή. Αν κάποιος αποτύχει, το αίτημα επιστρέφει 400 με μήνυμα όπως Διόρθωσέ το πριν τον προγραμματισμό: Το YouTube χρειάζεται τίτλο. Ο προγραμματισμός απαιτεί το δικαίωμα posts:publish ή ένα έργο με ενεργοποιημένες εγκρίσεις, οπότε η ανάρτηση περιμένει στα εισερχόμενα ελέγχου.

Ανάγνωση αναρτήσεων και παραδόσεων

Λίστα αναρτήσεων ενός έργου, με φίλτρα status (καταστάσεις χωρισμένες με κόμμα ή inbox, queue ή history), χρονικό διάστημα from/to, limit και offset. Η απάντηση είναι {"items": […], "total": n}.

Τι ακολουθεί και μία ανάρτηση αναλυτικά
curl "https://www.amaposta.com/api/v1/projects/$PROJECT_ID/posts?status=queue" \
  -H "Authorization: Bearer $AMAPOSTA_KEY"

curl https://www.amaposta.com/api/v1/posts/$POST_ID \
  -H "Authorization: Bearer $AMAPOSTA_KEY"

Μια ανάρτηση έχει συνολικό status (draft, in_review, changes_requested, ready, scheduled, publishing, published, partial ή failed) και μία παράδοση ανά κανάλι:

deliveries[]
"deliveries": [
  {
    "id": "0192b7d4-…",
    "channel_id": "0192b7a1-…",
    "status": "published",
    "url": "https://www.youtube.com/watch?v=…",
    "error": null,
    "published_at": "2026-10-20T07:00:41Z"
  },
  {
    "id": "0192b7d4-…",
    "channel_id": "0192b7a9-…",
    "status": "failed",
    "url": null,
    "error": {
      "code": "endpoint_unavailable",
      "message": "Your endpoint returned 503 Service Unavailable",
      "hint": "Amaposta will retry with backoff."
    },
    "published_at": null
  }
]

Οι καταστάσεις παράδοσης είναι pending, scheduled, publishing, processing, published, failed και cancelled. Το DELETE /api/v1/posts/{post_id} αφαιρεί μια ανάρτηση.

Σφάλματα

Κάθε σφάλμα έχει την ίδια δομή: ένα αντικείμενο error με σταθερό code, ένα message που μπορείς να εμφανίσεις στους χρήστες και, μερικές φορές, fields (μηνύματα ανά πεδίο) και hint.

422 Unprocessable Entity
{
  "error": {
    "code": "validation",
    "message": "Please fix the highlighted fields.",
    "fields": {
      "kind": "Use text, image or video."
    }
  }
}
ΚατάστασηΚώδικαςΣημασία
400bad_requestΤο αίτημα δεν μπορεί να εκτελεστεί όπως ζητήθηκε, όπως ο προγραμματισμός ανάρτησης που αποτυγχάνει στους ελέγχους της.
401unauthorizedΤο κλειδί API λείπει, είναι λανθασμένο ή έχει ανακληθεί.
402plan_limitΤο πρόγραμμα του χώρου εργασίας δεν το επιτρέπει· το limit αναφέρει ποιο όριο ισχύει.
403forbiddenΤο κλειδί δεν έχει κάποιο απαιτούμενο δικαίωμα ή πρόσβαση στο έργο.
404not_foundΔεν υπάρχει τέτοιο έργο, ανάρτηση, πολυμέσο ή τελικό σημείο.
409conflictΗ αλλαγή συγκρούεται με την τρέχουσα κατάσταση, όπως η επεξεργασία ανάρτησης που ήδη δημοσιεύεται.
422validationΈνα ή περισσότερα πεδία χρειάζονται διόρθωση· δες το fields.
429rate_limitedΠερισσότερα από 120 αιτήματα το λεπτό με αυτό το κλειδί.
502provider_errorΜια πλατφόρμα αρνήθηκε ή απέτυχε· το hint εξηγεί τι να κάνεις.

Webhook

Πρόσθεσε ένα τελικό σημείο στις Ρυθμίσεις, στην ενότητα API και webhook, επίλεξε τα συμβάντα που θέλεις και αντέγραψε το μυστικό υπογραφής του. Το Amaposta στέλνει JSON με POST στο URL σου για κάθε συμβάν. Κάθε απάντηση εκτός 2xx, ή η απουσία απάντησης εντός 15 δευτερολέπτων, οδηγεί σε επανάληψη με αυξανόμενη καθυστέρηση. Τα τελικά σημεία που συνεχίζουν να αποτυγχάνουν απενεργοποιούνται και οι διαχειριστές ειδοποιούνται.

ΣυμβάνΑποστέλλεται όταν
post.createdΜια ανάρτηση δημιουργήθηκε (πίνακας ελέγχου ή API)
post.scheduledΜια ανάρτηση προγραμματίστηκε
post.approvedΜια ανάρτηση εγκρίθηκε
post.publishedΜια ανάρτηση δημοσιεύτηκε σε ένα κανάλι
post.failedΜια ανάρτηση δεν δημοσιεύτηκε σε ένα κανάλι
channel.connectedΈνα κανάλι συνδέθηκε ή επανασυνδέθηκε
channel.disconnectedΈνα κανάλι έχασε τη σύνδεσή του
media.readyΟλοκληρώθηκε η επεξεργασία μιας μεταφόρτωσης
media.failedΜια μεταφόρτωση δεν μπόρεσε να υποβληθεί σε επεξεργασία
post.published
POST /your/webhook HTTP/1.1
Content-Type: application/json
User-Agent: Amaposta-Webhooks/1.0
X-Amaposta-Event: post.published
X-Amaposta-Event-Id: 0192b7e0-…
X-Amaposta-Signature: t=1792479641,v1=5f2b0c…

{
  "id": "0192b7e0-…",
  "type": "post.published",
  "created_at": "2026-10-20T07:00:41Z",
  "project_id": "0192a3f1-…",
  "data": {
    "post_id": "0192b7c8-…",
    "delivery_id": "0192b7d4-…",
    "channel_id": "0192b7a1-…",
    "provider": "youtube",
    "external_id": "…",
    "url": "https://www.youtube.com/watch?v=…"
  }
}

Επαλήθευση υπογραφής

Το X-Amaposta-Signature είναι t=<unix seconds>,v1=<hex>, όπου το v1 είναι το HMAC_SHA256(secret, t + "." + body) για το ακατέργαστο σώμα του αιτήματος. Υπολόγισέ το, σύγκρινέ το σε σταθερό χρόνο και απόρριψε παλιές χρονικές σημάνσεις για να αποτρέψεις την επανάληψη αιτημάτων.

Node.js
import crypto from "node:crypto";

// rawBody: the request body exactly as received (string or Buffer).
export function verifySignature(rawBody, header, secret, toleranceSeconds = 300) {
  const parts = Object.fromEntries(header.split(",").map((p) => p.split("=", 2)));
  const t = Number(parts.t);
  if (!t || Math.abs(Date.now() / 1000 - t) > toleranceSeconds) return false;
  const expected = crypto
    .createHmac("sha256", secret)
    .update(`${t}.${rawBody}`)
    .digest();
  const given = Buffer.from(parts.v1 ?? "", "hex");
  return given.length === expected.length && crypto.timingSafeEqual(given, expected);
}
Python
import hashlib
import hmac
import time


def verify_signature(raw_body: bytes, header: str, secret: str, tolerance: int = 300) -> bool:
    parts = dict(p.split("=", 1) for p in header.split(","))
    t = int(parts.get("t", "0"))
    if abs(time.time() - t) > tolerance:
        return False
    expected = hmac.new(secret.encode(), f"{t}.".encode() + raw_body, hashlib.sha256).hexdigest()
    return hmac.compare_digest(expected, parts.get("v1", ""))

Κανάλια Custom API

Ένα κανάλι Custom API δημοσιεύει σε ένα τελικό σημείο HTTPS που διαχειρίζεσαι: το CMS σου, ένα εργαλείο ενημερωτικών δελτίων ή μια πλατφόρμα που δεν υποστηρίζει ακόμη το Amaposta. Εμφανίζεται στο ημερολόγιο και έχει ελέγχους, εγκρίσεις και επαναλήψεις όπως κάθε άλλο κανάλι. Όταν δημοσιεύεται μια ανάρτηση, το Amaposta στέλνει ένα POST ανά παράδοση:

Τι λαμβάνει το τελικό σημείο σου
POST /amaposta/publish HTTP/1.1
Authorization: Bearer <your API key>
Content-Type: application/json
Idempotency-Key: 0192b7d4-…
X-Amaposta-Delivery: 0192b7d4-…
X-Amaposta-Signature: t=1792479600,v1=9ac41e…

{
  "id": "0192b7d4-…",
  "type": "post.publish",
  "created_at": "2026-10-20T07:00:00Z",
  "content": {
    "kind": "video",
    "title": "How we roast a batch in 12 minutes",
    "text": "From green beans to first crack. We filmed one batch start to finish.",
    "hashtags": ["coffee", "behindthescenes"],
    "media": {
      "url": "https://…",
      "content_type": "video/mp4",
      "size_bytes": 48213844,
      "width": 1080,
      "height": 1920,
      "duration_ms": 58000,
      "filename": "batch-142.mp4"
    },
    "cover": null,
    "options": {}
  },
  "post": {
    "id": "0192b7c8-…",
    "external_ref": "episode-142",
    "scheduled_at": "2026-10-20T07:00:00Z",
    "metadata": {
      "pipeline": { "name": "nightly-cut" }
    }
  },
  "project": { "id": "0192a3f1-…", "name": "Spring launch" },
  "channel": { "id": "0192b7a9-…", "name": "api.example.com" }
}

Πώς να απαντάς

  • 2xxΔημοσιεύτηκε. Προαιρετικά επέστρεψε {"id": "…", "url": "…"} και ο σύνδεσμος εμφανίζεται στην ανάρτηση.
  • 401, 403Το κλειδί απορρίφθηκε. Το κανάλι επισημαίνεται για επανασύνδεση και οι διαχειριστές ενημερώνονται. Μην χρησιμοποιείς αυτούς τους κωδικούς για μη έγκυρη υπογραφή.
  • 5xx, 408, 429Προσωρινό. Το Amaposta επαναλαμβάνει με αυξανόμενη καθυστέρηση.
  • Άλλο 4xxΗ ανάρτηση επισημαίνεται ως αποτυχημένη με το μήνυμά σου και κάποιος μπορεί να τη διορθώσει και να πατήσει Επανάληψη.
Ένας παραλήπτης σε Express
app.post("/amaposta/publish", express.raw({ type: "application/json" }), async (req, res) => {
  const signature = req.get("X-Amaposta-Signature") ?? "";
  if (!verifySignature(req.body, signature, process.env.AMAPOSTA_SIGNING_SECRET)) {
    return res.status(400).json({ message: "Bad signature" });
  }
  const delivery = JSON.parse(req.body);
  const item = await publishToYourSystem(delivery.content, req.get("Idempotency-Key"));
  res.json({ id: item.id, url: item.url });
});

Το τελικό σημείο σου πρέπει να είναι προσβάσιμο από το διαδίκτυο· οι ανακατευθύνσεις δεν ακολουθούνται. Όταν συνδέεις το κανάλι, το Amaposta το ελέγχει με GET στο URL ελέγχου λειτουργίας, αν έχεις ορίσει ένα, ή με αίτημα OPTIONS στο τελικό σημείο.

Κανάλια Sandbox

Ένα κανάλι Sandbox συμπεριφέρεται σαν πραγματικό, αλλά τίποτα δεν φεύγει από το Amaposta. Χρησιμοποίησέ το για να αναπτύξεις και να δοκιμάσεις τη διασύνδεσή σου από άκρη σε άκρη: οι αναρτήσεις προγραμματίζονται, βγαίνουν στον αέρα, δημοσιεύονται ή αποτυγχάνουν και ενεργοποιούν τα ίδια webhook. Τα κανάλια Sandbox είναι δωρεάν σε κάθε πρόγραμμα και δεν υπολογίζονται στα όρια καναλιών.

Επίλεξε τη συμπεριφορά του κατά την προσθήκη:

  • Πάντα επιτυχίαΚάθε ανάρτηση δημοσιεύεται.
  • Περιστασιακή αποτυχίαΔες αποτυχίες και επαναλήψεις χωρίς να περιμένεις πραγματική διακοπή λειτουργίας.
  • Πάντα αποτυχίαΔοκίμασε τον χειρισμό του post.failed.
  • Ληγμένη σύνδεσηΔες πώς εμφανίζονται οι ειδοποιήσεις και οι σύνδεσμοι επανασύνδεσης όταν λήγει η πρόσβαση.

Κανόνες πλατφόρμας

Τι δέχεται κάθε τύπος καναλιού. Οι έλεγχοι χρησιμοποιούν τα ίδια όρια, οπότε τα περισσότερα προβλήματα εμφανίζονται πριν προγραμματιστεί μια ανάρτηση και όχι κατά τη δημοσίευσή της.

Πλατφόρμα Ανάρτηση Τίτλος Κείμενο Hashtag Πολυμέσα
YouTube Βίντεο ΤίτλοςΥποχρεωτικό, έως 100 χαρακτήρες ΠεριγραφήΈως 5.000 χαρακτήρες Αποστέλλονται ως ετικέτες, έως 60 MP4, MOV, WebM, AVI, MKV; έως 256 GB; 1 δευτ. έως 12 ώρ.
Λογαριασμοί χωρίς επαληθευμένο αριθμό τηλεφώνου μπορούν να μεταφορτώνουν έως 15 λεπτά και δεν μπορούν να ορίζουν προσαρμοσμένες μικρογραφίες. Κάθε μεταφόρτωση καταναλώνει ποσόστωση API· η προεπιλεγμένη ποσόστωση της Google επιτρέπει περίπου έξι μεταφορτώσεις την ημέρα ανά εφαρμογή.
Instagram Εικόνα Χωρίς τίτλο ΛεζάνταΈως 2.200 χαρακτήρες Προστίθενται στο κείμενο, έως 30 JPEG; έως 8 MB
Βίντεο Χωρίς τίτλο ΛεζάνταΈως 2.200 χαρακτήρες Προστίθενται στο κείμενο, έως 30 MP4, MOV; έως 300 MB; 3 δευτ. έως 15 λεπ.
Απαιτεί λογαριασμό Instagram Business ή Creator. Το Instagram επιτρέπει 50 αναρτήσεις μέσω API ανά λογαριασμό σε κυλιόμενο διάστημα 24 ωρών. Οι αναρτήσεις μόνο με κείμενο δεν είναι δυνατές στο Instagram.
TikTok Εικόνα ΤίτλοςΈως 90 χαρακτήρες ΠεριγραφήΈως 4.000 χαρακτήρες Προστίθενται στο κείμενο JPEG, WebP; έως 20 MB
Βίντεο Χωρίς τίτλο ΛεζάνταΈως 2.200 χαρακτήρες Προστίθενται στο κείμενο MP4, MOV, WebM; έως 4 GB; 3 δευτ. έως 10 λεπ.
Οι αναρτήσεις από εφαρμογές που δεν έχουν ολοκληρώσει τον έλεγχο του TikTok είναι ορατές μόνο στον δημιουργό. Το TikTok επιλέγει το εξώφυλλο από ένα καρέ του βίντεο· οι προσαρμοσμένες εικόνες εξωφύλλου δεν υποστηρίζονται. Οι αναρτήσεις μόνο με κείμενο δεν είναι δυνατές στο TikTok.
X Κείμενο Χωρίς τίτλο ΑνάρτησηΥποχρεωτικό, έως 280 (οι σύνδεσμοι μετρούν ως 23, τα emoji ως 2) Προστίθενται στο κείμενο Κανένα
Εικόνα Χωρίς τίτλο ΑνάρτησηΈως 280 (οι σύνδεσμοι μετρούν ως 23, τα emoji ως 2) Προστίθενται στο κείμενο JPEG, PNG, WebP, GIF; έως 5 MB
Βίντεο Χωρίς τίτλο ΑνάρτησηΈως 280 (οι σύνδεσμοι μετρούν ως 23, τα emoji ως 2) Προστίθενται στο κείμενο MP4, MOV; έως 512 MB; 0,5 δευτ. έως 2:20 λεπ.
Με τη δική σου εφαρμογή προγραμματιστή στο X, οι αναρτήσεις καταναλώνουν τις πιστώσεις API της με χρέωση ανά χρήση. Τα hashtag υπολογίζονται στο όριο χαρακτήρων.
Facebook Κείμενο Χωρίς τίτλο ΑνάρτησηΥποχρεωτικό, έως 63.206 χαρακτήρες Προστίθενται στο κείμενο Κανένα
Εικόνα Χωρίς τίτλο ΛεζάνταΈως 63.206 χαρακτήρες Προστίθενται στο κείμενο JPEG, PNG, GIF, WebP; έως 10 MB
Βίντεο ΤίτλοςΈως 255 χαρακτήρες ΠεριγραφήΈως 63.206 χαρακτήρες Προστίθενται στο κείμενο MP4, MOV; έως 1 GB; 1 δευτ. έως 20 λεπ.
Δημοσιεύει μόνο σε Σελίδες· η δημοσίευση σε προσωπικά προφίλ δεν είναι δυνατή μέσω API.
Custom API Κείμενο ΤίτλοςΧωρίς όριο μήκους ΠεριγραφήΧωρίς όριο μήκους Αποστέλλονται ως ετικέτες Κανένα
Εικόνα ΤίτλοςΧωρίς όριο μήκους ΠεριγραφήΧωρίς όριο μήκους Αποστέλλονται ως ετικέτες JPEG, PNG, WebP, GIF
Βίντεο ΤίτλοςΧωρίς όριο μήκους ΠεριγραφήΧωρίς όριο μήκους Αποστέλλονται ως ετικέτες MP4, MOV, WebM
Κάθε αίτημα υπογράφεται με κεφαλίδα HMAC-SHA256, ώστε να επαληθεύεις ότι προέρχεται από το Amaposta. Απάντησε με 2xx και προαιρετικό JSON {"id": "…", "url": "…"}. Οι απαντήσεις 408, 429 και 5xx επαναλαμβάνονται με αυξανόμενη καθυστέρηση· οι 401/403 επισημαίνουν το κανάλι για επανασύνδεση· οι υπόλοιπες 4xx αποτυγχάνουν την παράδοση ώστε να τη διορθώσεις και να δοκιμάσεις ξανά.
Sandbox Κείμενο ΤίτλοςΈως 200 χαρακτήρες ΠεριγραφήΈως 5.000 χαρακτήρες Προστίθενται στο κείμενο, έως 30 Κανένα
Εικόνα ΤίτλοςΈως 200 χαρακτήρες ΠεριγραφήΈως 5.000 χαρακτήρες Προστίθενται στο κείμενο, έως 30 JPEG, PNG, WebP, GIF
Βίντεο ΤίτλοςΈως 200 χαρακτήρες ΠεριγραφήΈως 5.000 χαρακτήρες Προστίθενται στο κείμενο, έως 30 MP4, MOV, WebM
Η δημοσίευση διαρκεί λίγο ώστε να βλέπεις την κατάσταση να αλλάζει ζωντανά.