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

API documentation

With the Do4U API you use the same tools as on the website from your own software: summarise, compare, support replies, alt texts, rewrite and translate. Every request is processed on our own servers in Poland, EU.

Base URL: https://do4u.eu/api/v1

OpenAPI 3.1 description (JSON) – Machine-readable description of this API for code generators and tools such as Postman or Insomnia. No key needed.

Authentication

Create a key under API keys in your account. Send it with every request in the header Authorization: Bearer <key> (or X-API-Key: <key>). Keep the key secret and never put it into a web page. You can revoke a key at any time.

How it works

Jobs run asynchronously. You create a job and get its id at once (HTTP 202). Then you fetch the job until its status is done or failed. Ask every 2 to 5 seconds; most jobs take a few seconds.

Endpoints

GET /tools Tools, options and your input limits
GET /balance Your credit balance
POST /jobs Create a job (JSON, or multipart/form-data with an image file)
GET /jobs/{id} Status and result of a job
DELETE /key Revoke the key you send with this request, for example when an integration is disconnected. Jobs already created still finish.
POST /key/revoke The same as DELETE /key, for clients that can only send GET and POST.

Example

Create a job, then fetch the result:

curl -X POST https://do4u.eu/api/v1/jobs \
  -H "Authorization: Bearer d4u_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"tool": "summarize", "text": "...", "options": {"length": "short"}, "language": "en"}'
HTTP/1.1 202 Accepted
{"id": "8f1c0b6a...", "tool": "summarize", "status": "queued", "model": "do4u-standard",
 "credits_estimate": 1, "links": {"self": "https://do4u.eu/api/v1/jobs/8f1c0b6a..."}}
curl https://do4u.eu/api/v1/jobs/8f1c0b6a... -H "Authorization: Bearer d4u_YOUR_KEY"

{"id": "8f1c0b6a...", "tool": "summarize", "status": "done", "model": "do4u-standard", "credits_estimate": 1,
 "result": {"summary": "...", "key_points": ["...", "..."]}, "credits": 1,
 "notice": "AI-generated, please check before use."}
curl -X POST https://do4u.eu/api/v1/jobs -H "Authorization: Bearer d4u_YOUR_KEY" \
  -F tool=alt_text -F language=de -F "text=Product page: hiking boots" -F image=@photo.jpg

Request fields for POST /jobs

toolName of the tool, see the table below. Required.
textInput text. For compare: text A. For alt_text: optional page context.
text_bText B (compare only).
urlPublic web page to read instead of text (summarize, accessibility_check).
htmlHTML of a page to check (accessibility_check), up to 300,000 characters.
focus_keywordOptional focus keyword for seo_meta. Without target, seo_meta writes in language.
faqOptional FAQ snippets (support_reply only).
questionsOptional for seo_meta, content_brief and faq_schema: frequent visitor questions as a list of texts or {"text": ..., "count": n} (up to 50, at most 20 are used). faq_schema answers them first if the source answers them; visitor_questions in the result says what happened to each.
imageImage for alt_text: file field in multipart/form-data, or base64 / data URI in JSON. JPG, PNG, WebP or GIF, up to 5 MB.
image_urlOptional for alt_text instead of image: public address of the image (http or https; JPEG, PNG, WebP or GIF; at most 5 MB). Do4U loads it once in the background. If that fails, the job fails with error image_unavailable and costs nothing.
optionsObject with options of the tool, for example {"length": "short"}.
languageLanguage of the result and notes: en, de or pl. Default en. For translate, the target language is the option target.
no_storetrue: the input is deleted right after processing and the result after the first retrieval.
brand_voiceOptional: false switches your brand voice off for this job (default: the brand voice applies if you have set one).
ai_labelOptional: true shows the visible note "Marked as AI-generated" with the result in the web interface, false hides it. Default: the setting in your account. The machine-readable AI label is always in the result and cannot be switched off: the fields ai_generated and generator, an HTML comment in HTML results, ai_notice for image descriptions. ai_generated is false if the result comes from automatic checks only.
callback_urlOptional: public https address that gets a signed POST when the job is finished (see Webhooks).
render_jsOptional: true loads the page with JavaScript first (pages that build their content in the browser; tools that read a url). Costs the render surcharge only if the page was really loaded this way; the result field render says what happened.
no_cacheOptional: true always starts a new AI job. Without it, a finished and still stored result of your account (or workspace) with the same tool, options and input is reused: the job is done at once, from_history is true and it costs 0 % of the credits of the original. Never with no_store, never for a url.
allow_same_languageOptional for translate, translate_html and translate_file: true translates even if the text already is in the target language. Without it such a job is rejected with same_language (400) – only when the check is sure.

