Your Key and Agents
Two calls tell an integration, or an AI assistant, what it can do before it does anything: GET /v1/me describes the key you hold, and GET /v1/agents lists the agents it can act on. Every agent endpoint takes an agent's id from that list as its agentId.
How do I check that my key works?
Call GET /v1/me. It describes the key you hold, its organization and its rate limit; every field is in the Describe the calling key reference.
curl https://api.mojeeb.app/v1/me \
-H "Authorization: Bearer mk_live_YOUR_KEY_HERE"
Any valid key can call it, whatever its scopes, so it is the first call to make with a new key. A 401 with code invalid_api_key means the key is missing, wrong, revoked or expired. A 401 with code internal_server_error means Mojeeb couldn't check the key: retry with backoff, and don't rotate it. See Authentication. The key itself never comes back: the response shows only the fragments of it that the API Keys page shows, so you can tell your keys apart.
How do I find an agent's ID?
Call GET /v1/agents. It lists the agents your key can act on, newest first.
curl https://api.mojeeb.app/v1/agents \
-H "Authorization: Bearer mk_live_YOUR_KEY_HERE"
Use an agent's id as the agentId of every agent endpoint, for example /v1/agents/{agentId}/leads. The same id is the agent_id the WhatsApp send endpoints take in the body. See the List agents reference and the Get an agent reference. Getting one agent also returns its settings; see Agent Settings.
You can also copy agent IDs from Your agent IDs on the API Keys page of the dashboard.
Common questions
Why is an agent missing from the list?
The key is limited to some agents, the agent was deleted, or it belongs to another organization. A key limited to some agents lists only those, and GET /v1/me shows its agent list as agent_ids; null there means every agent in your organization, including agents added later. A key reaches only the organization shown as organization on GET /v1/me. Deleted agents are never listed.
Is agent_ids on /v1/me the same as the agent list?
No. agent_ids is the key's setting as stored, so it can still name an agent that was deleted since. GET /v1/agents is the live answer: the agents the key can act on now.
Does /v1/me need a scope?
No. Its reference page shows x-scope: none: any valid key may call it, because it returns only the key's own details and your organization's id and name. Listing and reading agents needs agents:read, and changing their settings agents:write; every key holds both today.
Can I read or change an agent's instructions through the API?
Yes. GET /v1/agents/{agentId} returns an agent with its Main Instructions, time zone and AI handoff, and PATCH /v1/agents/{agentId} changes them; see Agent Settings. The list from GET /v1/agents keeps only basic details. Channel switches and follow-up settings have their own endpoints; see Channels and Follow-ups.
Why is there no agent status?
The status stored on an agent, draft or active, doesn't change how it works today, so the API doesn't show it, and a key can't change it: sending status in PATCH /v1/agents/{agentId} returns 422 field_not_writable. Deleted agents are never listed, and getting one with GET /v1/agents/{agentId} returns 404 agent_not_found.