Docs

Start here

Who this key belongs to

GET/v1/meon https://api.auray.ai/v1

Who this key belongs to

#Authentication

Authorization: Bearer auray_sk_… — Any key. The read bucket paces it.

#Example request

curl https://api.auray.ai/v1/me \
  -H "Authorization: Bearer $AURAY_API_KEY"

#Responses

#200 OK

OK

FieldTypeRequiredDefaultDescription
objectstringno—One of "account".
idstringno—
planstringno—The plan this account holds: one of the four built-in plans, or a plan created on one of them. base names which built-in plan its limits come from.
basestringno—Which of the four built-in plans the rate limits and generator limits come from. Equal to plan for those four. One of "free", "pro", "max", "ultimate".
creditsobjectno—
credits.balanceintegerno—Null when this account has no wallet row yet — it has never been granted credits. A read that FAILS is a 500 rather than a null, so null is a fact about the account and not about us. 0 means the row exists and currently holds nothing, which includes an account whose plan grants no monthly allowance, whose row is created holding it — so 0 does not by itself mean credits were spent. GET /usage coalesces the same value and never answers null. May be null.
credits.plan_creditsintegerno—The part of balance the plan granted — what the grant's ceiling measures. Null beside a null balance. May be null.
credits.purchased_creditsintegerno—The part of balance bought in credit packs. Spent last, and outside the grant's ceiling. May be null.
credits.granted_creditsintegerno—The part of balance a promotion or our team gave. Spent after the plan's credits and before bought ones. May be null.
credits.monthly_allowanceintegerno—
credits.periodstringno—
promotionobjectno—The promotion seat this account holds, or null. The limits and credits.monthly_allowance already include what it lifts; this says where they came from. A place in an offer on Free is taken when the account uses Auray on Free with a confirmed email address — a credits read, a submit, a chat turn — never by an invoice. May be null.
promotion.codestringyes—The offer's code.
promotion.unlimitedbooleanyes—Whether the seat waives charges now: jobs on the products in waives are not charged while it holds, the offer's budget lasts and this seat's own cap has room. False for a seat past any of them, which still lifts and is charged for every job.
promotion.waivesstring[]yes—The products whose jobs the seat waives. Catalogue models are not waived unless an offer names them.
promotion.waives_modelsobjectyes—The models the seat waives by name beside the products in waives, by product: catalogue slugs (external), chat slots (chat, code), the embedding model (embeddings), or one of our own four under its own product (photo, music, video, threed) by its catalogue address, such as krea2 under photo; e.g. {"external": ["auray-serverless-bytedance-seedance-2-0"]}. A job on one of these models is waived while unlimited is true; every other model of the product is charged. An explicit list: a model added to the catalogue later is not waived unless the offer is changed to name it. On code, a model covers the agent’s turns on it and not a machine’s time, which only a code entry in waives covers. {} for an offer that waives whole products only.
promotion.model_namesobjectyes—The name a customer reads for each slug in waives_models, e.g. {"auray-serverless-bytedance-seedance-2-0": "ByteDance Seedance 2.0"}. A slug this build does not know is absent.
promotion.liftsobjectyes—The plan figures the seat raises, by key, e.g. {"music.enabled": true, "video.max_concurrent": 3}.
promotion.expires_atstringyes—When the seat stops giving. For an offer with a set term, the end of that term, counted from the paid invoice that took the seat: the end of the last of its billing periods (the invoice's own period is the first), its number of days after the invoice, or the end of the calendar month (UTC) the invoice was paid in. For an offer whose seat holds with the subscription, null while the offer runs; once it closes, the end of the holder's billing period, a month after the close at most. A place on Free counts in UTC calendar months from the one it was taken in — the end of the last of them, its number of days after it was taken, or null while it holds with the account on Free and the offer runs; once that offer closes, the end of the UTC month it closed in. May be null.
promotion.statestringyes—closed when the offer takes no new seats and this one runs out its term. One of "live", "closed".
promotion.budget_spentbooleanyes—True when the offer waives charges and this seat no longer does, because the offer's shared budget, its money budget or this seat's own cap has run out: unlimited is false, the seat still lifts, and every job is charged.
promotion.catalogue_spentbooleanyes—True when the offer waives catalogue models and this seat has had its month of them waived: a seat's catalogue jobs are waived only up to a bound in credits each UTC calendar month, which the offer's terms name, and past it they are charged to the end of the month while unlimited stays true for everything else the seat waives. False for a seat whose offer leaves the catalogue charged.
passesobject[]no—Every pass this account holds, or held in the last seven days: one entry per pass, [] when none. A pass is unlimited use of one model, one job at a time, without spending credits, for a day or a week from payment — where it works and which jobs it covers chosen per pass. A job it covers costs nothing: the submit's answer on queue.auray.run and GET /v1/jobs/{id} say so in coverage, while a run on auray.run answers the job's output alone. A read that fails is 500 profile_read_failed, never [].
passes[].objectstringyes—One of "pass".
passes[].idstringyes—The purchase or gift this entry describes: the one in force, else the next, else the latest that ended.
passes[].passstringyes—The pass, e.g. seedance-2-5: the same on every purchase of it, and what a job's coverage.pass names.
passes[].productstringyes—What its jobs are: one of ours (photo, video, music, threed), a chat slot (chat) or a catalogue model (external). One of "photo", "video", "music", "threed", "chat", "external".
passes[].modelstringyes—The model it covers: the address you run it at, as GET /v1/models names it — e.g. auray-serverless/bytedance/seedance-2-5 — or a chat slot, e.g. deepseek-v4-1-flash.
passes[].namestringyes—The model's name, as the pass is sold.
passes[].statestringyes—live: in force now. next: bought to start when the one before it ends. paused: in force, with its model paused — the paused time is added back when the model returns. ended: over, at its time or for ended_why. One of "live", "next", "paused", "ended".
passes[].durationstringyes—What was bought: a day (24 hours) or a week (7 × 24 hours) from payment; hours for a pass we gave, or the time a dispute decided in your favour gave back. One of "day", "week", "hours".
passes[].started_atstringyes—
passes[].ends_atstringyes—When this purchase ends. It moves later when paused time is added back.
passes[].untilstringyes—When everything bought of this pass ends: later than ends_at when it was bought again before it ended.
passes[].doorsstring[]yes—Where its jobs are covered: desktop (the Auray app), api (a secret key) and mcp (the MCP server). A job sent another way is treated as if you held no pass.
passes[].coversobjectyes—Which jobs it covers, as rules on what a job is made of: {} covers every job; a field with {"in": [...]} covers those values only — e.g. {"resolution": {"in": ["480p", "720p"]}} — and one with {"max": n} up to that figure. A job a rule leaves out, or one that does not say the fact a rule names, is treated as if you held no pass.
passes[].covers_linesstring[]yes—The same rules in words, one line each, e.g. ["480p and 720p"]; [] when it covers every job.
passes[].runningbooleanyes—Whether a job it covers is running now. A pass runs one job at a time: another one sent through the API or MCP meanwhile is refused 429 pass_busy and charged nothing; the app queues it behind the running one.
passes[].sourcestringyes—Bought, or given by us. One of "purchase", "gift".
passes[].ended_whystringyes—Why it ended before its time: a refund of its payment, in full or in part (refund), a dispute of it (dispute), the account's deletion, ended by us (operator), its model withdrawn (model_retired), or its model unusable for seven days (model_unusable) — the last two with what was paid for the time left refunded. Null while it runs, and when it ended at its time. One of "refund", "dispute", "account_deleted", "operator", "model_retired", "model_unusable", null. May be null.
passes[].runs_on_planbooleanyes—Whether the account's plan runs this pass's jobs. Always true for a catalogue model's pass, which runs its model on any plan, Free included. False for a pass of Photos, Video, Music, 3D or chat on a plan that does not include it: its jobs are refused until the plan does, while its time runs.
campaignsobject[]no—The credit campaigns this account is receiving or received — credits granted to an account whose email address is confirmed, one account per inbox, once or in each calendar month the account uses Auray for a number of months counted from its first claim, into the granted part of the balance, where they are spent after the plan's credits and before bought ones and expire on their own dates — and each live campaign with a place left that it would receive if its email address is confirmed. Null when the read failed; an empty list is none. May be null.
campaigns[].codestringno—The campaign's code, our label.
campaigns[].kindstringno—One of "once", "monthly".
campaigns[].creditsintegerno—Credits one claim grants.
campaigns[].monthsintegerno—How many calendar months a monthly campaign runs, counted from this account's first claim; a month in which the account does not use Auray is not paid and still counts. Null for once. May be null.
campaigns[].receivedintegerno—Claims this account has been paid.
campaigns[].credits_receivedintegerno—
campaigns[].last_received_atstringno—May be null.
campaigns[].credits_leftintegerno—How many of the credits this campaign granted are still unspent. Spending takes the granted credits that expire first; 0 when nothing it granted is left.
campaigns[].expires_atstringno—The soonest date on which credits this campaign granted and still unspent expire; null when none is left. May be null.
campaigns[].ends_atstringno—When the campaign stops paying anybody; null for no set end. May be null.
campaigns[].runs_untilstringno—The last calendar month (UTC, YYYY-MM) a monthly run this account has started can pay: the month of its first claim plus months − 1, or the month the campaign ends in, if sooner — nothing is paid after ends_at. Null for a once campaign and for one this account has not claimed yet. May be null.
campaigns[].statusstringno—receiving: a monthly campaign that will pay this account a further month — a month of its run is left, its caps have room, the account is on a plan the campaign is for and its email address is confirmed. received: nothing more will be paid to this account. waiting_for_address: it would pay this account if its email address is confirmed — a campaign with a place left, before ends_at, or a monthly one this account started whose address has since changed without being confirmed (received above 0). One of "receiving", "received", "waiting_for_address".
address_provedbooleanno—Whether this account's email address is confirmed — from a link we mailed, by a sign-in provider that verified it, by our support team, or as an account that was active before confirmation was required. Free's monthly credits and every campaign wait for it, and are never paid to an address at a blocked or throwaway email domain, confirmed or not. Null when the read failed. May be null.
keyobjectno—
key.idstringno—The public 12 characters.
key.scopesstring[]no—
key.credit_ceilingintegerno—0 means no per-key cap.
key.credits_spent_periodintegerno—

Headers:

HeaderDescription
RateLimit-LimitBurst capacity.
RateLimit-Remaining
RateLimit-ResetSeconds until refill.
X-RateLimit-Limit
X-RateLimit-Remaining
X-RateLimit-ResetUnix seconds. The X- spelling is what client libraries read.
X-Request-Id

#401 Unauthorized

#403 Forbidden

browser_origin_refused — the request carried an Origin header. Every route on this surface answers this before it reads the key; /usage already documented it and this did not.

The error body: error, message, docs (the entry that explains it) and request_id.

#429 Too Many Requests

#500 Internal Server Error

profile_read_failed — your account could not be read. Reported rather than guessed: this route used to answer 200 with balance: null, which is also what it answers for an account that has never been granted credits.

The error body: error, message, docs (the entry that explains it) and request_id.

#503 Service Unavailable

#Status codes

StatusMeaning
200OK
401Unauthorized
403browser_origin_refused — the request carried an Origin header.
429Too Many Requests
500profile_read_failed — your account could not be read.
503Service Unavailable

Every refusal names its code, and every code is explained at Errors.

Start typing to search every page of the documentation.

Up arrow Down arrow to moveEnter to openEscape to close