Repeat requests safely (Idempotency-Key)

Send the header Idempotency-Key with POST /jobs, for example a random UUID for each job (1 to 255 printable ASCII characters). If the connection breaks and you send the same request again with the same Idempotency-Key and the same API key within 24 hours, you get the same answer again: the same job, no second job and no second charge. The answer then has the header Idempotent-Replayed: true. Use a new key for every new job. If you send the same key with a different request, you get 422 idempotency_conflict. Errors are not stored: after an error you can send the request again with the same key.

curl -X POST https://do4u.eu/api/v1/jobs \
  -H "Authorization: Bearer d4u_YOUR_KEY" \
  -H "Idempotency-Key: 5f0c2a8e-7d1b-4c3a-9e2f-1b6d8a4c0e77" \
  -H "Content-Type: application/json" \
  -d '{"tool": "summarize", "text": "..."}'

Tools and options

ToolInputs Options (first value is the default)Result fieldsPrice
moderate_commentΈλεγχος σχολίων για spam text – classification, reason, suggestion, action, note συνήθως 1–3 credits
document_htmlΜετατροπή εγγράφων σε HTML image, pdf, text page: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 html, plain_text, notes, page, note συνήθως 2–3 credits
image_textΕύρεση κειμένου μέσα σε εικόνες url image_index: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 html, plain_text, notes, images, image_index, coverage, note συνήθως 2–3 credits
pdf_accessibilityΈλεγχος προσβασιμότητας PDF pdf – checks, pages, truncated, repaired, note, convert_url συνήθως 1–2 credits
summarizeΠερίληψη text, url length: medium | short | long summary, key_points συνήθως 1–3 credits
compareΣύγκριση text, text_b focus: overall | facts | tone | seo summary, similarities, differences συνήθως 1–3 credits
support_replyΑπάντηση υποστήριξης text, faq tone: friendly | neutral | formal reply, concerns, questions συνήθως 1–3 credits
alt_textΕναλλακτικά κείμενα image, text, filename, image_url – alt, caption, description, filename, filename_base, extension, language, alt_length, alt_max, alt_status, caption_length, caption_max, caption_status συνήθως 2–3 credits
rewriteΑναδιατύπωση text style: simpler | shorter | more_formal | more_casual | more_persuasive | easy_to_read text, changes, language, style_label, readability, easy_check, easy_note, review_status, review_limit, diff συνήθως 1–4 credits
accessibility_checkΈλεγχος προσβασιμότητας url, html – summary, page, counts, findings, checks, readability, note fixed 3 credits per task
seo_metaΤίτλος και περιγραφή SEO url, text, focus_keyword, questions target: en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | sv variants, current, focus_keyword, limits, keywords, note fixed 1 credit per task
translate_htmlΜετάφραση HTML html target: en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | sv html, segments, check, glossary, notes, note, review_status, alignment συνήθως 1–4 credits
product_descriptionΠεριγραφές προϊόντων text tone: neutral | friendly | persuasive | formallength: medium | short | longchannel: shop | marketplacetarget: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | svmeta_description: no | yes products, language, detected_language, channel, format, limits, counts, check, note συνήθως 1–3 credits
headlinesΕπικεφαλίδες και θέματα μηνυμάτων text kind: page | newsletter | adtone: neutral | friendly | persuasive | formalcount: 5 | 3 | 8target: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | sv kind, fields, variants, limits, counts, enough, report, language, detected_language, note fixed 1 credit per task
faq_schemaΣυχνές ερωτήσεις και σήμανση schema url, text, questions type: faq | organization | localbusiness | productcount: 8 | 5 | 10target: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | sv type, kind, jsonld, html, valid, faq, fields, checks, counts, unverified, dropped, existing, existing_errors, existing_same, page, language, detected_language, notes, note, visitor_questions fixed 2 credits per task
content_briefΕνημερωτικό σημείωμα περιεχομένου text, audience, questions target: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | sv title, title_length, title_max, title_status, goal, intent, outline, questions, length, markdown, counts, dropped, limits, language, detected_language, notes, note συνήθως 1–2 credits
review_replyΑπαντήσεις σε κριτικές text, company stars: 0 | 1 | 2 | 3 | 4 | 5platform: general | google | trustpilot | booking | tripadvisor | airbnb | yelp | app_store | google_playtone: friendly | neutral | formalcount: 3 | 2target: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | sv assessment, variants, limits, platform, stars, tone, counts, dropped, enough, report, hints, checks, language, detected_language, note συνήθως 1–2 credits
social_postsΑναρτήσεις κοινωνικών δικτύων από ένα άρθρο url, text channels: all | linkedin | facebook | instagram | linkedin+facebook | linkedin+instagram | facebook+instagramtone: friendly | neutral | persuasive | formal | casualvariants: 1 | 2 | 3target: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | sv channels, posts, limits, counts, enough, report, link, link_in_bio, language, detected_language, source, notes, note συνήθως 1–3 credits
explain_termsΕξήγηση όρων url, text level: simple | general | expertexamples: no | yestarget: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | sv terms, level, language, detected_language, source, text_length, text_clipped, counts, dropped, adjusted, limits, other_candidates, checks, markdown, html, notes, note συνήθως 1–3 credits
extract_dataΕξαγωγή δεδομένων url, text types: all | hours | prices | hours+prices | addresses | hours+addresses | prices+addresses | hours+prices+addresses | events | hours+events | prices+events | hours+prices+events | addresses+events | hours+addresses+events | prices+addresses+events | hours+prices+addresses+events | contact | hours+contact | prices+contact | hours+prices+contact | addresses+contact | hours+addresses+contact | prices+addresses+contact | hours+prices+addresses+contact | events+contact | hours+events+contact | prices+events+contact | hours+prices+events+contact | addresses+events+contact | hours+addresses+events+contact | prices+addresses+events+contacttarget: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | sv kinds, hours, prices, addresses, events, contact, counts, empty, unverified, dropped, limits, source, language, detected_language, notes, note συνήθως 1–3 credits
redirect_planΣχέδιο ανακατεύθυνσης old_urls, new_urls, old_domain, new_domain ai: yes | no old_base, new_base, mappings, counts, unused_new, invalid, dropped, ai, legend, language, domain_ignored, notes, note συνήθως 1–3 credits
contrast_checkΈλεγχος αντίθεσης χρωμάτων colors level: aa | aaatext_size: normal | large colors, pairs, counts, invalid, settings, palette_check, legend, language, note συνήθως 1–2 credits
language_levelΓλωσσικό επίπεδο (A1–C1) text level: B1 | A1 | A2 | B2 | C1target: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | svkeep_terms: no | yes text, changes, level, language, detected_language, translated, summary, within_guideline, measures, over_guideline, over_count, readability, content, kept_terms, checks, hints, note συνήθως 1–4 credits
llms_txtΔημιουργία llms.txt url target: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | sv name, summary, details, file, filename, sections, counts, pages_read, read, existing, dropped, hints, language, detected_language, notes, note συνήθως 1–3 credits
internal_linksΕσωτερικοί σύνδεσμοι text, pages, sitemap_url, page_url – links, text, text_is_html, counts, pages, dropped, ai, limits, language, detected_language, timeout, notes, note συνήθως 1–3 credits
outdated_contentΞεπερασμένο περιεχόμενο url, text, html, reference_date target: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | sv reference_date, reference_date_given, findings, summary, counts, source, dropped, ai, limits, language, detected_language, timeout, notes, note συνήθως 1–3 credits
inclusive_languageΧωρίς αποκλεισμούς και σε απλή γλώσσα text scope: both | exclusion | complexitygender: not_prescribed | neutral | pair | star | colon | brand_voice language, scope, gender, summary, counts, findings, candidates, measures, applied, changed, revised_text, diff, dropped, checks, hints, note συνήθως 1–3 credits
review_analysisΑνάλυση κριτικών text focus: all | criticismtarget: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | sv format, columns, language, detected_language, focus, counts, selection, stars, period, languages, languages_unknown, personal_data, themes, praise, criticism, page, faq, cited, dropped, limits, hints, notes, note συνήθως 1–3 credits
ai_visibility_checkΈλεγχος ορατότητας στην ΤΝ url, text, html, topic, questions target: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | sv coverage, coverage_level, counts, questions, faq_questions, sections, qa_on_page, structured_data, llms_txt, robots_txt, readability, hints, source, topic, dropped, ai, limits, files, language, detected_language, note, how συνήθως 1–3 credits
events_calendarΕκδηλώσεις στο ημερολόγιο url, text, time_zone, year target: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | sv events, counts, unverified, dropped, timezone, year, today, limits, ics, jsonld, filename, source, language, detected_language, notes, note συνήθως 1–3 credits
product_photoΦωτογραφία προϊόντος σε κείμενο image, image_url, text, languages target: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | svcategory_list: google | free language, detected_language, title, title_length, title_max, title_status, short_description, short_length, short_max, short_status, description, description_length, description_max, description_status, bullets, bullets_count, bullets_max_length, bullets_status, alt_text, alt_length, alt_max, alt_status, category_group, attributes, attribute_sources, attribute_list, translations, removed, hints, claims_checked, claims_unchecked, counts, limits, notes, category_list, jsonld, jsonld_check, product_json, check, note συνήθως 2–3 credits
chart_descriptionΠεριγραφή γραφημάτων και infographic image, image_url, text target: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | svlength: normal | short chart_type, title, language, detected_language, alt, alt_length, alt_max, alt_status, description, description_length, description_max, description_status, description_size, axes, data, data_rows, table, data_csv, html, image_text, pie_check, hints, counts, limits, notes, verify_numbers, check, note συνήθως 2–3 credits
design_feedbackΣχόλια σχεδίασης από στιγμιότυπο οθόνης image, image_url, text target: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | svdevice: auto | phone | desktop language, detected_language, device, summary, findings, image, image_basis, counts, removed, hints, limits, notes, estimate, check, note, text, markdown συνήθως 2–3 credits
job_ad_checkΈλεγχος αγγελίας εργασίας url, text, html jurisdiction: auto | eu | de | pltarget: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | sv language, detected_language, jurisdiction, title, checklist, counts, pay, structure, length, findings, titles, summary, source, text_cut, dropped, ai, hints, note συνήθως 1–3 credits
green_claims_checkΈλεγχος περιβαλλοντικών ισχυρισμών url, text, html target: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | sv findings, summary, counts, source, dropped, ai, limits, legal, language, detected_language, timeout, notes, note συνήθως 1–3 credits
third_party_scanΈλεγχος υπηρεσιών τρίτων url, html – url, host, page_from, static_only, counts, consent, groups, cookies, legend, notes, check, note, truncated, checked_at συνήθως 1–2 credits
broken_link_checkΈλεγχος σπασμένων συνδέσμων url resources: yes | noexternal: no | yes language, url, host, counts, broken, more_broken, redirects, more_redirects, soft, start_soft, suggestions, not_reached, limits, note, truncated συνήθως 1–2 credits
duplicate_content_checkΈλεγχος διπλότυπου περιεχομένου url, text – language, mode, url, host, summary, counts, findings, passed, hints, thresholds, pages, limits, note, truncated συνήθως 1–2 credits
hreflang_checkΈλεγχος hreflang url – language, url, counts, findings, pages, matrix, annotations, legend, limits, note συνήθως 1–2 credits
ai_robots_txtAI crawlers στο robots.txt site_url, robots_txt, groups, crawlers – file, file_complete, ai_section, crawlers, counts, source, existing, changes, checks, notes, legend, sources, verified_on, language, note συνήθως 1–2 credits
faq_from_supportΣυχνές ερωτήσεις από μηνύματα υποστήριξης text, faq_url target: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | sv format, input_kind, columns, language, detected_language, languages, counts, selection, faq_page, personal_data, topics, gaps, cited, dropped, limits, placeholder, hints, notes, note, export συνήθως 1–3 credits
price_display_checkΈλεγχος αναγραφής τιμών url, text, html ai: yes | nojurisdiction: auto | de | pl jurisdiction, jurisdiction_auto, jurisdiction_label, source, price, previous_prices, prior_30_days, unit_prices, quantities, discounts, hints, structured, findings, counts, checks, ai, dropped, legal_sources, language, notes, note συνήθως 1–3 credits
form_text_checkΚείμενα φορμών url, html, error_messages target: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | svtone: neutral | friendly | formal language, detected_language, tone, required_word, forms, errors, counts, criteria, summary, source, dropped, ai, hints, note συνήθως 1–3 credits
newsletter_checkΈλεγχος newsletter html, eml, text, subject, preheader target: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | sv language, detected_language, input, subject, preheader, checklist, counts, links, links_total, images, eml, pairs, improvements, text_cut, dropped, ai, hints, note συνήθως 1–3 credits
privacy_policy_matchΈλεγχος πολιτικής απορρήτου website_url, pages, policy_url, policy_text – website, pages, policy, not_in_policy, not_found, matched, categories, counts, dropped, ai, limits, legal, notes, check, note, checked_at συνήθως 1–3 credits
social_card_checkΈλεγχος κάρτας κοινοποίησης url – language, url, counts, preview, findings, tags, images, snippet, guidance, limits, note συνήθως 1–2 credits
image_performance_checkΈλεγχος εικόνων url – language, url, counts, total, formats, lcp, page_findings, summary, images, more_images, legend, limits, note, truncated συνήθως 1–2 credits
ai_transparency_checkΈλεγχος διαφάνειας AI url, text, html chatbot: auto | yes | nomedia: unknown | no | realistic | artistic | illustrativearticles: unknown | no | unreviewed | reviewedtarget: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | sv language, detected_language, source, answers, checklist, detected, notices, summary, counts, dropped, ai, legal, hints, note συνήθως 1–3 credits
structured_data_checkΈλεγχος δομημένων δεδομένων url, html – language, url, input, counts, formats, findings, items, rules, visible, limits, truncated, note συνήθως 1–2 credits
legal_notice_checkΈλεγχος στοιχείων εκδότη url, text, html ai: yes | nojurisdiction: auto | de | pl jurisdiction, jurisdiction_auto, jurisdiction_basis, jurisdiction_label, source, entity, items, extra, counts, ai, dropped, legal_sources, language, notes, note, truncated συνήθως 1–3 credits
glossary_builderΔημιουργία γλωσσαρίου url, text, html, languages source: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | svmax_pages: 1 | 2 | 3 | 5 | 10 language, language_name, language_source, targets, target_names, items, existing, counts, pages, reading, source, text_cut, dropped, glossary, hints, note, export συνήθως 1–3 credits
local_business_checkΈλεγχος στοιχείων επιχείρησης url, text ai: no | yes language, url, host, mode, country, table, findings, counts, structured, suggestion, handover, pages, failed, not_reached, limits, ai, dropped, notes, note συνήθως 1–2 credits
consent_preload_checkΦορτώνει πριν από τη συναίνεση; url – url, final_url, host, loaded, counts, timing, consent, groups, cookies, storage, notes, check, law, note, truncated, checked_at συνήθως 1–2 credits
ai_literacy_policyΠολιτική γραμματισμού AI (άρθρο 4 του Κανονισμού για την ΤΝ) text, uses, roles, data, company_name company_size: 1-9 | 10-49 | 50-249 | 250+sector: general | retail | services | crafts | health | finance | education | public_sector | media | it | manufacturing | tourism | socialreview_months: 12 | 6 | 24language: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | sv language, title, sections, training, record_columns, markdown, text, profile, counts, dropped, legal, hints, note συνήθως 1–2 credits
withdrawal_button_checkΈλεγχος κουμπιού υπαναχώρησης url, text, html ai: yes | nojurisdiction: auto | de | pl | eusubscriptions: auto | yes | no jurisdiction, jurisdiction_auto, jurisdiction_basis, jurisdiction_label, law, source, subscription, items, candidates, counts, ai, dropped, legal_sources, language, notes, note, truncated συνήθως 1–3 credits
product_safety_checkΈλεγχος σελίδας προϊόντος (GPSR) url, text, html market_language: auto | bg | cs | da | de | el | en | es | fi | fr | hr | hu | it | lt | nl | pl | pt | ro | sk | sl | sv language, market_language, market_language_label, market_basis, page_language, source, product, manufacturer_seat, items, counts, dropped, ai, hints, notes, legal, legal_sources, note συνήθως 1–3 credits
website_checkΈλεγχος ιστοσελίδας url scope: short | full score, categories, findings, counts, snippet, llms_txt, summary, actions, note fixed 5 credits per task
translateΜετάφραση text target: en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | sv translation, notes, review_status, alignment συνήθως 1–4 credits
proofreadΔιόρθωση κειμένου text text_language: auto | en | de | pl | fr | es | it | pt | nl | cs | sk | uk | ru | bg | ro | hu | sv | da | fi | tr | el | ar | fa | he | hi | zh | ja | ko | th text, html, language, identical, summary, counts, changed_share, changes, notes, beta, note συνήθως 1–4 credits
translate_fileΑρχεία γλώσσας text target: en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | svscope: auto | all | missingline_endings: lf | crlf | lf_no_final_newline | crlf_no_final_newline format, target, filename, mime, file, entries, counts, flagged, preview, check, notes, note συνήθως 5–8 credits

