Mine sisu juurde

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_commentKontrolli kommentaare rämpsposti suhtes text – classification, reason, suggestion, action, note tavaliselt 1–3 krediiti
document_htmlMuuda dokumendid HTML-iks 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 tavaliselt 2–3 krediiti
image_textLeia pilti sulandatud tekst 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 tavaliselt 2–3 krediiti
pdf_accessibilityKontrolli PDF-i ligipääsetavust pdf – checks, pages, truncated, repaired, note, convert_url tavaliselt 1–2 krediiti
summarizeKokkuvõte text, url length: medium | short | long summary, key_points tavaliselt 1–3 krediiti
compareVõrdlus text, text_b focus: overall | facts | tone | seo summary, similarities, differences tavaliselt 1–3 krediiti
support_replyKlienditoe vastus text, faq tone: friendly | neutral | formal reply, concerns, questions tavaliselt 1–3 krediiti
alt_textAlt-tekstid 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 tavaliselt 2–3 krediiti
rewriteÜmbersõnastus 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 tavaliselt 1–4 krediiti
accessibility_checkLigipääsetavuse kontroll url, html – summary, page, counts, findings, checks, readability, note fixed 3 credits per task
seo_metaSEO pealkiri ja kirjeldus 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_htmlHTML-i tõlge 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 tavaliselt 1–4 krediiti
product_descriptionTootekirjeldused 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 tavaliselt 1–3 krediiti
headlinesPealkirjad ja teemaread 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_schemaKKK ja skeemimärgistus 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_briefSisu lähteülesanne 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 tavaliselt 1–2 krediiti
review_replyVastused arvustustele 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 tavaliselt 1–2 krediiti
social_postsSotsiaalmeedia postitused artiklist 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 tavaliselt 1–3 krediiti
explain_termsSelgita termineid 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 tavaliselt 1–3 krediiti
extract_dataAndmete väljavõtmine 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 tavaliselt 1–3 krediiti
redirect_planÜmbersuunamiste plaan 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 tavaliselt 1–3 krediiti
contrast_checkVärvikontrasti kontroll colors level: aa | aaatext_size: normal | large colors, pairs, counts, invalid, settings, palette_check, legend, language, note tavaliselt 1–2 krediiti
language_levelKeeletase (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 tavaliselt 1–4 krediiti
llms_txtllms.txt generaator 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 tavaliselt 1–3 krediiti
internal_linksSisemised lingid text, pages, sitemap_url, page_url – links, text, text_is_html, counts, pages, dropped, ai, limits, language, detected_language, timeout, notes, note tavaliselt 1–3 krediiti
outdated_contentAegunud sisu 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 tavaliselt 1–3 krediiti
inclusive_languageKaasav ja lihtne keel 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 tavaliselt 1–3 krediiti
review_analysisArvustuste analüüs 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 tavaliselt 1–3 krediiti
ai_visibility_checkTI-nähtavuse kontroll 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 tavaliselt 1–3 krediiti
events_calendarSündmused kalendrisse 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 tavaliselt 1–3 krediiti
product_photoTootefotost tekst 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 tavaliselt 2–3 krediiti
chart_descriptionKirjelda diagramme ja infograafikat 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 tavaliselt 2–3 krediiti
design_feedbackDisainitagasiside ekraanipildist 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 tavaliselt 2–3 krediiti
job_ad_checkTöökuulutuse kontroll 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 tavaliselt 1–3 krediiti
green_claims_checkKeskkonnaväidete kontroll 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 tavaliselt 1–3 krediiti
third_party_scanKolmandate osapoolte kontroll url, html – url, host, page_from, static_only, counts, consent, groups, cookies, legend, notes, check, note, truncated, checked_at tavaliselt 1–2 krediiti
broken_link_checkKatkiste linkide kontroll 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 tavaliselt 1–2 krediiti
duplicate_content_checkDubleeritud sisu kontroll url, text – language, mode, url, host, summary, counts, findings, passed, hints, thresholds, pages, limits, note, truncated tavaliselt 1–2 krediiti
hreflang_checkhreflang-kontroll url – language, url, counts, findings, pages, matrix, annotations, legend, limits, note tavaliselt 1–2 krediiti
ai_robots_txtTI-roomikud failis 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 tavaliselt 1–2 krediiti
faq_from_supportKKK klienditoe sõnumitest 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 tavaliselt 1–3 krediiti
price_display_checkHinnateabe kontroll 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 tavaliselt 1–3 krediiti
form_text_checkVormitekstid 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 tavaliselt 1–3 krediiti
newsletter_checkUudiskirja kontroll 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 tavaliselt 1–3 krediiti
privacy_policy_matchPrivaatsuspoliitika kontroll 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 tavaliselt 1–3 krediiti
social_card_checkJagamiskaardi kontroll url – language, url, counts, preview, findings, tags, images, snippet, guidance, limits, note tavaliselt 1–2 krediiti
image_performance_checkPiltide kontroll url – language, url, counts, total, formats, lcp, page_findings, summary, images, more_images, legend, limits, note, truncated tavaliselt 1–2 krediiti
ai_transparency_checkTI läbipaistvuse kontroll 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 tavaliselt 1–3 krediiti
structured_data_checkStruktureeritud andmete kontroll url, html – language, url, input, counts, formats, findings, items, rules, visible, limits, truncated, note tavaliselt 1–2 krediiti
legal_notice_checkImpressumi kontroll 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 tavaliselt 1–3 krediiti
glossary_builderKoosta sõnastik 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 tavaliselt 1–3 krediiti
local_business_checkEttevõtte andmete kontroll 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 tavaliselt 1–2 krediiti
consent_preload_checkKas midagi laaditakse enne nõusolekut? url – url, final_url, host, loaded, counts, timing, consent, groups, cookies, storage, notes, check, law, note, truncated, checked_at tavaliselt 1–2 krediiti
ai_literacy_policyTI-pädevuse kord (tehisintellekti määrus, art. 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 tavaliselt 1–2 krediiti
withdrawal_button_checkTaganemisnupu kontroll 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 tavaliselt 1–3 krediiti
product_safety_checkTootelehe kontroll (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 tavaliselt 1–3 krediiti
website_checkVeebisaidi kontroll url scope: short | full score, categories, findings, counts, snippet, llms_txt, summary, actions, note fixed 5 credits per task
translateTõlge 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 tavaliselt 1–4 krediiti
proofreadKeelekorrektuur 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 tavaliselt 1–4 krediiti
translate_fileKeelefailid 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 tavaliselt 5–8 krediiti

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.

Webhookid

Lisa päringule POST /api/v1/jobs väli "callback_url" ja Do4U saadab allkirjastatud POST-päringu (sündmus job.finished koos oleku, krediitide ja tulemuse lingiga – mitte tulemuse endaga) kohe, kui töö on valmis. Ainult avalikud aadressid pordil 80 või 443; proovime uuesti kuni 6 korda üha pikenevate pausidega.

Näide: loo töö väljaga callback_url – ja päring, mille Do4U sellele aadressile saadab, kui töö on valmis:

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..."}

Kontrolli päist X-Do4U-Signature: t=<time>,v1=<hex>, kus v1 = HMAC-SHA256(secret, "<time>.<raw body>"). Lükka vanad ajad tagasi (nt vanemad kui 5 minutit). Sinu saladus algab eesliitega whsec_ ja seda näidatakse lehel API-võtmed.

// 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

Kui konto krediidisaldo langeb alla läve, saadab Do4U konto webhooki aadressile ühe allkirjastatud POST-päringu. Sündmus ei sisalda isikuandmeid, ainult saldot, läve ja aega (UTC). Järgmine tuleb alles pärast seda, kui krediite on uuesti lisatud (ost, igakuised tasuta krediidid või kinkekood). Allkiri ja saladus on samad mis sündmuse job.finished puhul.

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"}

Aadressi ja läve määrad siin: API-võtmed

n8n

Valmis töövoog: webhook võtab Do4U kõne vastu, kontrollib allkirja, toob tulemuse ja annab selle sinu järgmisele sammule.

Laadi alla n8n mall (JSON)

Mall, mida pole veel päris n8n- ega Make-keskkonnas testitud – palun testi allkirja kontrolli enne kasutamist.

n8n-is: Workflows → Import from file. Seejärel sisesta oma saladus sõlme "Check signature" ja oma API-võti sõlme "Do4U: get result", aktiveeri töövoog ja kasuta väljana callback_url webhooki tootmis-URL-i. Isehostitud n8n vajab allkirja kontrolliks keskkonnamuutujat NODE_FUNCTION_ALLOW_BUILTIN=crypto.

Make

  1. Lisa päästikuks moodul Webhooks → Custom webhook ja lülita selle täpsemates seadetes sisse "JSON pass-through" ja "Get request headers".
  2. Kasuta selle webhooki aadressi väljana callback_url.
  3. Kontrolli allkirja: võrdle päises X-Do4U-Signature olevat väärtust v1 väärtusega sha256(t + "." + raw body; hex; sinu saladus).
  4. Lisa HTTP → Make a request: GET aadressile result_url päisega Authorization: Bearer <your API key>.
  5. Kasuta välja result oma järgmistes moodulites.

Mall, mida pole veel päris n8n- ega Make-keskkonnas testitud – palun testi allkirja kontrolli enne kasutamist.

Retseptid: tööriistade ahelad

Retsept käivitab 2–4 tööriista üksteise järel ühe tööna. Saada "tool" asemel "recipe": kas valmisretsepti nimi või sammude loend. Tekst läheb esimesse sammu; iga sammu tulemus on järgmise sammu tekst. GET /api/v1/recipes loetleb valmisretseptid, kasutatavad tööriistad ja välja, mille iga tööriist edasi annab.

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": "..."}'

Saad kõigi sammude kohta ühe hinnangu (credits_estimate). See summa broneeritakse alguses. Pärast iga sammu kirjendatakse tegelik kasutus ja ülejäänu jääb lõpuni broneerituks, seejärel see vabastatakse. Ebaõnnestunud samm ei maksa midagi, ülejäänud sammud jäetakse vahele ja juba valmis sammude eest võetakse tasu.

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} näitab iga sammu koos selle olekuga (pending, queued, running, done, failed, skipped), krediitidega, teatega input_shortened, kui teksti tuli järgmise tööriista jaoks lühendada, ning iga sammu tulemusega, kui retsept on lõppenud. Valikuga no_store näidatakse tulemusi üks kord. callback_url käivitub ühe korra, retsepti lõpus.

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.

Vasta e-kirjadele ilma postkasti vahetamata

Do4U ei halda postkasti ega salvesta kunagi sinu postkasti ligipääsuandmeid. Kaks võimalust vastuste mustandeid siiski saada:

S1 – mall n8n või Make jaoks

  1. Päästik: uus e-kiri sinu postkastis (IMAP-päästik n8n-is või Make'is – ligipääsuandmed jäävad sinna)
  2. POST /api/v1/jobs tööriistaga support_reply, e-kirja tekstiga ja väärtusega no_store: true
  3. Oota mõni sekund ja too GET /api/v1/jobs/{id}, kuni olek on done
  4. Loo oma postkasti mustand tekstiga väljast result.reply (Gmaili või Outlooki moodul)

Laadi alla n8n mall (JSON)

Make'is ehita sama stsenaarium moodulitest Email (watch emails), HTTP (make a request), Sleep ja Gmail või Outlook (create a draft).

Arendajalaiendused ja e-poe pluginad

Paki ZIP lahti ja loe kaasasolevat juhendit. Laadi brauserilaiendus kohalikult; kontrolli e-poe pluginaid esmalt testpoes. Vajalik on sinu enda Dev API-võti. Shopware pakub praegu CLI-d.