Job status

queued and running: still working (position and wait_seconds help you to wait). done: result contains the fields of the tool. failed: nothing was charged (credits is 0); error.code names the reason: address_blocked (Do4U does not open this address, for example a private or internal one; send the text or HTML instead), input_too_large (shorten the input), image_unavailable or job_failed. expired: the result is no longer stored.

Webhooks

Πρόσθεσε "callback_url" στο POST /api/v1/jobs και το Do4U στέλνει ένα υπογεγραμμένο POST (συμβάν job.finished με την κατάσταση, τα credits και τον σύνδεσμο του αποτελέσματος - όχι το ίδιο το αποτέλεσμα) μόλις ολοκληρωθεί η εργασία. Μόνο δημόσιες διευθύνσεις στη θύρα 80 ή 443· επαναλαμβάνουμε έως 6 φορές με αυξανόμενες παύσεις.

Παράδειγμα: δημιουργία εργασίας με callback_url – και το αίτημα που στέλνει το Do4U σε αυτή τη διεύθυνση όταν ολοκληρωθεί η εργασία:

curl -X POST https://do4u.eu/api/v1/jobs \
  -H "Authorization: Bearer d4u_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"tool": "summarize", "text": "...", "callback_url": "https://example.com/do4u-hook"}'
POST /do4u-hook
Content-Type: application/json
X-Do4U-Event: job.finished
X-Do4U-Signature: t=1793180000,v1=6b1f...

{"event":"job.finished","id":"8f1c0b6a...","tool":"summarize","status":"done","credits":1,
 "created":"2026-10-28T10:00:00+01:00","finished":"2026-10-28T10:00:04+01:00","result_url":"https://do4u.eu/api/v1/jobs/8f1c0b6a..."}

Έλεγξε την κεφαλίδα X-Do4U-Signature: t=<time>,v1=<hex>, όπου v1 = HMAC-SHA256(secret, "<time>.<raw body>"). Απόρριψε παλιές χρονικές στιγμές (π.χ. παλαιότερες από 5 λεπτά). Το μυστικό σου ξεκινά με whsec_ και εμφανίζεται στη σελίδα Κλειδιά API.

// Node.js: rawBody = the request body exactly as received (string)
const crypto = require('crypto');
function do4uSignatureOk(rawBody, header, secret) {
  const t = (header.match(/t=(\d+)/) || [])[1];
  const v1 = (header.match(/v1=([0-9a-f]{64})/) || [])[1];
  if (!t || !v1 || Math.abs(Date.now() / 1000 - Number(t)) > 300) return false;
  const expected = crypto.createHmac('sha256', secret).update(t + '.' + rawBody).digest('hex');
  return crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(v1));
}
// PHP
function do4u_signature_ok(string $raw, string $header, string $secret): bool {
    if (!preg_match('/t=(\d+),v1=([0-9a-f]{64})/', $header, $m) || abs(time() - (int)$m[1]) > 300) return false;
    return hash_equals(hash_hmac('sha256', $m[1] . '.' . $raw, $secret), $m[2]);
}
$ok = do4u_signature_ok(file_get_contents('php://input'), $_SERVER['HTTP_X_DO4U_SIGNATURE'] ?? '', 'whsec_YOUR_SECRET');

credits.low

Όταν το υπόλοιπο credits ενός λογαριασμού πέσει κάτω από το όριο, το Do4U στέλνει ένα υπογεγραμμένο POST στη διεύθυνση webhook του λογαριασμού. Το συμβάν δεν περιέχει προσωπικά δεδομένα, μόνο το υπόλοιπο, το όριο και την ώρα (UTC). Το επόμενο ακολουθεί μόνο αφού προστεθούν ξανά credits (αγορά, μηνιαία δωρεάν credits ή κουπόνι). Η υπογραφή και το μυστικό είναι τα ίδια με το job.finished.

POST /do4u-hook
Content-Type: application/json
X-Do4U-Event: credits.low
X-Do4U-Signature: t=1793180000,v1=6b1f...

{"event":"credits.low","balance":18,"threshold":20,"ts":"2026-10-29T10:00:04Z"}

Ορίζεις τη διεύθυνση και το όριο εδώ: Κλειδιά API

n8n

Έτοιμη ροή εργασίας: ένα webhook λαμβάνει την κλήση από το Do4U, ελέγχει την υπογραφή, παίρνει το αποτέλεσμα και το παραδίδει στο επόμενο βήμα σου.

Λήψη του προτύπου n8n (JSON)

Πρότυπο, που δεν έχει ακόμα δοκιμαστεί σε πραγματική εγκατάσταση n8n ή Make – δοκίμασε τον έλεγχο της υπογραφής πριν το χρησιμοποιήσεις.

Στο n8n: Workflows → Import from file. Μετά πληκτρολόγησε το μυστικό σου στον κόμβο "Check signature" και το κλειδί API σου στον "Do4U: get result", ενεργοποίησε τη ροή εργασίας και χρησιμοποίησε το production URL του webhook ως callback_url. Το n8n που φιλοξενείς μόνος σου χρειάζεται τη μεταβλητή περιβάλλοντος NODE_FUNCTION_ALLOW_BUILTIN=crypto για τον έλεγχο της υπογραφής.

Make

  1. Πρόσθεσε την ενότητα Webhooks → Custom webhook ως trigger και ενεργοποίησε τα "JSON pass-through" και "Get request headers" στις προχωρημένες ρυθμίσεις της.
  2. Χρησιμοποίησε τη διεύθυνση αυτού του webhook ως callback_url.
  3. Έλεγξε την υπογραφή: σύγκρινε το v1 από την κεφαλίδα X-Do4U-Signature με το sha256(t + "." + raw body; hex; το μυστικό σου).
  4. Πρόσθεσε HTTP → Make a request: GET στο result_url με την κεφαλίδα Authorization: Bearer <your API key>.
  5. Χρησιμοποίησε το πεδίο result στις επόμενες ενότητές σου.

Πρότυπο, που δεν έχει ακόμα δοκιμαστεί σε πραγματική εγκατάσταση n8n ή Make – δοκίμασε τον έλεγχο της υπογραφής πριν το χρησιμοποιήσεις.

Συνταγές: αλυσίδα εργαλείων

Μια συνταγή εκτελεί 2 έως 4 εργαλεία το ένα μετά το άλλο ως μία εργασία. Στείλε "recipe" αντί για "tool": είτε το όνομα μιας έτοιμης συνταγής είτε μια λίστα βημάτων. Το κείμενο πηγαίνει στο πρώτο βήμα· το αποτέλεσμα κάθε βήματος είναι το κείμενο για το επόμενο βήμα. Το GET /api/v1/recipes απαριθμεί τις έτοιμες συνταγές, τα εργαλεία που μπορείς να χρησιμοποιήσεις και το πεδίο που περνά κάθε εργαλείο παρακάτω.

curl -X POST https://do4u.eu/api/v1/jobs \
  -H "Authorization: Bearer d4u_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"recipe": [{"tool": "summarize", "options": {"length": "short"}},
               {"tool": "translate", "options": {"target": "pl"}}], "text": "..."}'
curl -X POST https://do4u.eu/api/v1/jobs \
  -H "Authorization: Bearer d4u_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"recipe": "summary_translate_meta", "options": {"target": "pl"}, "text": "..."}'

Παίρνεις μία εκτίμηση για όλα τα βήματα (credits_estimate). Αυτό το ποσό δεσμεύεται στην αρχή. Μετά από κάθε βήμα καταγράφεται η πραγματική χρήση και το υπόλοιπο μένει δεσμευμένο μέχρι το τέλος, και τότε απελευθερώνεται. Ένα βήμα που αποτυγχάνει δεν κοστίζει τίποτα, τα υπόλοιπα βήματα παραλείπονται και τα βήματα που είχαν ήδη ολοκληρωθεί χρεώνονται.

HTTP/1.1 202 Accepted
{"id": "3c9e0d1a...", "tool": "recipe", "recipe": null, "status": "queued", "model": "do4u-standard", "credits_estimate": 4,
 "steps": [{"n": 1, "tool": "summarize", "credits_estimate": 2}, {"n": 2, "tool": "translate", "credits_estimate": 2}],
 "links": {"self": "https://do4u.eu/api/v1/jobs/3c9e0d1a..."}}

Το GET /api/v1/jobs/{id} δείχνει κάθε βήμα με την κατάστασή του (pending, queued, running, done, failed, skipped), τις πιστώσεις του, μια ειδοποίηση input_shortened αν το κείμενο έπρεπε να μειωθεί για το επόμενο εργαλείο, και το αποτέλεσμα κάθε βήματος μόλις τελειώσει η συνταγή. Με το no_store τα αποτελέσματα εμφανίζονται μία φορά. Το callback_url ενεργοποιείται μία φορά, στο τέλος της συνταγής.

GET https://do4u.eu/api/v1/jobs/3c9e0d1a...

{"id": "3c9e0d1a...", "tool": "recipe", "status": "done", "credits_estimate": 4, "credits": 3, "steps_total": 2,
 "steps": [{"n": 1, "tool": "summarize", "status": "done", "credits": 1, "result": {"summary": "...", "key_points": ["..."]}},
           {"n": 2, "tool": "translate", "status": "done", "credits": 2, "notices": ["input_shortened"], "result": {"translation": "...", "notes": []}}],
 "result": {"translation": "...", "notes": []}}

GET https://do4u.eu/api/v1/recipes

Errors

Errors always have the same form: {"error": {"code": "...", "message": "..."}}. With 429 and 503 the header Retry-After says how many seconds to wait.

CodeHTTPMeaning
missing_key401No API key sent.
invalid_key401Key unknown or revoked.
rate_limited429Too many requests in this minute.
invalid_json400Body is not a JSON object.
unknown_tool400No tool with this name.
invalid_option400Unknown option or value.
invalid_field400A field has the wrong type.
invalid_language400language is not en, de or pl.
empty_input400No text or URL.
text_b_required400compare needs text and text_b.
input_too_long400Input longer than your limit.
input_too_large400Input too large for one job: shorten it or split it into several jobs.
invalid_url400URL not allowed or not readable.
invalid_image400Image missing, wrong format or too large.
payload_too_large413Request body larger than 8 MB.
insufficient_credits402Not enough credits.
email_not_verified402Confirm your email address first.
daily_limit429Free daily limit used up (website_check scope short).
too_many_open_jobs429Too many open jobs in your account.
package_required403The tool needs a purchased package.
busy503The queue is full, try again shortly.
tool_unavailable503The tool is not available right now.
not_found404Unknown endpoint or job.
method_not_allowed405Wrong HTTP method.
internal_error500Error on our side.
invalid_idempotency_key400Idempotency-Key is empty, too long or has characters that are not printable ASCII.
idempotency_conflict422This Idempotency-Key was already used with a different request.
idempotency_in_progress409A request with this Idempotency-Key is still running. Wait a moment (Retry-After).
idempotency_unavailable503Idempotency-Key cannot be used right now. Try again later.
same_language400The text already is in the target language (translate tools). Send allow_same_language: true to translate anyway.

Limits

Credits

A new job shows an estimate (credits_estimate); charged is the actual use (credits). Failed jobs cost nothing. Free credits are used first.

Data

Inputs and results are stored for 7 days (Free) or 30 days (paid packages), then deleted. Images are deleted right after processing. Results are AI-generated: please check them before you use them.

Απάντησε σε email χωρίς να αλλάξεις τα εισερχόμενά σου

Το Do4U δεν διαχειρίζεται εισερχόμενα και δεν αποθηκεύει ποτέ στοιχεία πρόσβασης για το γραμματοκιβώτιό σου. Δύο τρόποι για να πάρεις παρ' όλα αυτά προσχέδια απαντήσεων:

S1 – Πρότυπο για n8n ή Make

  1. Έναρξη: ένα νέο email στο γραμματοκιβώτιό σου (IMAP trigger στο n8n ή στο Make – τα στοιχεία πρόσβασης μένουν εκεί)
  2. POST /api/v1/jobs με εργαλείο support_reply, το κείμενο του email και no_store: true
  3. Περίμενε λίγα δευτερόλεπτα και πάρε το GET /api/v1/jobs/{id} μέχρι η κατάσταση να γίνει done
  4. Δημιούργησε ένα προσχέδιο στο γραμματοκιβώτιό σου με το κείμενο από το result.reply (ενότητα Gmail ή Outlook)

Λήψη του προτύπου n8n (JSON)

Στο Make, φτιάξε το ίδιο σενάριο από τις ενότητες Email (watch emails), HTTP (make a request), Sleep και Gmail ή Outlook (create a draft).

Επεκτάσεις για προγραμματιστές και πρόσθετα καταστημάτων

Εξαγωγή του ZIP και ανάγνωση του οδηγού που περιλαμβάνεται. Φόρτωσε την επέκταση του browser τοπικά· έλεγξε τα πρόσθετα καταστημάτων πρώτα σε δοκιμαστικό κατάστημα. Απαιτείται δικό σου κλειδί Dev API. Το Shopware παρέχει προς το παρόν CLI.